在CentOS 7上打开防火墙端口

Kno*_*uch 331 port firewall centos

我使用的是CentOS 7,我必须确保端口2888和3888是开放的.

我读过这篇文章,但这没有用,因为在CentOS 7操作系统上没有iptables save命令.

有人告诉我,上面的URL对CentOS 7无效,我应该遵循这个.但是这篇文章并不清楚我究竟需要执行什么命令.

我也找到了

firewall-cmd --zone=public --add-port=2888/tcp 
Run Code Online (Sandbox Code Playgroud)

但这并不能重新启动.

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

gan*_*gav 633

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

firewall-cmd --get-active-zones
Run Code Online (Sandbox Code Playgroud)

它会说公共,dmz或其他东西.您只应申请所需的区域.

在公开尝试的情况下:

firewall-cmd --zone=public --add-port=2888/tcp --permanent
Run Code Online (Sandbox Code Playgroud)

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

firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)

否则,将public替换为您的区域,例如,如果您的区域是dmz:

firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
Run Code Online (Sandbox Code Playgroud)

  • 我使用了这个命令,但它对我不起作用,做了什么,将`--zone = dmz`改为`--zone = public` (29认同)
  • 这里最重要的两个答案都没有解释`--permanent`的作用,他们只是说这样做.如果解释答案是如何工作的,那么两者都将是更完整和有用的答案.从OP的一个资源:_"通过添加--permanent选项[...]可以使规则永久化.如果规则不是永久性的,那么每次收到启动,重启或重新加载后都需要应用它们使用D-BUS从firewalld发出的消息."_ (23认同)
  • 请不要盲目地启用所有区域中的端口,直到您找到正确的端口.使用`firewall-cmd --get-active-zones`查找系统上使用的区域.另外,man firewall-cmd. (9认同)
  • 是的,使用公共也很有用.请检查Sotsir下面的命令进行修正. (2认同)

小智 113

ganeshragav的答案是正确的,但知道你可以使用以下内容也很有用:

firewall-cmd --permanent --zone=public --add-port=2888/tcp 
Run Code Online (Sandbox Code Playgroud)

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

firewall-cmd --permanent --zone=public --add-service=http 
Run Code Online (Sandbox Code Playgroud)

然后重新加载防火墙

firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)

[答案修改以反映马丁彼得的评论,原始答案--permanent在命令行结束时]

  • 我不会依赖于语句末尾的`--permanent`选项.文档明确指出,它应该是第一个选项. (8认同)

Ric*_*ith 50

CentOS(RHEL)7已经改变了使用的防火墙,firewall-cmd它具有区域概念,就像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.


Jov*_*ias 25

Fedora,通过它做到了 iptables

sudo iptables -I INPUT -p tcp --dport 3030 -j ACCEPT
sudo service iptables save
Run Code Online (Sandbox Code Playgroud)

似乎工作


Has*_*ary 23

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

firewall-cmd --list-ports
Run Code Online (Sandbox Code Playgroud)

我们使用以下内容查看端口已打开的服务.

firewall-cmd --list-services
Run Code Online (Sandbox Code Playgroud)

我们使用以下内容查看端口已打开并查看开放端口的服务

firewall-cmd --list-all
Run Code Online (Sandbox Code Playgroud)

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

firewall-cmd --add-services=ntp 
Run Code Online (Sandbox Code Playgroud)

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

firewall-cmd —add-service=ntp --permanent 
Run Code Online (Sandbox Code Playgroud)

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

firewall-cmd --add-port=132/tcp  --permanent
Run Code Online (Sandbox Code Playgroud)

必须使用以下命令重新加载防火墙.

firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)

雅阿里


equ*_*ghe 14

虽然ganeshragavSotsir提供正确的,直接适用的方法,它是有用的注意,您可以添加自己的服务/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>
Run Code Online (Sandbox Code Playgroud)

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

创建此文件后,您可以firewall-cmd --reload使其可用,然后将其永久添加到某个区域

firewall-cmd --permanent --zone=<zone> --add-service=foobar
Run Code Online (Sandbox Code Playgroud)

然后firewall-cmd --reload立即让它活跃起来.


Has*_*ary 6

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

firewall-cmd --list-ports
Run Code Online (Sandbox Code Playgroud)

我们使用以下命令查看端口打开的服务:

firewall-cmd --list-services
Run Code Online (Sandbox Code Playgroud)

我们使用以下命令查看端口打开的服务并查看打开的端口:

firewall-cmd --list-all
Run Code Online (Sandbox Code Playgroud)

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

firewall-cmd --add-services=ntp 
Run Code Online (Sandbox Code Playgroud)

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

firewall-cmd -add-service=ntp --permanent 
Run Code Online (Sandbox Code Playgroud)

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

firewall-cmd --add-port=132/tcp  --permanent
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记使用firewall-cmd --reload 重新加载 (3认同)

Nea*_*kli 5

这里的最佳答案有效,但我在迈克尔·汉普顿对相关问题的回答中发现了更优雅的东西。“新”(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
Run Code Online (Sandbox Code Playgroud)

或者恢复仅运行时的更改:

$ firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)

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

$ systemctl restart firewalld
Run Code Online (Sandbox Code Playgroud)