尝试自我训练,firewalld
我设置了 apache 并配置了区域,如下所示:
[root@localhost ~]# firewall-cmd --get-active-zones
work
sources: 192.168.122.1
public
interfaces: ens3
[root@localhost ~]# firewall-cmd --zone=work --list-all
work
interfaces:
sources: 192.168.122.1
services: dhcpv6-client ipp-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: ens3
sources:
services: dhcpv6-client http https ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
我的预期结果是来自虚拟机管理程序的流量将与“工作”区域匹配,并且由于该区域不允许使用 http,因此它会被丢弃。但是我仍然可以从那里访问该网页:
我知道流量与“公共”区域匹配,因为删除“http”和“https”服务会导致网络流量停止,将它们添加回公共区域会恢复服务,而对“工作”区域进行相同的修改则不会执行任何操作。
我确信这是我的理解失败,但我无法发现它。
更新
仍然有这个问题。如果我从中删除接口public
并将其添加到work
它,它就会开始工作,但这很可能是因为所有ens3
流量现在都将流向该区域。我将iptable -Z
数据包计数归零,并验证了与该public
区域关联的链是否正在获取数据包。
有趣的是,如果我这样做--add-source
,它将流量添加到drop
或block
区域,它会按照我预期的方式工作(无论区域上配置了什么服务,流量都会被丢弃/拒绝public
)。
以下是运行防火墙的服务器上 netstat 的输出:
[root@localhost ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.122.1 0.0.0.0 UG 0 0 0 ens3
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3