Frp内网穿透群晖NAS时获取到用户真实IP地址
适用于系统:DSM 6.2.3
前言
我在路由器使用 Frp 内网穿透 NAS 地址后,查看登陆日志全都是路由器的 ip, 这样子不仅无法封锁真实用户 ip,而且当NAS登录接口遭到爆破时系统会自动封锁路由器的ip导致用户自己也无法正常登录。
解决办法
- 内网使用 http 采用
X-Forwarded-For
来获取 ip - 外网使用 https 采用
proxy protocol
来获取真实 ip
- 开启
Proxy-Protocol
,版本V1、V2都可以,我以 OpenWrt 中 Frp 设置为例
- 修改 Nginx配置文件 → nginx.mustache
SSH连上群晖,依次执行以下命令:cd /usr/syno/share/nginx vim nginx.mustache
- 修改 Nginx配置文件 → DSM.mustache
首先,在第一个 server 块的 listen 下面增加如下内容:
real_ip_header X-Forwarded-For; real_ip_recursive on; set_real_ip_from 127.0.0.1;
然后,在第四个 server 块的 listen 下面增加以下内容:
real_ip_header proxy_protocol; real_ip_recursive on; set_real_ip_from 127.0.0.1; # 这里改为 Frp客户端所在设备的ip
- 重启 Nginx 服务
# 重启 nginx synoservicecfg --restart nginx
结语
完成以上修改后,局域网将无法通过 https://ip:port
访问 DSM 桌面,但可以通过 http://ip:port
访问,因为 proxy protocol
实际上是在建立连接前先发送一个带有 realip
等信息的包,如果不通过代理去访问(比如内网使用 https+ip 访问), 就没有这个包,就会报错打不开页面。
Comments 1 条评论
博主 水晶の泪
棒棒哒~(。≧3≦)ノ⌒☆