centos 7 – 打开防火墙端口

我使用的是centos 7,我必须确保端口2888和3888处于打开状态。

我读了这篇文章,但这不起作用,因为在centos 7操作系统没有iptables保存命令。

有人告诉我,上面的URL是不适用于centos 7.我应该按照这个

但是这篇文章并不清楚我需要执行什么命令。

我也发现

firewall-cmd --zone=public --add-port=2888/tcp 

但是这并不能保证重启。

那么我怎样才能打开端口,并使其重新启动

使用此命令查找您的活动区域:

 firewall-cmd --get-active-zones 

它会说公共,DMZ或其他。 您只应用于所需的区域。

在dmz的情况下尝试:

 firewall-cmd --zone=dmz --add-port=2888/tcp --permanent 

否则,将dmzreplace为您的区域,例如,如果您的区域是公开的:

 firewall-cmd --zone=public --add-port=2888/tcp --permanent 

然后记得重新加载防火墙以使更改生效。

 firewall-cmd --reload 

ganeshragav的回答是正确的,但是知道你可以使用:

 firewall-cmd --permanent --zone=public --add-port=2888/tcp 

但如果是已知的服务,则可以使用:

 firewall-cmd --permanent --zone=public --add-service=http 

然后重新加载防火墙

 firewall-cmd --reload 

[修改的答案反映了马丁·彼得的评论,原来的回答在命令行结束时是--permanent ]

CentOS(RHEL)7已将防火墙更改为使用firewall-cmd ,该firewall-cmd具有与公共,家庭和专用networking的Windows版本类似的区域概念。 你应该看看这里找出你认为你应该使用哪一个。 EL7默认使用public ,所以这是我的例子下面使用。

您可以使用firewall-cmd --list-all来检查您正在使用哪个区域,并使用firewall-cmd --set-default-zone=<zone>更改它。

然后您将知道什么区域允许服务(或端口):

firewall-cmd --permanent --zone=<zone> --add-service=http

firewall-cmd --permanent --zone=<zone> --add-port=80/tcp

您可以通过运行来检查端口是否已被实际打开:

firewall-cmd --zone=<zone> --query-port=80/tcp

firewall-cmd --zone=<zone> --query-service=http

根据文件 ,

在永久模式下更改防火墙设置时,只有重新加载防火墙或系统重新启动时,您的select才会生效。

您可以使用以下命令重新加载防火墙设置: firewall-cmd --reload

Fedora,通过iptables做到了

 sudo iptables -I INPUT -p tcp --dport 3030 -j ACCEPT sudo service iptables save 

似乎工作

虽然ganeshragav和Sotsir提供了正确和直接适用的方法,但是有必要指出的是,您可以将自己的服务添加到/etc/firewalld/services 。 为了获得灵感,请查看firewalld的预定义服务所在的/usr/lib/firewalld/services/

这种方法的优点是,稍后你会知道为什么这些端口是打开的,就像你在服务文件中描述的那样。 此外,您现在可以将其应用于任何区域,而不会有拼写错误的风险。 此外,对服务的更改不需要单独应用于所有区域,而仅仅应用于服务文件。

例如,你可以创build/etc/firewalld/services/foobar.xml

 <?xml version="1.0" encoding="utf-8"?> <service> <short>FooBar</short> <description> This option allows you to create FooBar connections between your computer and mobile device. You need to have FooBar installed on both sides for this option to be useful. </description> <port protocol="tcp" port="2888"/> <port protocol="tcp" port="3888"/> </service> 

(有关语法的信息,请man firewalld.service 。)

一旦创build了这个文件,你可以通过firewall-cmd --reload让它变得可用,然后用它永久地将它添加到某个区域

 firewall-cmd --permanent --zone=<zone> --add-service=foobar 

然后使用firewall-cmd --reload使其立即firewall-cmd --reload

要查看打开的端口,请使用以下命令。

 firewall-cmd --list-ports 

我们使用以下来查看其端口已打开的服务。

 firewall-cmd --list-services 

我们使用以下命令查看端口处于打开状态的服务,并查看打开的端口

 firewall-cmd --list-all 

要向防火墙添加服务,我们使用以下命令,在这种情况下,服务将使用任何端口在防火墙中打开。

 firewall-cmd --add-services=ntp 

要使这个服务永久打开,我们使用下面的命令。

 firewall-cmd -add-service=ntp --permanent 

要添加端口,请使用以下命令

 firewall-cmd --add-port=132/tcp --permanent 

运行防火墙必须使用以下命令重新加载。

 firewall-cmd --reload 

亚阿里

如果您熟悉像在centos 6或更早版本的iptables服务,您仍然可以通过手动安装使用iptables服务:

步骤1 =>安装epel回购

yum安装epel-release

步骤2 =>安装iptables服务

yum安装iptables-services

步骤3 =>停止firewalld服务

systemctl停止firewalld

第4步=>在启动时禁用firewalld服务

systemctl禁用firewalld

第5步=>启动iptables服务

systemctl启动iptables

第6步=>在启动时启用iptables

systemctl启用iptables

最后你现在可以在/ etc / sysconfig / iptables中编辑你的iptablesconfiguration。

所以 – >编辑规则 – >重新加载/重新启动。

像firewalld一样,像老function一样。

这里的最佳答案是有效的,但是我在迈克尔汉普顿的一个相关问题的答案中find了更优雅的东西。 firewall-cmd的“new”(firewalld-0.3.9-11 +)– --runtime-to-permanent选项允许您创build运行时规则并在永久化之前对其进行testing:

 $ firewall-cmd --zone=<zone> --add-port=2888/tcp <Test it out> $ firewall-cmd --runtime-to-permanent 

或者还原仅用于运行时的更改:

 $ firewall-cmd --reload 

另见Antony Nguyen的评论 。 显然,在某些情况下,firewall-cmd –reload可能无法正常工作。 在这种情况下,他build议重新启动firewalld服务:

 $ systemctl restart firewalld