我有 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
如果您希望调整端口,可以使用。然后,我们必须创建一个过滤器以确保我们不会DROP
或REJECT
这些数据包。我们将其限制为NEW,ESTABLISHED
,并制定了允许所有流量的规则RELATED,ESTABLISHED
。这会导致允许新的和现有的连接。
我没有看到本地或lo
规则。通常,本地流量-j ACCEPT
位于链的早期。如果处理不当,您可能会遇到问题lo
。请确保您正确加载了这些新规则,并确认规则符合您的意图:
sudo iptables -L
请记住,在加载新表进行测试之前,您可能需要先进行iptables --flush
测试。这将防止过时的信息弄乱您的更改,并确保您了解表在重新启动系统时会是什么样子。