如何在 CentOS 上使用 firewall-cmd 打开特定 IP 地址的端口?

Mic*_*rin 78 firewall centos firewalld centos7

我想在 CentOS 7.1 服务器上使用命令打开4567IP 地址的端口。1.2.3.4firewall-cmd

我怎样才能做到这一点,因为我能找到的文档太具体了?

Vas*_*kis 98

试试这个命令

firewall-cmd --permanent --zone=public --add-rich-rule='
  rule family="ipv4"
  source address="1.2.3.4/32"
  port protocol="tcp" port="4567" accept'
Run Code Online (Sandbox Code Playgroud)

稍后检查区域文件以检查 XML 配置

cat /etc/firewalld/zones/public.xml
Run Code Online (Sandbox Code Playgroud)

重新加载防火墙

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

  • 我在这个答案之后完成了 RHCSA,我同意。避免丰富的规则将导致更易于维护的配置。 (5认同)
  • 重新加载的正确方法实际上是:`firewall-cmd --reload` (3认同)
  • 虽然此解决方案可行,但@michael-hampton 的解决方案是最符合防火墙风格的方法。在我看来,当没有更好的方法来做某事时,应该使用丰富的规则作为最后的手段。 (3认同)

Mic*_*ton 86

创建一个新区域以适应此配置。FirewallD 区域由源地址和接口定义。

firewall-cmd --new-zone=special --permanent
firewall-cmd --reload
firewall-cmd --zone=special --add-source=192.0.2.4/32
firewall-cmd --zone=special --add-port=4567/tcp
Run Code Online (Sandbox Code Playgroud)

--permanent当然添加到后两个命令使它们永久。

  • 这应该是公认的答案。 (6认同)
  • 同意,恕我直言,这是最好的答案。要列出该区域,请使用 ```firewall-cmd --list-all-zones```。此外,您可能希望在两个 --add 语句中添加 ```--permanent```。 (2认同)