iptables:为内部访客添加路由和端口转发

iptables:为内部访客添加路由和端口转发

在我添加带有单个虚拟机的专用网络之前,以下规则运行正常(可以 ping 通主机上的所有机器,但不能 ping 通外部)。我希望虚拟机 (192.168.100.2) 能够访问互联网并启用转发,以便我可以通过 SSH 连接到它。(这只有在没有我已有的规则的情况下才有效)IP 转发已启用。

我目前拥有的 iptables 规则:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:152]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables    INPUT:DROP: "
-A INPUT -j DROP
-A FORWARD -m physdev --physdev-is-bridged -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
COMMIT

每当我加载上述规则然后加载以下规则时,内部虚拟机就无法访问互联网 - 但我可以通过端口转发连接到它:

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o br0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -i br0 --dport 22727 -j DNAT --to-destination 192.168.100.2:2727
iptables -A FORWARD -p tcp -d 192.168.100.2 --dport 22727 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

有什么提示我遗漏了什么吗?

答案1

问题可能是从互联网返回的网络数据包被 INPUT 链丢弃,因为 dport 是随机的(并不总是 22727)

您可以尝试:

iptables -I INPUT 2 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

编辑:

您还需要启用 IP 转发

echo 1 > /proc/sys/net/ipv4/ip_forward

相关内容