我有基于 Linux 的路由器(BusyBox)。我可以通过 telnet 登录终端。我想将 wan 端口转发到 ip_external:port
例如:
my wan ip (on my router):77.30.109.251
my wan port (on my router):1188
my external remote ip (on my vps):92.222.75.159
my remote port (on my vps):1180
我只是尝试通过 iptables 将 77.30.109.251:1188 重定向到 92.222.75.159:1180,就这样
我已经尝试过这个命令,但是当我在 ipfingerprints.com/portscan.php ip:77.30.109.251 端口:1188 上测试时,端口仍然显示为已过滤
iptables -t nat -A PREROUTING -i ppp111 -p tcp --dport 1188 -j DNAT --to 92.222.75.159:1180
iptables -t nat -A PREROUTING -p tcp --dport 1180 -j DNAT --to 92.222.75.159:1180
iptables -t nat -A POSTROUTING -p tcp -d 92.222.75.159 --dport 1180 -j MASQUERADE
答案1
要将所有传入的 TCP 流量从接口 ppp111(目标 IP 77.30.109.251 和目标端口 1188)重定向到 IP 92.222.75.159 和端口 1180,使用此 iptables 规则就足够了:
iptables -t nat -A PREROUTING -i ppp111 -d 77.30.109.251 -p tcp --dport 1188 -j DNAT --to 92.222.75.159:1180
您还需要检查是否有一条规则接受从 ppp111 转发到外部接口,以及内核中是否启用了转发:
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
1
表示已打开。如果您看到,= 0
则可以执行此操作sysctl -w net.ipv4.ip_forward=1
。
如果您想伪装流量,请使用-o
选项(输出接口):
iptables -t nat -A POSTROUTING -p tcp -d 92.222.75.159 --dport 1180 -o $EXTERNAL_IFACE -j MASQUERADE
使用-i
(输入接口)选项也是很好的做法,可以防止来自不受信任的网络的伪装。
如果你使用这个:
iptables -t nat -A PREROUTING -i ppp111 -p tcp --dport 1188 -j DNAT --to 92.222.75.159:1180
然后,您将所有来自接口 ppp111 且目标端口为 1188 的 TCP 流量重定向到 92.222.75.159:1180。您不检查目标 IP 地址,因此 8.8.8.8:1188 的流量也将通过此规则重定向。
因此,编写防火墙规则时一定要小心、准确!