在CentOS 7上打开防火墙端口

时间:2014-07-14 03:07:35

标签: centos port firewall

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

我读了this article但这没有用,因为在CentOS 7操作系统上没有iptables save命令。

有人告诉我上述网址对CentOS 7无效,我应该关注this。 但是这篇文章并不清楚我究竟需要执行什么命令。

我也找到了

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

但这不能重新启动。

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

12 个答案:

答案 0 :(得分:594)

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

firewall-cmd --get-active-zones

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

在公开尝试的情况下:

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

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

firewall-cmd --reload

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

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

答案 1 :(得分:107)

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

也很有用
firewall-cmd --permanent --zone=public --add-port=2888/tcp 

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

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

然后重新加载防火墙

firewall-cmd --reload

[修改后的答案反映了Martin Peter的评论,原始答案在命令行末尾有--permanent]

答案 2 :(得分:49)

CentOS(RHEL)7已将防火墙更改为使用firewall-cmd,其中有一个区域概念,类似于Windows版本的公共,家庭和专用网络。您应该查看here以确定您认为应该使用哪一个。 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

根据documentation

  

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

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

答案 3 :(得分:24)

Fedora,通过iptables

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

似乎工作

答案 4 :(得分:20)

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

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

答案 5 :(得分:13)

虽然ganeshragavSotsir提供了正确且直接适用的方法,但请注意您可以将自己的服务添加到/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 --permanent --zone=<zone> --add-service=foobar

后跟firewall-cmd --reload,让它立即生效。

答案 6 :(得分:3)

这里的最佳答案有效,但我在Michael Hampton's answer中找到了一个更优雅的相关问题。 --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

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

$ firewall-cmd --reload

另见Antony Nguyen's comment。显然,在删除规则的某些情况下,firewall-cmd --reload可能无法正常工作。在这种情况下,他建议重新启动firewalld服务:

$ systemctl restart firewalld

答案 7 :(得分:2)

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

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

答案 8 :(得分:0)

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

步骤1 =&gt;安装epel repo

  

yum install epel-release

步骤2 =&gt;安装iptables服务

  

yum install iptables-services

步骤3 =&gt;停止火警服务

  

systemctl stop firewalld

步骤4 =&gt;启动时禁用firewalld服务

  

systemctl禁用firewalld

步骤5 =&gt;启动iptables服务

  

systemctl start iptables

步骤6 =&gt;在启动时启用iptables

  

systemctl enable iptables

最后你现在可以在/ etc / sysconfig / iptables编辑你的iptables配置。

所以 - &gt;编辑规则 - &gt;重新加载/重启。

喜欢像firewalld一样功能较旧的centos。

答案 9 :(得分:0)

对于iptables老手来说,Firewalld有点不直观。对于那些喜欢在易于配置的树中使用类似iptables语法的iptables驱动防火墙的人,尝试用fwtree替换firewalld:   https://www.linuxglobal.com/fwtree-flexible-linux-tree-based-firewall/ 然后执行以下操作:

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

答案 10 :(得分:0)

如果您有多个允许在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]

答案 11 :(得分:0)

Centos 7 Firewall-cmd中的Hello。 是的,如果使用 防火墙-cmd --zone = public --add-port = 2888 / tcp 但是,如果您重新加载firewal 防火墙-cmd-重新加载

您的配置不会被保存

您需要添加密钥

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