在我的 Debian 8 网关上:我想将传入端口 9000 转发到 192.168.4.10:3389,将传入端口 9001 转发到 192.168.4.11:3389。
DHCP - WAN - eth0 -----> eth2 - LAN - 192.168.4.1
我将下面的rules.v4 与 iptables-restore 一起使用。我对 iptables 没有太多经验,而且网络上的所有教程我都无法将其实现到我现有的规则中。
我正在使用 Debian 8 和 iptables v1.4.21
我现有的 iptables 规则如下。
# Generated by iptables-save v1.4.21 on Sat Jul 25 12:31:07 2020
*nat
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
-A INPUT -i lo -j ACCEPT
# allow ssh, so that we do not lock ourselves
# allow ping from WAN side
--append INPUT --protocol icmp --icmp-type any --src [REDACTED_IP] --jump ACCEPT
# open ports for gateway services
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth2 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i bond0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 9091 -j ACCEPT
-A INPUT -i eth2 -p tcp -m tcp --dport 9091 -j ACCEPT
-A INPUT -i bond0 -p tcp -m tcp --dport 8200 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -j DROP
COMMIT
我正在恢复这些规则
iptables-restore < /etc/iptables/rules.v4
任何帮助将不胜感激。谢谢。
答案1
假设网关有两个 NIC(eth0
面向 WAN,eth2
面向 LAN)。第一条规则将启用数据包转发(也称为路由)。来自互联网的传入流量将到达eth0
,然后根据规则 #2 和 #3 转换到远程目标主机。这称为目标 NAT (DNAT)。第四条规则启用 NAT(伪装)。
$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
$ sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 9000 -j DNAT --to-destination 192.168.4.10:3389
$ sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 9001 -j DNAT --to-destination 192.168.4.11:3389
$ sudo iptables -t nat -A POSTROUTING -j MASQUERADE
如果一切顺利的话,然后考虑永久性的改变。