内网穿透工具是nps,因为nps不支持Proxy Protocol协议,所以还需要haproxy。如果使用frp的话则不需要haproxy,frp原生支持Proxy Protocol协议,理论上不支持Proxy Protocol协议的穿透工具都可以加一级HA来获取真实IP。
我的安排是这样子的,大家可以参考一下
VPS服务器上的443端口,haproxy监听443端口,加上用户真实ip后转发给nps监听的3443端口
内网穿透本地nginx 443端口到VPS上的3443端口,借一张图,大概就这样子,随便看看吧。
安装haproxy
主流的linux发行版的软件仓库都收录了haproxy,只需要一条命令就可以安装haproxy了。
对于ubuntu/debian用下面的命令安装
apt update && apt upgrade && apt install haproxy
对于centos用下面的命令安装
yum install epel-release -ysudo yum update -y && yum install haproxy -y
用下面的命令编辑haproyx的配置文件
vim /etc/haproxy/haproxy.cfg
按“i”键进入编辑模式,在文件的最后面插入下面的内容,要根据的自己的实际情况更改。
listen webhttp # haproxy监听的端口80、443,根据我的端口规划确定的 bind 0.0.0.0:80 mode tcp option forwardfor #haproxy转发给nps监听的443端口 server webhttp1 127.0.0.1:8080 send-proxy check inter 3000 fall 3 rise 5 listen webhttps bind 0.0.0.0:443 mode tcp option forwardfor server webhttps1 127.0.0.1:3443 send-proxy check inter 3000 fall 3 rise 5 #转发我的世界到2556端口 listen minecraft bind *:25565 mode tcp balance leastconn option tcp-check server minecraft1 127.0.0.1:2556 send-proxy
保存配置文件后,运行下面命令启动和重启haproxy
systemctl start haproxy
systemctl restart haproxy
然后运行下面命令检查haproxy是否运行,如果输出下图内容则配置被应用。
systemctl status haproxy
配置nginx,编辑conf文件加入以下内容
server { listen 80 proxy_protocol; #proxy_protocol listen 443 ssl proxy_protocol; #proxy_protocol ......其他代码...... # 开启排除IP功能 real_ip_recursive on; # 排除本地ip set_real_ip_from 192.168.0.0/24; set_real_ip_from 127.0.0.1; #CF 地址https://www.cloudflare-cn.com/ips/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 108.162.192.0/18; set_real_ip_from 190.93.240.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 162.158.0.0/15; set_real_ip_from 104.16.0.0/13; set_real_ip_from 104.24.0.0/14; set_real_ip_from 172.64.0.0/13; set_real_ip_from 131.0.72.0/22; # 真实IP使用proxy_protocol协议 real_ip_header proxy_protocol; #real_ip_header X-Real-IP; ......其他代码...... }
参考:
https://post.smzdm.com/p/a30vrqlk/
https://myth.cx/p/minecraft-haproxy/