我正在使用 ansible 将区域添加到 Centos 计算机上的防火墙。直到(几乎)太晚才意识到,我没有让 IN_Internal 接口正常工作,所有这些都将公开,这是由firewalld.conf 定义的默认值。
这是我的internal.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Internal</short>
<description>For use on internal networks. You mostly trust the other computers on the networks to not harm your computer. Only selected incoming connections are accepted.</description>
<interface name="eth0"/>
<service name="ipp-client"/>
<service name="mdns"/>
<service name="dhcpv6-client"/>
<service name="ssh"/>
</zone>
看起来根本没有被使用过。
因为,无论出于何种原因,我最终都会得到:
Chain IN_internal (0 references)
2 120 IN_public all -- eth0 * 0.0.0.0/0 0.0.0.0/0 [goto]
不明白为什么会发生这样的事情。
当我这样做时firewall-cmd --zone=internal --change-interface=eth0
,它可以工作(即使在我重新加载防火墙之后),但它是完全相同的 XML
由于我使用 ansible 部署我的设置,并且没有在计算机上运行firewall-cmd,所以我想知道firewall-cmd 在幕后做什么,以便我可以推出这些配置。
答案1
man 5 firewalld.zones
声称
如何设置或更改连接区域?
该区域存储在与 的连接的 ifcfg 中
ZONE=option
。如果该选项缺失或为空,则使用firewalld 中设置的默认区域。