如何让 iptables 服务在 CenOS/RHEL7 上重启后自动启动?

如何让 iptables 服务在 CenOS/RHEL7 上重启后自动启动?

我正在准备的新安装的家庭服务器遇到一些问题。我在上面安装了CentOS7,发现80和443端口默认是关闭的。因此,我使用以下命令将它们添加到 iptables 中:

iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
service iptables save

我还安装了不存在的 iptable 服务。问题是每次我重新启动机器时,新配置都会被擦除。

我尝试将 iptable 服务添加到 chkconfig 但出现以下错误:

[root@CentOS-7]# chkconfig --add iptables
error reading information on service iptables: No such file or directory

我认为我收到此错误的原因是因为 /etc/init.d/ 中没有 iptable 脚本,但是如果我实际上在做正确的事情和/或是否有更简单更可靠的方法,有没有人有任何想法这?如果不是我该如何解决这个问题?最后我只需要使用我的家庭服务器作为网络/邮件服务器......

我还尝试按照 flemingovirus 的善意建议使用“systemctl enable iptables”命令,但没有成功。输入命令后,我得到以下输出:

ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants`/iptables.service'`

更新:我查看了 iptables,命令“service iptables save”工作正常。该问题似乎是由于服务在重新启动时未启动。将以下行添加到 /etc/rc.local 后,我成功地使服务在重新启动时运行

systemctl start  iptables.service

但是我想知道为什么“systemctl enable iptables”命令在这种情况下不起作用。我错过了什么吗?谢谢

答案1

虽然这个问题很老了,但我遇到了同样的问题并找到了解决方案这里

systemctl mask firewalld
systemctl stop firewalld

基本上,firewalld 与 iptables 冲突,因此会阻止 iptables 加载:

# cat /usr/lib/systemd/system/firewalld.service 
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network.target
Before=libvirtd.service
Before=NetworkManager.service
Conflicts=iptables.service ip6tables.service ebtables.service

...

我能够通过屏蔽firewalld来解决这个问题,以确保它不会自动启动,并且此后永远不会启动。当然,您需要确保 iptables 已启用:

systemctl enable iptables

答案2

初始化脚本消失了。现在它的systemctl.它存在于所有 CentOS7 文档中。要 chkconfig ipatables 或在启动时启动 iptables 服务,您需要使用以下命令:-

systemctl 启用 iptables

您应该在 Cyber​​citi 文档中查看有关 systemctl 的简单知识iptables

答案3

首先你应该尝试一下#chkconfig --add /sbin/iptables它会识别“iptables”。那么您应该为 iptables 配置创建一个脚本,然后使该脚本在启动时启动。创建一个脚本:

#!/bin/bash
#
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/service iptables save

并为其命名myfirewall。使其可执行chmod +x myfirewall并将其写入./myfirewall/etc/rc.local在启动时启动脚本。

相关内容