我有以下规则工作正常 – 之前,我添加了一个单一的虚拟机(它可以ping主机上的所有机器,但不是外部)的私人networking。 我想虚拟机(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
任何提示我缺less什么?
问题可能是因特网返回的networking数据包被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