前言

由于使用openwrt中Frp内网穿透Nas地址后,通过登陆log日志都是路由器的ip,无法封锁真实用户ip.

本文解决此问题,且针对黑群晖未洗白而言的我洗白了的,哈哈.白群晖可以直接用QuickConnect来远程连接.

开启Proxy-Protocol

开启openwrt中Frp对应内网ip里面Proxy-Protocol.

image-20220812113108948

修改real_ip_header

ssh连上路由器.

1
2
cd /usr/syno/share/nginx
vim nginx.mustache

找到 real_ip_header X-Forwarded-For;

image-20220812120513690

在前面加 # 来注释掉原有的header头,在下面增加一行:

1
real_ip_header            proxy_protocol;

image-20220812120633262

修改DSM.mustache

1
2
sudo -i #切换为root用户
vim DSM.mustache

第1个server段里就是群辉默认5000端口的配置,在default_server后面加上proxy_protocol

image-20220812125823294

第4个server段里就是5001端口配置,在default_server ssl后面同样加上proxy_protocol

重启服务

1
synoservicecfg --restart nginx #重启nginx

以上修改完成后,只能通过frp访问,因为proxy protocol实际上是在建立连接前先发送一个带有realip等信息的包,如果不通过代理去访问(比如内网直接输入ip访问),就没有这个包,就会报错打不开页面.

优化版

内网使用http采用X-Forwarded-For来获取ip

而外网使用https采用proxy protocol来获取真实ip

修改real_ip_header时,将

1
2
3
4
#real_ip_header            X-Forwarded-For;
#real_ip_header proxy_protocol;
#real_ip_recursive on;
#set_real_ip_from 127.0.0.1;

修改DSM.mustache,删除第一个server块中刚刚加的proxy_protocol,在listen下面增加

image-20220812130530361

1
2
3
real_ip_header            X-Forwarded-For;
real_ip_recursive on;
set_real_ip_from 127.0.0.1;

同理,在第四个server块的listen下面增加以下内容

1
2
3
real_ip_header            proxy_protocol;
real_ip_recursive on;
set_real_ip_from 127.0.0.1;

然后重启Nginx即可.