我试图设置如下规则:
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)不再起作用。
如何我要保留这些设置吗?
#1 楼
CentOS 7现在正在使用FirewallD!使用--permanent
标志保存设置。示例:
firewall-cmd --zone=public --add-port=3000/tcp --permanent
然后重新加载规则:
firewall-cmd --reload
评论
不知道为什么来自AWS AMI的centos7映像没有firewallD。
– Saad Masood
2015年9月7日在8:32
或者,您可以禁用firewalld并安装“ iptables-services”软件包以实现接近本机的iptables兼容性:)
–vagarwal
16年6月22日在15:12
我尝试使用firewalld-cmd为lo(--zone = trusted)配置端口转发80-> 8180,但是它不起作用(在--zone = public中有效)iptables sudo / sbin / iptables -t nat-我预选-p tcp --dport 80 -j REDIRECT --to-port 8180; sudo / sbin / iptables -t nat -I OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8180可以工作(但是每个firewalld --reload都将撤消此操作)
– djb
17年4月25日在13:37
@saad:由于aws已经提供了防火墙服务,因此可以将ami保持很小
– sgohl
18 Mar 27 '14:57
它不是!我已经订购了Centos 7 VPS,并且默认情况下它具有iptables!操作系统版本:7.5.1804(Core)
– codezombie
18-09-28在19:30
#2 楼
通过以下命令禁用防火墙:systemctl disable firewalld
,然后通过以下命令安装iptables-service:
yum install iptables-services
然后启用iptables作为服务:
systemctl enable iptables
现在您可以通过以下命令保存iptable规则:
service iptables save
评论
工作请客,谢谢
– pcdev
20年4月8日在9:51
#3 楼
在CentOS 7 Minimal上,您可能需要安装iptables-services
软件包(建议使用@RichieACC):sudo yum install -y iptables-services
,然后使用
systemd
启用服务:sudo systemctl enable iptables.service
并运行初始化脚本以保存您的防火墙规则:
sudo /usr/libexec/iptables/iptables.init save
#4 楼
iptables-save > /etc/sysconfig/iptables
将保存当前配置,而无需安装任何其他库或服务。
评论
从其联机帮助页:iptables-save-将iptables规则转储到stdout。除非您将其重定向到某个文件,否则它不会保存任何内容。
–Skippy le Grand Gourou
20年6月30日在13:50
#5 楼
您可以直接修改/ etc / sysconfig / iptables文件。重新加载iptables服务以从该文件重新加载规则。
但是,正如您已经知道的那样,firewalld是Centos的新默认防火墙系统,这是学习使用方法的好机会,您不觉得吗?
评论
在CentOS7中,不再有/ etc / sysconfig / iptables文件
– sgohl
2014年9月6日上午9:07
抱歉@roothahn,但是它确实存在...除非您当然错过了一些包裹。在/usr/lib/systemd/system/iptables.service中,您可以看到实际启动的是“ /usr/libexec/iptables/iptables.init start”,这是寻找旧的旧配置文件的旧的和昂贵的脚本在/ etc / sysconfig中
–扔石头
2014年9月6日15:52
是的,/ etc / sysconfig / iptables对我也不存在。但是,/ etc / sysconfig / iptables-config确实存在。但是它没有iptables文件以前的防火墙规则。
–肯特格雷夫
2014年9月30日19:03在
我发现该文件在默认的最小安装目录中也不存在。看来CentOS 7默认不安装iptables.service。 “ yum install -y iptables.service”安装了该服务,并为我创建了默认的/ etc / sysconfig / iptables。
– RichieACC
2014年12月4日上午8:33
那应该是“ yum install iptables-services”
– qris
2015年1月4日在17:15
#6 楼
像这样的脚本可能对任何人都有用吗?yum remove firewalld && yum install iptables-services
iptables --flush INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Any packages related to an existing connection are OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT # ssh is OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT # Port 3000 for IPv4 is OK
iptables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service iptables save # Save IPv4 IPTABLES rules van memory naar disk
systemctl enable iptables # To make sure the IPv4 rules are reloaded at system startup
如果IPv6流量可能会(现在或以后的任何时间)访问您的系统,我想您也希望这样做:
ip6tables --flush INPUT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Any packages related to an existing connection are OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT # ssh is OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT # Port 3000 for IPv6 is OK
ip6tables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service ip6tables save # Save IPv6 IPTABLES rules van memory naar disk
systemctl enable ip6tables # To make sure the IPv6 rules are reloaded at system startup
评论
您为什么不只使用firewalld?它可能仍在运行。可能是因为firewalld不适合服务器环境...