我正在使用CentOS 7,并且必须确保端口2888和3888是打开的。
有人告诉我,以上URL对CentOS 7无效。我应该遵循此URL。
但是这篇文章对我到底需要执行什么命令还是不清楚的。

我也找到了

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


,但是

那么如何打开端口并使其在重新启动后仍然存在?

评论

堆栈溢出是一个有关编程和开发问题的网站。这个问题似乎与主题无关,因为它与编程或开发无关。请在帮助中心中查看我可以询问哪些主题。也许超级用户或Unix&Linux Stack Exchange是一个更好的地方。

#1 楼

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

firewall-cmd --get-active-zones


它将显示public,dmz或其他内容。您只应申请所需的区域。

如果要公开尝试:

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


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

/>
firewall-cmd --reload


否则,用public代替您的区域,例如,如果您的区域是dmz:

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


评论


我使用了此命令,但对我不起作用,是什么,将--zone = dmz更改为--zone = public

–汤姆堂
2014-09-25 6:04

是的,使用public也很有用。请也检查Sotsir的以下命令以进行更正。

– ganeshragav
2014-09-30 22:33

这里的前两个答案中的任何一个都没有真正说明永久性是什么,他们只是说要这样做。如果解释了答案的工作方式,那么这两个答案都将是更完整和有用的答案。来自OP的资源之一:“可以通过添加--permanent选项来使规则永久化。使用D-BUS从防火墙启动。”

– dKen
2015年3月3日,10:25

请不要盲目地启用所有区域中的端口,直到您点击正确的端口。使用firewall-cmd --get-active-zones找出系统上使用的区域。另外,man firewall-cmd。

–basic6
15年4月14日在21:27

在阅读fedora文档时,它声明--permanent选项必须是所有永久调用的第一个选项。使用上面的代码我没有得到任何错误,但是我不确定这是否可能导致其他问题。

– Marc
16-10-19在23:21

#2 楼

ganeshragav的回答是正确的,但
知道可以使用它也很有用:



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


,然后重新加载防火墙

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


[答案经过修改,以反映Martin Peter的评论,原文答案在命令行末尾有--permanent]

评论


我不会依靠语句末尾的--permanent选项。该文档明确指出,它应该是首选。

–马丁·彼得(Martin Peter)
2014-10-20 18:31



@MartinPeter man firewall-cmd在我的机器上没有这样的指示(Fedora 21)。

–乔纳森·莱因哈特(Jonathon Reinhart)
15年6月2日在22:24

@JonathonReinhart我指的是Fedora的FirewallD Wiki声明:--permanent选项必须是所有永久调用的第一个选项。

–马丁·彼得(Martin Peter)
2015年6月3日13:27

它使我firewallD没有运行

–拉胡尔·塔索德(Rahul Tathod)
18-09-22在6:16

#3 楼

CentOS(RHEL)7已将防火墙更改为使用firewall-cmd,它具有区域的概念,类似于Windows版本的Public,Home和Private网络。您应该在这里查看您认为应该使用的哪一个。 EL7默认情况下使用public,所以这是我在下面的示例中使用的内容。在哪个区域允许服务(或端口):



firewall-cmd --list-all

firewall-cmd --set-default-zone=<zone>

根据文档,


更改防火墙时永久模式下的设置,您的
选择仅在重新加载防火墙或重新启动系统后才生效。 。

#4 楼

Fedora是通过iptables做到的

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


似乎可以工作

#5 楼

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

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


Ya Ali

评论


在“ firewall-cmd -add-service = ntp --permanent”上方应更改为“ firewall-cmd --add-service = ntp --permanent”

–马杜兰加(Maduranga Siriwardena)
18年9月24日在6:20

#6 楼

尽管ganeshragav和Sotsir提供了正确且直接适用的方法,但值得注意的是您可以将自己的服务添加到/etc/firewalld/services。为了获得启发,请查看firewalld的预定义服务所在的/usr/lib/firewalld/services/

这种方法的优点在于,稍后您将知道为什么打开这些端口,如您在服务文件中所描述的。此外,您现在可以将其应用于任何区域,而不会出现输入错误的风险。此外,对服务所做的更改无需单独应用于所有区域,而仅应用于服务文件。例如,您可以创建/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。)

创建此文件后,您可以使firewall-cmd --reload可用,然后使用
将其永久添加到某个区域。
紧接着firewall-cmd --reload使它立即激活。

#7 楼

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

firewall-cmd --list-ports


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

firewall-cmd --list-services


我们使用以下方法查看开放端口的服务并查看开放端口:以下命令,在这种情况下,该服务将使用任何端口在防火墙中打开:

firewall-cmd --list-all


要使该服务永久打开,我们使用以下命令:

firewall-cmd --add-services=ntp 


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

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


#8 楼

此处的最佳答案有效,但我在迈克尔·汉普顿对相关问题的答案中发现了一些更优雅的方法。 --runtime-to-permanent的“ new”(firewalld-0.3.9-11 +)firewall-cmd选项可让您创建运行时规则并对其进行测试,然后将其永久化:
还原仅运行时的更改:

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


还请参见Antony Nguyen的评论。显然,在某些规则已删除的情况下,firewall-cmd --reload可能无法正常工作。在这种情况下,他建议重新启动防火墙服务:

$ firewall-cmd --reload


#9 楼

如果您有多个允许在Centos 7 FIrewalled中使用的端口,则可以使用以下命令。



 #firewall-cmd --add-port={port number/tcp,port number/tcp} --permanent

#firewall-cmd --reload


And check the Port opened or not after reloading the firewall.


#firewall-cmd --list-port


For other configuration [Linuxwindo.com][1]
 


#10 楼

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

步骤1 =>安装epel repo


yum install epel-release


步骤2 =>安装iptables服务


yum install iptables-services


步骤3 =>停止防火墙服务


systemctl停止防火墙服务


步骤4 =>在启动时禁用防火墙服务


systemctl禁用firewalld


步骤5 =>启动iptables服务


systemctl启动iptables


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


systemctl启用iptables


最后您现在可以进行编辑您的iptables配置位于/ etc / sysconfig / iptables。

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

就像具有相同功能的旧centos一样,例如firewalld。

#11 楼

对于iptables老手来说,Firewalld有点不直观。对于那些喜欢在简单的可配置树中使用类似iptables语法的iptables驱动的防火墙的人,请尝试用fwtree替换firewalld:防火墙/
,然后执行以下操作:

 echo '-p tcp --dport 80 -m conntrack --cstate NEW -j ACCEPT' > /etc/fwtree.d/filter/INPUT/80-allow.rule
 systemctl reload fwtree 


#12 楼

您好在Centos 7 Firewall-cmd中。
如果使用
firewall-cmd --zone = public --add-port = 2888 / tcp
是正确的,但是如果您重新加载firewal
firewall-cmd --reload

您的配置不会被保存

您需要添加密钥

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