7.8. 使用 firewalld 控制网络流量
firewalld
软件包安装了大量预定义的服务文件,您可以添加更多或自定义它们。然后,您可以使用这些服务定义为服务打开或关闭端口,而无需了解协议及它们使用的端口号。
7.8.1. 使用 CLI 控制预定义服务的流量 复制链接链接已复制到粘贴板!
控制流量的最简单的方法是在 firewalld
中添加预定义的服务。这会打开所有必需的端口并根据 服务定义文件 修改其他设置。
先决条件
-
firewalld
服务在运行。
流程
检查
firewalld
中的服务是否还没有被允许:firewall-cmd --list-services
# firewall-cmd --list-services ssh dhcpv6-client
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令列出在默认区域中启用的服务。
列出
firewalld
中所有预定义的服务:firewall-cmd --get-services
# firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令显示默认区域的可用服务的列表。
将服务添加到
firewalld
允许的服务的列表中:firewall-cmd --add-service=<service_name>
# firewall-cmd --add-service=<service_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令将指定的服务添加到默认区域中。
使新设置具有持久性:
firewall-cmd --runtime-to-permanent
# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令将这些运行时更改应用到防火墙的永久配置中。默认情况下,它将这些更改应用到默认区域的配置中。
验证
列出所有永久的防火墙规则:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令显示默认防火墙区域(
public
)的永久防火墙规则的完整配置。检查
firewalld
服务的永久配置的有效性。firewall-cmd --check-config
# firewall-cmd --check-config success
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果永久配置是无效的,命令会返回一个错误及更多详情:
firewall-cmd --check-config
# firewall-cmd --check-config Error: INVALID_PROTOCOL: 'public.xml': 'tcpx' not from {'tcp'|'udp'|'sctp'|'dccp'}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您也可以手动检查永久配置文件,以验证设置。主配置文件为
/etc/firewalld/firewalld.conf
。特定于区域的配置文件在/etc/firewalld/zones/
目录中,策略在/etc/firewalld/policies/
目录中。
7.8.2. 使用 Web 控制台在防火墙上启用服务 复制链接链接已复制到粘贴板!
默认情况下,服务添加到默认防火墙区域。如果在更多网络接口中使用更多防火墙区,您必须首先选择一个区域,然后添加带有端口的服务。
RHEL 8 web 控制台显示预定义的 firewalld
服务,您可以将其添加到活跃的防火墙区。
RHEL 8 web 控制台配置 firewalld 服务。
Web 控制台不允许没有在 web 控制台中列出的通用 firewalld
规则。
先决条件
- 您已安装了 RHEL 8 web 控制台。
- 您已启用了 cockpit 服务。
您的用户帐户被允许登录到 web 控制台。
具体步骤请参阅安装并启用 Web 控制台。
流程
登录到 RHEL 8 web 控制台。
详情请参阅 登录到 web 控制台。
- 点 Networking。
点
按钮。如果没有看到
按钮,使用管理员权限登录到 web 控制台。在 Firewall 部分,选择要添加该服务的区,然后点击 Add Services。
- 在 Add Services 对话框中,找到您要在防火墙中启用的服务。
根据您的场景启用服务:
- 点 Add Services。
此时,RHEL 8 web 控制台在区域的服务列表中显示该服务。
7.8.3. 使用 Web 控制台配置自定义端口 复制链接链接已复制到粘贴板!
您可以通过 RHEL web 控制台为服务配置自定义端口。
先决条件
- 您已安装了 RHEL 8 web 控制台。
- 您已启用了 cockpit 服务。
您的用户帐户被允许登录到 web 控制台。
具体步骤请参阅安装并启用 Web 控制台。
-
firewalld
服务在运行。
流程
登录到 RHEL 8 web 控制台。
详情请参阅 登录到 web 控制台。
- 点 Networking。
点
按钮。如果没有看到
按钮,使用管理员权限登录到 web 控制台。在 Firewall 部分,选择要配置自定义端口的区域,并点 Add Services。
- 在 Add services 对话框中,点 单选按钮。
在 TCP 和 UDP 字段中,根据示例添加端口。您可以使用以下格式添加端口:
- 端口号,如 22
- 端口号范围,如 5900-5910
- 别名,比如 nfs, rsync
注意您可以在每个字段中添加多个值。值必须用逗号分开,且没有空格,例如: 8080、8081、http
在 TCP 文件、UDP 文件或两者中添加端口号后,在 Name 字段中验证服务名称。
Name 字段显示保留此端口的服务名称。如果您确定这个端口可用,且不需要在该端口上通信,则可以重写名称。
- 在 Name 字段中,为服务添加一个名称,包括定义的端口。
点
按钮。
要验证设置,请进入防火墙页面,并在区域的服务列表中找到该服务。