Centos 7 保存iptables设置

use*_*822 73 iptables centos centos7

问题:服务器重启后 iptables 重置为默认设置。

我正在尝试设置这样的规则:

iptables -I INPUT -p tcp --dport 3000 -j ACCEPT

之后我做:

service iptables save

它写回这样的东西

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

在这之后我就跑了(这已经完成了一次):

chkconfig iptables on (我已经读到必须这样做才能在重新启动后恢复设置)

之后,我重新启动并运行此命令:

systemctl list-unit-files | grep iptables

我看到 iptables.service 已启用,但是,规则(打开端口 3000)不再起作用。

如何保留这些设置?

小智 95

通过以下命令禁用 firewalld:

systemctl disable firewalld
Run Code Online (Sandbox Code Playgroud)

然后通过以下命令安装 iptables-service:

yum install iptables-services
Run Code Online (Sandbox Code Playgroud)

然后启用 iptables 作为服务:

systemctl enable iptables
Run Code Online (Sandbox Code Playgroud)

现在您可以通过以下命令保存您的 iptable 规则:

service iptables save
Run Code Online (Sandbox Code Playgroud)


sgo*_*ohl 73

CentOS 7现在正在使用FirewallD!使用该--permanent标志来保存设置。

例子:

firewall-cmd --zone=public --add-port=3000/tcp --permanent
Run Code Online (Sandbox Code Playgroud)

然后重新加载规则:

firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)

  • 或者您可以禁用 firewalld 并安装“iptables-services”包以实现接近本机 iptables 的兼容性:) (6认同)
  • 知道为什么来自 AWS AMI 的 centos7 映像没有 firewallD。 (2认同)

qri*_*ris 30

在 CentOS 7 Minimal 上,您可能需要安装该iptables-services软件包(感谢@RichieACC建议):

sudo yum install -y iptables-services
Run Code Online (Sandbox Code Playgroud)

然后使用systemd以下方法启用服务:

sudo systemctl enable iptables.service
Run Code Online (Sandbox Code Playgroud)

并运行 initscript 以保存您的防火墙规则:

sudo /usr/libexec/iptables/iptables.init save
Run Code Online (Sandbox Code Playgroud)


sto*_*ain 6

iptables-save > /etc/sysconfig/iptables
Run Code Online (Sandbox Code Playgroud)

将保存当前配置,而无需安装任何其他库或服务。