Google Cloud VM通过OpenVPN将Minecraft流量转发到一个客户端,但不转发给另一个客户端

Google Cloud VM通过OpenVPN将Minecraft流量转发到一个客户端,但不转发给另一个客户端

这个问题有背景信息:如何让 Google Cloud VM 将 Minecraft 流量转发到 OpenVPN 客户端?

我有一个 OpenVPN 网络,目前设置为“tap”模式,以 Google VM 作为服务器,Raspberry Pi 3 客户端运行 Minecraft 服务器。我想通过将 Pi 4 添加为新的 openVPN 客户端来用 Pi 4 替换 Pi 3。

我成功为所有机器设置了 openVPN 配置,并且 Pi 4 可以 ping 云 VM 和其他客户端,反之亦然。

为了从 Pi 3 转移到 Pi 4,我执行了:

# iptables -F
# iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25565 -j DNAT --to-destination 10.8.0.6:25565
# iptables -A FORWARD -p tcp -d 10.8.0.6 --dport 25565 -j ACCEPT
# iptables -A POSTROUTING -t nat -s 10.8.0.6 -o eth0 -j MASQUERADE
# iptables -t nat -A POSTROUTING -d 10.8.0.6 -o tap0 -j MASQUERADE

请注意,Pi 3 的本地 IP 是10.8.0.3,Pi 4 的本地 IP 是10.8.0.6

我使用 保存了设置iptables-save并重新启动。但是,nmap 显示端口 25565 对于虚拟机而言“已关闭”,并且我无法连接 minecraft 客户端。

10.8.0.3当我用而不是重做上述步骤10.8.0.6并使用 Pi 4 的 Pi 3 配置文件时,我能够连接。

以下是输出iptables-save

# Generated by iptables-save v1.6.0 on Sun Dec  1 08:08:18 2019
*filter
:INPUT ACCEPT [269:342903]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [246:49036]
-A FORWARD -d 10.8.0.6/32 -p tcp -m tcp --dport 25565 -j ACCEPT
COMMIT
# Completed on Sun Dec  1 08:08:18 2019
# Generated by iptables-save v1.6.0 on Sun Dec  1 08:08:18 2019
*nat
:PREROUTING ACCEPT [26:6833]
:INPUT ACCEPT [7:482]
:OUTPUT ACCEPT [22:1420]
:POSTROUTING ACCEPT [22:1420]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25565 -j DNAT --to-destination 10.8.0.6:25565
-A POSTROUTING -s 10.8.0.3/32 -o eth0 -j MASQUERADE
-A POSTROUTING -d 10.8.0.3/32 -o tap0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.6/32 -o eth0 -j MASQUERADE
-A POSTROUTING -d 10.8.0.6/32 -o tap0 -j MASQUERADE
COMMIT
# Completed on Sun Dec  1 08:08:18 2019

diff除了私钥和时间戳之外,两个配置文件还包括:

216c216
<                 DNS:rpi4
---
>                 DNS:picraft

答案1

因为您还没有刷新nat表,并且规则的匹配部分DNAT是相同的,所以较早附加的规则 ( --to-destination 10.8.0.3:25565) 将有效,而较晚附加的规则 ( --to-destination 10.8.0.6:25565) 将被忽略。

因此,不仅仅是iptables -F-t filter),还有iptables -F -t nat(或iptables-restore来自/usr/share/iptables/empty-filter.rules/usr/share/iptables/empty-nat.rules)。

相关内容