5.8. 使用区域管理流量取决于源
您可以使用区管理传入的流量,根据其源管理传入的流量。这可让您对进入的流量进行排序,并将其路由到不同的区,以允许或禁止该流量可访问的服务。
如果您给区添加一个源,区就会成为活跃的,来自该源的所有进入流量都会被定向到它。您可以为每个区指定不同的设置,这些设置相应地应用于来自给定源的网络流量。即使只有一个网络接口,您可以使用更多区域。
5.8.1. 添加源
要将传入的流量路由到特定源,请将源添加到那个区。源可以是 CIDR 格式的 IP 地址或 IP 掩码。
- 在当前区中设置源:
~]# firewall-cmd --add-source=<source>
- 要为特定区设置源 IP 地址:
~]# firewall-cmd --zone=zone-name --add-source=<source>
以下流程允许来自
受信任
区中 192.168.2.15 的所有传入的流量:
- 列出所有可用区:
~]# firewall-cmd --get-zones
- 将源 IP 添加到持久性模式的信任区中:
~]# firewall-cmd --zone=trusted --add-source=192.168.2.15
- 使新设置具有持久性:
~]# firewall-cmd --runtime-to-permanent
5.8.2. 删除源
从区中删除源会关闭来自它的网络流量。
- 列出所需区的允许源:
~]# firewall-cmd --zone=zone-name --list-sources
- 从区永久删除源:
~]# firewall-cmd --zone=zone-name --remove-source=<source>
- 使新设置具有持久性:
~]# firewall-cmd --runtime-to-permanent
5.8.3. 添加源端口
要启用根据原始端口对流量进行排序,请使用
--add-source-port
选项指定源端口。您还可以将此与 --add-source
选项结合使用,将流量限制在特定的 IP 地址或 IP 范围。
添加源端口:
~]# firewall-cmd --zone=zone-name --add-source-port=<port-name>/<tcp|udp|sctp|dccp>
5.8.4. 删除源端口
通过删除源端口,您可以根据原始端口禁用对流量排序。
要删除源端口:
~]# firewall-cmd --zone=zone-name --remove-source-port=<port-name>/<tcp|udp|sctp|dccp>
5.8.5. 使用 Zones 和 Sources 只允许服务只用于特定域
要允许特定网络的流量在机器上使用服务,请使用区和源。以下流程只允许来自
192.0.2.0/24
网络的 HTTP 流量,而阻止其他任何流量。
警告
当您配置此场景时,请使用具有 default 目标的区。使用目标设为 ACCEPT 的区存在安全风险,因为对于来自
192.0.2.0/24
的流量,所有网络连接都将被接受。
- 列出所有可用区:
~]# firewall-cmd --get-zones block dmz drop external home internal public trusted work
- 将 IP 范围添加到 internal 区,来将来自源的流量通过区:
~]# firewall-cmd --zone=internal --add-source=192.0.2.0/24
- 在 internal 区中添加 http 服务:
~]# firewall-cmd --zone=internal --add-service=http
- 使新设置具有持久性:
~]# firewall-cmd --runtime-to-permanent
- 检查 internal 区是否活跃,以及该区中服务是否被允许:
~]# firewall-cmd --zone=internal --list-all internal (active) target: default icmp-block-inversion: no interfaces: sources: 192.0.2.0/24 services: dhcpv6-client mdns samba-client ssh http ...
5.8.6. 配置基于区接受的流量
您可以根据协议允许区接受传入的流量。所有使用指定协议的流量都会被区接受,您可以在其中应用进一步的规则和过滤。
在区中添加协议
通过在某个区中添加协议,您可以允许这个区接受使用这个协议的所有流量。
在区中添加协议:
~]# firewall-cmd --zone=zone-name --add-protocol=port-name/tcp|udp|sctp|dccp|igmp
注意
要接收多播流量,请使用带有
--add-protocol
选项的 igmp
值。
从区中删除协议
从某个区中删除协议,您可以停止接受区基于这个协议的所有流量。
从区中删除协议:
~]# firewall-cmd --zone=zone-name --remove-protocol=port-name/tcp|udp|sctp|dccp|igmp