在防火墙生成器中,当您使用 DNS 对象并将其设置为运行时时,防火墙(在我们的例子中是 iptables)究竟何时真正解析 DNS 名称?
- 是不是只要在防火墙中调用该 DNS 名称就会发生这种情况?因此,每当有人/某物尝试访问该 DNS 名称时,防火墙都会即时解析该名称?
- 还是当您执行 fw 脚本将规则加载到 iptables 中时?那么在这种情况下,它会解析一次 DNS 名称,然后将生成的 ip 地址硬编码到 iptable 规则中?
从我读到的内容来看,我认为它是 #1,但我并不是 100% 清楚。我们的网络上有两台服务器用于某项功能。一台是主服务器,一台是备份服务器。
alpha0.domain.com
alpha1.domain.com
在 DNS 中我们有这样的:
alpha.domain.com -> alpha0.domain.com
如果主服务器出现故障并且我们需要切换到备份服务器,我只需更改我们的本地 DNS 记录以指向该服务器alpha1.domain.com
。
那么回到防火墙,如果我只是将域对象作为 放入alpha.domain.com
,每次切换到备份 alpha 服务器并更改 DNS 记录时,我是否必须重新加载防火墙规则?或者即使在切换后防火墙也会自动解析到正确的地址吗?
答案1
iptables 只处理 IP 地址。当您在 iptables 规则中指定 DNS 名称时,iptables 用户空间程序会进行一次查找并将 IP 地址加载到内核中。
fwbuilder 在其生成的规则集中输出 IP 地址(编译时)或 DNS 名称(运行时)。但这并不能改变 iptables 仅对 DNS 名称进行一次性查找的事实。
因此您每次都必须重新加载规则。