群晖Synology使用frp内网穿透获取访问者真实IP
前言
由于使用openwrt中Frp内网穿透Nas地址后,通过登陆log日志都是路由器的ip,无法封锁真实用户ip.
本文解决此问题,且针对黑群晖未洗白而言的
开启Proxy-Protocol
开启openwrt中Frp对应内网ip里面Proxy-Protocol.

修改real_ip_header
ssh连上群晖
1  | cd /usr/syno/share/nginx  | 
找到 real_ip_header X-Forwarded-For; 

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

修改DSM.mustache
1  | sudo -i #切换为root用户  | 
第1个server段里就是群辉默认5000端口的配置,在default_server后面加上proxy_protocol

第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  | #real_ip_header X-Forwarded-For;  | 
修改DSM.mustache,删除第一个server块中刚刚加的proxy_protocol,在listen下面增加

1  | real_ip_header X-Forwarded-For;  | 
同理,在第四个server块的listen下面增加以下内容
1  | real_ip_header proxy_protocol;  | 
然后重启Nginx即可.