处理服务、端口和协议
现在,重点关注 services
、ports
和 protocols
所在行。默认情况下,防火墙将阻止所有端口、服务和协议,而只允许列出的。
在这里,你可以看到允许的服务是非常基本的客户端服务。例如,访问网络上的共享文件夹(samba-client
)、与 DNS 服务器通信或通过 SSH(ssh
服务)连接到计算机。你可以将 service
视为与端口组合的协议,例如 ssh
服务使用 SSH 协议,并且按照惯例使用 22 端口。通过允许 ssh
服务,你实际上所做的就是允许传入的连接在默认 22 端口上使用 SSH 协议。
请注意,根据经验,名称中带有 client
字样的服务是指传出连接,也就是你使用你的 IP 作为源对外部的连接,与之相反的是 ssh
服务,比如,它将接受传入连接(监听来自外部的连接)。
你可以在文件 /etc/services
中查找服务。例如,如果你想知道这些服务使用什么端口和协议:
-
[dan@localhost ~]$ cat /etc/services | grep ssh
-
ssh 22/tcp # The Secure Shell (SSH) Protocol
-
ssh 22/udp # The Secure Shell (SSH) Protocol
你可以看到 SSH 同时使用 TCP 和 UDP 的 22 端口。此外,如果你希望查看所有可用的服务,只需使用 firewall-cmd --get-services
。
打开端口
如果要阻止端口、服务或协议,请确保在此处未列出它们。展开来说,如果要允许服务,那么需要将它添加到列表中。
假设你要打开 5000
端口用于 TCP 连接。为此,请运行:
-
sudo firewall-cmd --zone=FedorwaWorkstation --permanent --add-port=5000/tcp
请注意,你需要指定规则适用的域。添加规则时,还需要如上指定它是 tcp
还是 udp
端口。--permanent
参数将规则设置为即使系统重启后也可以保留。
再次查看你所在区域的信息:
-
[dan@localhost ~]$ firewall-cmd --list-all
-
FedoraWorkstation (active)
-
target: default
-
icmp-block-inversion: no
-
interfaces: enp0s3
-
sources:
-
services: dhcpv6-client mdns samba-client ssh
-
ports: 1025-65535/udp 1025-65535/tcp 5000/tcp
-
protocols:
-
masquerade: no
-
forward-ports:
-
source-ports:
-
icmp-blocks:
-
rich rules: