Centos 7上的iptables在重新启动后不起作用

我在Centos 7上,删除了新的防火墙并安装了一个经典的iptables服务。 我有一个客户机在Debian 8.1和静态外部IP。

我做:

echo 1 > /proc/sys/net/ipv4/ip_forward sysctl -w net.ipv4.ip_forward=1 iptables -P FORWARD ACCEPT 

和:

 iptables -t nat -I PREROUTING -d *external_ip* -i enp2s0 -j DNAT --to-destination 192.168.122.72 iptables -t nat -I POSTROUTING -s 192.168.122.72 -o enp2s0 -j SNAT --to-source *external_ip* iptables -P FORWARD ACCEPT 

我的访客系统开始工作,并在互联网上成为可能。

然后我服务iptables保存,重新启动主机,我的客机在networking上变得不可用。 但是当我检查iptables规则(iptables -t nat -L -line-numbers)时,我发现我所有的规则都在那里。 当我刷新所有的iptables规则并再次input它们时,它会重新开始工作,直到重新启动。

我的朋友提出了一个解决scheme,用这些规则编写一个sh脚本,并将其添加到rclocal,但也许有更好的解决scheme?

如果你正在为自己的虚拟机编写自己的NAT规则,而不是让libvirt来pipe理它们,那么虚拟机所连接的虚拟networking应该被设置为路由networking,而不是NATnetworking。

你可以用virsh net-edit <network>来解决这个问题,然后修改:

  <forward mode='nat'/> 

至:

  <forward mode='route'/> 

(这对Firewalld来说是完全可行的,我已经有一台这样的机器在生产了。)

如果你想使用firewalld的旧iptables服务,你可以按照以下步骤做

 iptables-save > /etc/sysconfig/iptables 

通过这种方式,您手动插入的规则将在启动时保存并应用,您需要确保在启动时启用旧的iptables服务。