是否可以保存以目标名称而不是 IP 为名称的 iptable 规则?

是否可以保存以目标名称而不是 IP 为名称的 iptable 规则?

例如,我有这样的规则

#iptables -A OUTPUT -d www.google.com -j ACCEPT

当我在终端中输入此规则时,它会解析为适当的 IP,这就是rules.v4我保存时存储的内容。有没有办法存储www.google.com在自动加载的文件中而不是IP?我尝试直接编辑文件,但是当我在其中输入名称时,规则无法加载。

答案1

不,内核对名称一无所知。内核规则仅具有 IP 地址。使用文本格式保存和恢复这些规则iptables-saveiptables-restore该文本格式是内核中内容的可逆精确表示,因此也不涉及名称。

您可以做的最接近您想要的事情可能是以 shell 脚本的形式保存您的规则,您手动维护该脚本,并包含一系列iptables用于ip6tables设置可以包含名称的规则的命令。但请继续阅读以了解为什么您可能不应该这样做。

您应该首先仔细考虑为什么需要使用名称。您使用名称是否是因为您事先不知道该名称将指向哪个 IP 地址,还是因为该名称映射到的 IP 地址可能会不时发生变化?考虑一下,当您使用名称时,iptablesorip6tables命令会立即解析该名称,然后无限期地存在于内核中的是 IP 地址。当名称和 IP 地址之间的映射发生变化时会发生什么? DNS 名称具有 TTL,它表示您应该缓存名称与地址之间的映射的时间长度。但当映射发生变化时,内核中的 iptables 规则不会更新,从而导致规则中包含陈旧/过时的 IP 地址。

相关内容