我的场景-
我有两台运行 ubuntu 的服务器,称为 S1 和 S2。 S1 有一个公共 IP 地址,并且运行 openvpn 服务器。 S2 安装了 openvpn 客户端,并连接到 open vpn 服务器。 S1 公共 IP(eth1):47.88.240.xxx,Openvpn IP(tun0):10.8.0.1 和 S2 OpenvpnIP(tun0):10.8.0.2
我有一个游戏服务器在 S2 上的 UDP 端口 28015 上运行。
我将 S2 上的 IP 表更新为 -
0.0.0.0 经由 10.8.0.1
47.88.240.xxx 通过 S2 默认网关
- 我通过在 S1 上使用以下命令将所有互联网流量从 S2 路由到 S1 -
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
我在 S2 浏览互联网时检查了 Whatismyip.com 的 IP 地址,显示为 47.88.240.xxx
我还从S2跟踪了google的dns服务器,第一跳是10.8.0.1,traceroute成功了。
因此,我非常确定来自 S2 的所有互联网流量都通过 S1 传输。
我在 S1 上使用以下命令来转发端口 -
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -d 47.88.240.xxx -p udp --dport 28015 -j DNAT --to-dest 10.8.0.2:28015
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 28015 -j SNAT --to-source 10.8.0.1
使用此方法时,如果我从家用电脑查询游戏服务器(47.88.240.xxx:28015),我可以看到游戏服务器,但几次(可能是5次)后它一段时间没有响应并且一段时间后再次响应。
因此,我用 S2 上解释的方法替换了 SNAT 部分 -https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System
通过这样做,我可以根据需要多次查询游戏服务器,并且它永远不会停止响应。
- 尽管我通过使用两个默认网关方法获得了与游戏服务器的稳定连接,但游戏服务器没有列在游戏的主服务器列表中,但我可以手动连接到游戏服务器。我怀疑从游戏服务器到游戏主服务器的传出流量存在一些问题。要么未发送正确的 IP,要么游戏服务器由于某种原因无法联系主服务器。
知道为什么会发生这种情况吗?