iptables 如何处理主机名?

iptables 如何处理主机名?

我有一个 Python 脚本,用于将规则写入 iptables,以防止 IP 块访问我的服务器上的端口 22。

编写这些规则后,其中一个块的主机名是“localhost/22”。 iptables 会将其视为 127.0.0.1 还是仍然会承认实际的 IP 地址?我不想因此而被锁定在我的服务器之外。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  *****/14  anywhere            
DROP       all  --  localhost/22         anywhere            
DROP       all  --  ****/20      anywhere            

另外,还有一个简单的问题:为什么 iptables 不显示每个规则的端口?我指定 22 作为 dport。

答案1

iptables是一个配置netfilter的工具,netfilter不处理主机名。

当您修改规则时,iptables将主机名解析为 ip,并且当您列出规则时,iptables执行 ip 的反向查找(除非您使用该-n选项)。

如果 localhost 解析为 127.0.0.1 之后的任何其他内容,或者是其他任何内容的反向查找的结果,则您的设置非常奇怪,并且可能会感到惊讶。

答案2

为什么没有规则来确定允许来自环回接口的流量?

iptables -I INPUT 1 -i lo -m comment --comment "ALLOW loopback interface" -j ACCEPT

你可以看到“localhost”的IP

iptables -L -v -n

相关内容