打开特定端口

在 firewalld 中打开一个端口相当简单,在下面的示例中,我们允许从任何源 IP 地址到 TCP 端口 100 的流量。
首先我们修改持久配置,然后我们重新加载 firewall-cmd 以将此更改加载到运行配置中。

[jack@onitroad ~]# firewall-cmd --permanent --add-port=100/tcp
success
[jack@onitroad ~]# firewall-cmd --reload
success

如果未指定 --permanent 标志,这只会更改运行配置,但不会保存。

我们可以使用“--list-ports”检查当前默认区域中打开的端口。

[jack@onitroad ~]# firewall-cmd --list-ports
100/tcp

正如预期的那样,我们看到 TCP 端口 100 已打开。

如果我们希望删除端口,我们可以使用 '--remove-port=' 代替。

我们也可以用同样的方式打开一系列端口。

[jack@onitroad ~]# firewall-cmd --permanent --add-port=200-300/tcp
success

服务或者手动端口?

如果我们可以指定端口,为什么要使用服务?
可以在服务中指定模块,例如 samba.xml 在启用时为我们加载模块“nf_conntrack_netbios_ns”,以及四个不同的端口,这比我们自己完成所有这些要容易得多,因为我们不需要记住所有服务所需的端口。

如何在 CentOS 7 中使用 Firewalld 打开端口

本教程将引导我们在 CentOS 7 的默认防火墙 firewalld 中打开一个端口。

开放预定义服务

与手动指定允许通过防火墙的端口号不同,我们可以使用一堆可能更容易的预定义服务。
例如,我们可以使用“http”服务,而不是打开 TCP 端口 80。

[jack@onitroad ~]# firewall-cmd --permanent --add-service=http
success
[jack@onitroad ~]# firewall-cmd --reload
success

现在,如果我们列出通过防火墙接受的服务,我们将看到 http 与 ssh 和 dhcpv6-client 一起列出,默认情况下允许通过。

[jack@onitroad ~]# firewall-cmd --list-services
dhcpv6-client http ssh

这是一个预定义的服务,可以在 /usr/lib/firewalld/services/ 目录中作为 XML 文件找到。
这是我们刚刚使用的 http 服务的样子。

[jack@onitroad ~]# cat /usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
</service>

我们可以通过将其中之一复制到 /etc/firewalld/services/ 目录中然后对其进行自定义来创建自定义服务。
不应修改 /usr/lib/firewalld/services/ 目录中的服务,应将更改复制到 /etc/firewalld/services/ 中,然后重新加载 firewall-cmd 以获取更改。

日期:2020-07-07 20:55:06 来源:oir作者:oir