无法转发端口

无法转发端口

我有 Ubuntu 18.04.2 和 l2tp vpn 服务器,由脚本安装。我的客户端运行 Windows 7 并连接到此服务器,互联网运行正常,连接安全。我需要从外部 vpn 服务器的 ip 转发 rdp 端口​​。与此客户端的本地连接畅通无阻,但从外部连接则不然。我使用这个:

iptables -t nat -A PREROUTING -i eth0 -d 5.253.xx -p tcp --dport 55658 -j DNAT --to-destination 192.168.42.10:3389

路由器上开放了55658端口

iptables-save 的结果:

*筛选
:输入接受 [731:39193]
:转发接受 [0:0]
:输出接受 [126833:135018308]
-A 输入-p udp -m udp --dport 1701 -m 策略--dir in --pol none -j DROP
-A 输入 -m conntrack --ctstate 无效 -j DROP
-A 输入 -m conntrack --ctstate 相关,已建立 -j 接受
-A 输入-p udp-m 多端口 --dports 500,4500-j 接受
-A 输入-p udp -m udp --dport 1701 -m policy --dir in --pol ipsec -j 接受
-A 输入-p udp-m udp --dport 1701-j DROP
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A 转发 -i eth0 -o ppp+ -m conntrack --ctstate 相关,已建立 -j 接受
-A 转发 -i ppp+ -o eth0 -j 接受
-A 转发 -s 192.168.42.0/24 -d 192.168.42.0/24 -i ppp+ -o ppp+ -j 接受
-A 转发 -d 192.168.43.0/24 -i eth0 -m conntrack --ctstate 相关,已建立 -j 接受
-A 转发 -s 192.168.43.0/24 -o eth0 -j 接受
-A 转发 -j 删除
犯罪

*自然
:预路由接受 [100:6028]
:输入接受 [31:1477]
:输出接受 [13:910]
:后路由接受 [13:910]
-A PREROUTING -d 5.253.xx/32 -i eth0 -p tcp -m tcp --dport 55658 -j DNAT --到目的地 192.168.42.10:3389
-A POSTROUTING -s 192.168.42.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.43.0/24 -o eth0 -m 策略 --dir out --pol none -j MASQUERADE
犯罪

请帮帮我,我被困住了

答案1

这可能没什么,但我从未见过*nat以下内容*filter。您正在遵循什么文档或指南?

下面是一个示例,使用 Minecraft、其端口和附加端口:

*nat
...
-A PREROUTING -i eth0 -p tcp -m multiport --dports 25565,8888 -j DNAT --to-destination 192.168.1.20
...
*filter
...
-A INPUT -i eth0 -p tcp -m multiport --dports 25565,8888 -m state --state NEW,ESTABLISHED -j ACCEPT
...
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
...
-A FORWARD -i eth0 -p tcp -m multiport --dports 25565,8888 -d 192.168.1.20 -j ACCEPT
...

首先,我们允许从此端口到目的地的同一端口进行 PREROUTING。--to-destination 192.168.1.20:NNNN如果您希望调整端口,可以使用。然后,我们必须创建一个过滤器以确保我们不会DROPREJECT这些数据包。我们将其限制为NEW,ESTABLISHED,并制定了允许所有流量的规则RELATED,ESTABLISHED。这会导致允许新的和现有的连接。

我没有看到本地或lo规则。通常,本地流量-j ACCEPT位于链的早期。如果处理不当,您可能会遇到问题lo。请确保您正确加载了这些新规则,并确认规则符合您的意图:

sudo iptables -L

请记住,在加载新表进行测试之前,您可能需要先进行iptables --flush测试。这将防止过时的信息弄乱您的更改,并确保您了解表在重新启动系统时会是什么样子。

相关内容