叠个甲

请勿将代理用于非法用途,本文发布到公网的应用仅为国内访问测试使用

前言

最近阿里云卖轻量云2H0.5G,200M带宽只要30一个月,我也跟风买了一台国内的,用来做frp穿透内网服务。

但总所周知,frp是不可以将本地服务的ip也穿透成公网服务器ip的

打个比方,例如求生之路服务器
求生之路的public ip

这里服务器通告的public ip x.x.254.127是我的实际ip而非frp穿透后的公网ip113.44.159.11

ps: 这里故意漏ip了,欢迎大家来玩,connect 113.44.159.11 即可

而且不光是这种问题困扰我,还有使用qb frp穿透端口,甚至很多服务器应用都是靠出口公网ip自动映射的

于是昨晚硬刚了6个多小时解决了长期困扰的问题

解决方案

使用流量全局代理,然后再frp映射端口到服务器

这里借用别人的仓库docker-transparent-proxy

使用tun代理全局流量到socks服务器端口

假设宿主机ip为192.168.10.2,宿主机socks端口为10810

本地与远程通信使用socks5+TLS

出流量拓扑如下

出流量网络拓扑

入流量拓扑如下

入流量网络拓扑

部署过程省略,直接看看效果,在容器内查询主机ip,可以看到主机ip结果为远程ip

主机ip查询

在宿主机查询

宿主机ip查询

可以看到ip是不一样的

顺带一提tun会把出流量全都重定向到远程服务器,服务器流量不多就不要乱玩

而且qb只需要修改libtorrent高级设置,通报公网ip,然后用frp端口映射入流量即可实现同样的逻辑

那么这样大费周章意义在哪呢

  • 相当于docker组了一个nat环境,远程服务器直接作为路由器当端口映射
  • 解决大部分游戏服务器不会通报ip的问题