iptables“--ttl-inc”不工作

iptables“--ttl-inc”不工作

我收到此错误:

$ iptables -t mangle -A PREROUTING -d 224.0.0.251 -j TTL --ttl-inc 1
iptables v1.8.7 (nf_tables): unknown option "--ttl-inc"
Try `iptables -h' or 'iptables --help' for more information.

然而在man iptables-extensions我看到--ttl-inc定义。尝试在网络上搜索,但没有找到答案。请指教。

$ uname -a    
Linux base 6.2.0-26-generic #26-Ubuntu SMP PREEMPT_DYNAMIC Mon Jul 10 23:39:54 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux


$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 23.04"
NAME="Ubuntu"
VERSION_ID="23.04"
VERSION="23.04 (Lunar Lobster)"

答案1

可作为非 root 用户重现iptables版本1.8.7:

$ /sbin/iptables -t mangle -A PREROUTING -d 224.0.0.251 -j TTL --ttl-inc 1
iptables v1.8.7 (nf_tables): unknown option "--ttl-inc"
Try `iptables -h' or 'iptables --help' for more information.

iptables尝试使用扩展时检测到问题并失败,但未正确检查这是由于缺乏这种情况的访问权限而导致的,并显示误导性消息。使用/sbin/iptables -t mangle -A PREROUTING不使用扩展的简单gets iptables v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)

这个特定的“bug”在以后的版本中得到了修复(这将在 Ubuntu 的未来版本中提供):

$ /sbin/iptables -t mangle -A PREROUTING -d 224.0.0.251 -j TTL --ttl-inc 1
iptables v1.8.9 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)

人们应该知道这样的管理命令必须以 root 用户身份运行。 Morover,iptables位于系统命令路径(/sbin/usr/sbin...)中,因此默认情况下不应找到(OP要么没有复制/粘贴完整的/sbin/iptables命令/usr/sbin/iptables,要么更改了PATH环境变量)。问题中的提示仍然$暗示是非 root,即使这不是值得依赖的东西。

作为 root 用户(使用sudosu或者即使unshare -Urn允许),该命令当然会按预期工作。

相关内容