Networking 如何在centos 7上使用iptables?

Networking 如何在centos 7上使用iptables?,networking,centos,iptables,systemd,Networking,Centos,Iptables,Systemd,我用最少的配置(os+dev工具)安装了CentOS 7。我正试图为httpd服务打开80端口,但我的iptables服务出现问题。。。怎么了?我做错了什么 # ifconfig/sbin/service iptables save bash: ifconfig/sbin/service: No such file or directory # /sbin/service iptables save The service command supports only basic LSB ac

我用最少的配置(os+dev工具)安装了CentOS 7。我正试图为
httpd
服务打开80端口,但我的iptables服务出现问题。。。怎么了?我做错了什么

# ifconfig/sbin/service iptables save
bash: ifconfig/sbin/service: No such file or directory


# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables status
Redirecting to /bin/systemctl status  iptables.service
iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables start
Redirecting to /bin/systemctl start  iptables.service
Failed to issue method call: Unit iptables.service failed to load: No such file or directory.
在RHEL 7/CentOS 7中,引入了用于管理iptables的。依我看,firewalld更适合工作站而不是服务器环境

可以回到更经典的iptables设置。首先,停止并屏蔽firewalld服务:

systemctl stop firewalld
systemctl mask firewalld
然后,安装iptables服务包:

yum install iptables-services
在启动时启用服务:

systemctl enable iptables
管理服务

systemctl [stop|start|restart] iptables
保存防火墙规则的操作如下:

service iptables save


我的问题是重新启动无法启动iptables

这修正了它:

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables
。您应该使用这种命令:

# add ssh port as permanent opened port
firewall-cmd --zone=public --add-port=22/tcp --permanent
然后,您可以重新加载规则以确保一切正常

firewall-cmd --reload
这比使用iptable save要好,特别是如果您计划使用lxc或docker容器。启动docker服务将添加iptable save命令将提示的一些规则。如果保存结果,将有许多不应保存的规则。因为docker容器可以在下次重新启动时更改它们的ip地址

带永久选项的Firewall cmd更适合这样做

选中“man firewall cmd”或查看选项。有很多选项可以检查区域、配置、工作方式。。。手册页真的很完整


我强烈建议不要使用iptables服务,因为Centos 7尝试以下命令
iptables save

我修改了
/etc/sysconfig/ip6tables config
文件更改:

IP6TABLES_SAVE_ON_STOP="no"
致:

这是:

IP6TABLES_SAVE_ON_RESTART="no"
致:


这似乎通过重新启动保存了我使用iptables命令所做的更改。

将iptables配置放在传统文件中,它将在启动后加载:


/etc/sysconfig/iptables

要添加,在运行
systemctl mask firewalld
命令后,您还应该能够对ip6tables执行相同的操作:

    systemctl start ip6tables.service
    systemctl enable ip6tables.service

如果您这样做,并且正在使用fail2ban,则需要启用适当的筛选器/操作:

将以下行放入
/etc/fail2ban/jail.d/sshd.local

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 5
bantime = 86400
启用和启动故障2ban:

systemctl enable fail2ban
systemctl start fail2ban

参考资料:

上个月,我尝试在LXC VM容器上配置iptables,但每次重新启动后,iptables配置都不会自动加载

运行以下命令是使其工作的唯一方法:

yum-y安装iptables服务;systemctl禁用防火墙;systemctl屏蔽防火墙;服务重启;服务iptables保存


试试这个/etc/init.d/iptables,我得到了答案。RHEL 7使用iptables的firewalld instad。Simo firewalld比iptables对用户更友好。首先安装并启动firewalld服务
sudo yum安装-y firewalld&&sudo systemctl start firewalld
。然后添加服务HTTP
sudo firewall cmd--permanent--add service=HTTP
(如果需要,还可以添加服务https以打开端口443)。最后将新配置加载到firewalld
sudo firewall cmd——重新加载
它不会保存iptables。重新启动服务器将丢失所有更改。在我的系统上,iptable已正确保存。您是否确保iptables服务在引导时启动?您可以通过运行“systemctl enable iptables”来实现这一点。您还可以运行firewalld,这将向列表中添加额外的iptables规则(每次重新启动系统时)。要停止防火墙,请运行“systemctl mask firewalld”,在答案中添加有关屏蔽防火墙的信息,如@TroodoN Mikesuggested@Sgaduuw你能详细解释一下为什么你认为fitewalld不适合/不适合服务器吗?firewall cmd--重新加载不起作用。我必须使用“systemctl restart firewalld”重新启动才能使更改生效。“因为firewalld是动态的,所以可以随时对其配置进行更改,并且可以立即执行。无需重新加载防火墙的任何部分,因此不会无意中中断现有网络连接”--从CentOS 7开始不工作:
\systemctl start iptables
gives
无法启动iptables.service:未找到单元。
\systemctl start ip6tables
gives
无法启动ip6tables.service:未找到单元。
man iptables save-将iptables规则转储到stdout。然后我们可以使用
iptables save>/etc/sysconfig/iptables
我认为这是因为容器不会持久化任何内容,除非它位于主机操作系统上的持久卷中。大多数容器操作系统和配置通常不在卷中,因此每次重新启动容器时都会重置。
    systemctl start ip6tables.service
    systemctl enable ip6tables.service
[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 5
bantime = 86400
systemctl enable fail2ban
systemctl start fail2ban