iptables -A 输入 -i tun0 -p tcp --dport 25

iptables -A 输入 -i tun0 -p tcp --dport 25

所以我有一个 VPS 和 Dedi 服务器,都运行 Debian 9.9。

139.99.x.x: VPS
139.89.x.x: DEDI

Dedi 服务器运行游戏服务器但不能直接访问,我想首先通过我的 VPS 路由所有流量(obv 以掩盖游戏服务器的 IP)。

我想使用 GRE 隧道来实现这一点。因此,我在 dedi 上执行了以下操作:

ip tunnel add gre1 mode gre remote 139.99.x.x local 139.89.x.x ttl 255
ip link set gre1 up
ip addr add 10.10.10.1/24 dev gre1

在 VPS 上:

ip tunnel add gre1 mode gre remote 139.89.x.x local 139.99.x.x ttl 255
ip link set gre1 up
ip addr add 10.10.10.2/24 dev gre1

这有效,我可以双向 ping。我还在 sysctl.conf 中启用了 ip 转发。

现在我想让到达 139.99.xx:27015 的 VPS 的外部流量通过隧道并到达 DEDI 上的 10.10.0.1:27015。

所以我的尝试是这样的,这是我从这里的另一个问题中得到的,在 VPS 上:

iptables -t nat -A PREROUTING -p tcp -m tcp -m multiport -d 139.99.x.x --dports 27015 -j DNAT --to-destination 10.10.10.1
iptables -t nat -A POSTROUTING -o gre1 -p tcp -m tcp -m multiport -d 10.10.10.1 --dports 27015 -j SNAT --to-source 10.10.10.2

有人能给我提供一个可行的示例吗?

谢谢!

答案1

您的设置正确,一切正常。遇到任何问题,您都应使用以下步骤来解决问题:

  1. 使用命令检查 nat 表中的 iptables 规则计数器iptables-save -c -t nat。规则的计数器应为非零。如果 nat 表中还有其他规则,则规则的顺序很重要。

  2. 如果计数器为零,请运行tcpdump以确保有传入流量。

  3. 另外,您应该在防火墙中允许转发数据包。执行此操作的通用规则是:iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED,DNAT -j ACCEPT

  4. 在 DEDI 服务器上运行 tcpdump(tcpdump -ni gre1)以确保有来自 VPS 的重定向数据包。

  5. 在 VPS 上您应该允许传入数据包:iptables -A INPUT -i gre1 -p tcp --dport 27015

附言确保您的游戏服务器使用 tcp。大多数游戏使用 udp,因为它最适合游戏。

答案2

我遇到了同样的问题。我可以在隧道位置之间 ping 通,端口显示为打开状态。我仍然无法接受从互联网到隧道服务器的入站流量。当我尝试从我的个人计算机 ping IP 时,tcpdump -i tun0 没有显示任何流量。我尝试添加任意数量的 iptables 和防火墙规则,但无济于事。任何帮助都是好主意。

这是我刚刚添加的 IP 表规则:

iptables -A 输入 -i tun0 -p tcp --dport 25

并且端口 25 没有来自外部源的响应:主机已启动。

港口国服务 25/tcp 过滤 smtp

相关内容