将 wan ip:port 转发到外部 ip2:port2

将 wan ip:port 转发到外部 ip2:port2

我有基于 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 的流量也将通过此规则重定向。

因此,编写防火墙规则时一定要小心、准确!

相关内容