Centos 7 保存iptables设置(端口转发)

Centos 7 保存iptables设置(端口转发)

我在 Centos 上安装了 KVM,有一个 VM

主机 ip:192.168.1.108,客户机 ip:192.168.100.227,局域网:192.168.1.4/24

这是我所做的一切:

我已经禁用了防火墙并安装了 iptables-services

systemctl disable firewalld 
yum install iptables-services 
systemctl enable iptables.service

这是我的规则

iptables -t nat -A PREROUTING -p tcp -s 192.168.1.4/22 -d 192.168.1.108 --dport 8000 -j DNAT --to-destination 192.168.100.227:8888
iptables -t nat -A POSTROUTING -p tcp --dport 8888 -d 192.168.100.227 -j SNAT --to 192.168.100.1
iptables -I FORWARD -m state -d 192.168.100.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT

最后保存我的 iptable 规则(使用超级用户)

/usr/libexec/iptables/iptables.init save

(也尝试过“service iptables save”)

在 /etc/sysconfig/iptables-config 中

IPTABLES_SAVE_ON_STOP="yes"
IPTABLES_SAVE_ON_RESTART="yes"

现在一切正常,我可以通过 192.168.1.108:8000 访问我的 python 服务器(托管在虚拟机的 8888 端口上),但重启后 iptables 仍然启用,但这个规则

iptables -I FORWARD -m state -d 192.168.100.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT

不再起作用。我必须再次添加它才能访问我的 python 服务器。

有没有其他方法可以进行此端口转发(也许使用 FirewallD)或者我遗漏了什么?

答案1

我认为您的问题来自保存 ipables 配置。为了澄清起见,您可以尝试 cat 文件:/etc/sysconfig/iptables 来检查文件内容,以便知道 iptables 是否已成功保存service iptables restart。顺便说一句,我认为您应该尝试以下方法来保存 iptables 规则:iptables-save > /etc/sysconfig/iptables

答案2

由于我一个月前遇到过类似的问题,我的解决方法是使用 restore 命令从 etc/network/interfaces 加载我的 iptable 规则:

iptables-恢复 < /etc/iptables.rules

每次我重新启动 iptables 时,都会保留 iptables.rules 中包含的所有更新。

相关内容