我正在准备的新安装的家庭服务器遇到一些问题。我在上面安装了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
您应该在 Cyberciti 文档中查看有关 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
在启动时启动脚本。