收藏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 设置为例
![[技术·笔记] Frp穿透群晖NAS时获取用户真实IP插图1 use-frp-to-get-real-ip-in-synology-step-01.png](https://image.grayzhao.com/images/2023/01/31/use-frp-to-get-real-ip-in-synology-step-01.png)
- 修改 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 访问), 就没有这个包,就会报错打不开页面。








![[技术·笔记] Frp穿透群晖NAS时获取用户真实IP插图2 use-frp-to-get-real-ip-in-synology-step-02.png](https://image.grayzhao.com/images/2023/01/31/use-frp-to-get-real-ip-in-synology-step-02.png)
Comments 1 条评论
棒棒哒~(。≧3≦)ノ⌒☆