当使用名称 localhost 而不是 127.0.0.1 时,iptables 会插入重复的规则

当使用名称 localhost 而不是 127.0.0.1 时,iptables 会插入重复的规则

当我将规则插入 INPUT 链时,它会被复制两次(即,与原始规则一起,存在三个完全相同的副本)。这是给出的命令:/sbin/iptables -w -I INPUT 20 -m comment -p tcp -s localhost -d localhost --comment 'TEST' -j LOG

此行为出现在 CentOS 计算机 ( Linux version 3.10.0-1127.8.2.el7.x86_64)、Ubuntu 计算机(Linux 版本 5.6.1-x86)和原始 Debian 机器 ( Linux version 4.19.0-9-amd64) 上。

但是,当我替换localhost为时127.0.0.1,这种情况不会发生(如果我仅将一个 localhost值替换为其相应的地址,则只会生成一个重复项)。请注意,当我尝试将参数传递-n给时iptables,讽刺的是,它告诉我该选项不能与 insert () 一起使用Illegal option '-n' with this command。但是,如果我运行strace查看它的用途,很明显它iptables正在打开/etc/resolv.conf(但仅当我用作localhost值而不是其 IP 地址时)。

这是设计使然吗?

更新:/etc/hosts以下是localhost 和 中包含的内容127.0.0.1

127.0.0.1       localhost                                 
127.0.1.1       ubuntu.nodes.hosting.com       ubuntu    
...                                                          
::1     localhost ip6-localhost ip6-loopback              

更新2:感谢@9000的评论,我查看了hosts文件。给定一个/etc/hosts包含以下行的文件(并且没有其他引用localhost)...

127.0.0.1   localhost 
::1         localhost

...注释掉第二行(即将名称localhost与 IPv6 地址关联的行::1),此命令...

/sbin/iptables -w -I INPUT 20 -m comment -p tcp -s localhost -d localhost --comment 'TEST' -j LOG

...仅生成单个规则。

/sbin/iptables鉴于我正在调用而不是,为什么 IPv6 地址会被解析或对行为产生任何影响/sbin/ip6tables?两者都链接到xtables-multi.似乎没有检查用户想要哪个版本。而且,插入的重复规则不会因IP版本而异;它们都使用 IPv4 地址来指示源和目的地。

相关内容