使用此命令查找您的活动区域:
firewall-cmd --get-active-zones
它将显示为 public、dmz 或其他内容。您应该只应用所需的区域。
对于 public,请尝试:
firewall-cmd --zone=public --add-port=2888/tcp --permanent
然后记得重新加载防火墙以使更改生效。
firewall-cmd --reload
否则,将公共区域替换为您的区域,例如,如果您的区域是 DMZ:firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
--zone=dmz
改为--zone=public
。 - Tom Hall--permanent
是什么意思,它们只是说要这样做。如果能解释一下答案是如何起作用的,这两个答案就会更完整和有用。根据提问者提供的资料之一:通过添加--permanent
选项,可以使规则变得永久。如果规则不是永久的,则需要在每次使用D-BUS接收到防火墙的start、restart或reload消息后重新应用规则。 - dKenfirewall-cmd --get-active-zones
命令查看系统上使用的区域。同时,可以查看 man firewall-cmd
获取更多信息。 - basic6ganeshragav的答案是正确的,但是还有一个有用的技巧,你可以使用:
firewall-cmd --permanent --zone=public --add-port=2888/tcp
但如果是已知的服务,您可以使用:
firewall-cmd --permanent --zone=public --add-service=http
然后重新加载防火墙
firewall-cmd --reload
--permanent
选项是不可靠的。文档明确指出,应该将其作为第一个选项。 - Martin Peterman firewall-cmd
没有给出这样的指示。 - Jonathon ReinhartCentOS (RHEL) 7已经更换了防火墙,使用firewall-cmd
代替了之前的iptables。它引入了“区域”(zones)的概念类似于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
根据文档,
在永久模式下更改防火墙设置后,只有在重新加载防火墙或系统重启时才会生效。
你可以使用firewall-cmd --reload
命令重新加载防火墙设置。
Fedora,通过使用iptables
实现
sudo iptables -I INPUT -p tcp --dport 3030 -j ACCEPT
sudo service iptables save
似乎工作正常
使用以下命令查看打开的端口。
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
雅阿里
虽然 ganeshragav 和 Sotsir 提供了正确且直接适用的方法,但请注意您可以将自己的服务添加到/etc/firewalld/services
中。可以查看/usr/lib/firewalld/services/
获取灵感,其中包含firewalld预定义的服务。
这种方法的优点是,稍后您将知道为什么这些端口是开放的,因为您已经在服务文件中进行了描述。此外,您现在可以将其应用于任何区域,而不会有拼写错误的风险。此外,对服务所做的更改无需单独应用于所有区域,而只需应用于服务文件即可。
例如,您可以创建/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 --permanent --zone=<zone> --add-service=foobar
跟着执行 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
这里的顶级答案是可行的,但我在Michael Hampton的答案中发现了更加优雅的解决方案。 "新"(firewalld-0.3.9-11+)--runtime-to-permanent
选项可以让您创建运行时规则并在使其永久化之前进行测试:firewall-cmd
。
$ firewall-cmd --zone=<zone> --add-port=2888/tcp
<Test it out>
$ firewall-cmd --runtime-to-permanent
或者撤销仅在运行时更改的内容:
$ firewall-cmd --reload
另请参见Antony Nguyen的评论。显然,在某些规则已被删除的情况下,防火墙命令firewall-cmd --reload可能无法正常工作。在这种情况下,他建议重新启动firewalld服务:
$ systemctl restart firewalld
#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]
在Centos 7的防火墙中,你可以使用以下命令来添加端口:
firewall-cmd --zone=public --add-port=2888/tcp
但是如果你重新加载防火墙,你的配置将不会被保存。因此,你需要使用以下命令来永久添加端口并保存配置:
firewall-cmd --permanent --zone=public --add-port=2888/tcp