我怎样才能在centos 7上使用iptables? [关闭]

问题描述 投票:138回答:9

我用最少的配置安装了CentOS 7(os + dev工具)。我正在尝试为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.
networking centos iptables systemd
9个回答
318
投票

在RHEL 7 / CentOS 7中,引入了firewalld来管理iptables。恕我直言,firewalld更适合工作站而不是服务器环境。

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

systemctl stop firewalld
systemctl mask firewalld

然后,安装iptables-services包:

yum install iptables-services

在启动时启用服务:

systemctl enable iptables

管理服务

systemctl [stop|start|restart] iptables

保存防火墙规则可以按如下方式完成:

service iptables save

要么

/usr/libexec/iptables/iptables.init save

91
投票

RHEL and CentOS 7 use firewall-cmd instead of iptables。你应该使用那种命令:

# 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”或check the official firewalld docs以查看选项。有很多选项可以检查区域,配置,它是如何工作的......手册页真的很完整。

我强烈建议不要使用自Centos 7以来的iptables-service


16
投票

我有问题,重启不会启动iptables。

这解决了它:

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables

10
投票

尝试以下命令iptables-save


4
投票

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

IP6TABLES_SAVE_ON_STOP="no"

至:

IP6TABLES_SAVE_ON_STOP="yes"

还有这个:

IP6TABLES_SAVE_ON_RESTART="no"

至:

IP6TABLES_SAVE_ON_RESTART="yes"

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


1
投票

将IPtables配置放在传统文件中,它将在引导后加载:

的/ etc / SYSCONFIG / iptables的


1
投票

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

让我工作的唯一方法是运行以下命令:

yum -y install iptables-services; systemctl disable firewalld; systemctl mask firewalld; service iptables restart;服务iptables保存


0
投票

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

    systemctl start ip6tables.service
    systemctl enable ip6tables.service

0
投票

如果您这样做,并且您正在使用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

启用并启动fail2ban:

systemctl enable fail2ban
systemctl start fail2ban

参考:http://blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/

© www.soinside.com 2019 - 2024. All rights reserved.