iptables v1.4.21:无法加载匹配“-d”:没有这样的文件或目录

iptables v1.4.21:无法加载匹配“-d”:没有这样的文件或目录

我正在运行 kerenl 3.14.18 并使用 iptables 1.4.21,使用以下选项构建--static-enable --disable-shared。当我运行此命令时:/sbin/iptables -A PREROUTING -m -d 127.3.0.2/24 -j DNAT --to-destination 10.0.0.1 -p udp -dport 69 我收到此错误消息:iptables v1.4.21:无法加载匹配“-d”:没有这样的文件或目录

有人能帮忙解释一下我遗漏了什么吗?提前谢谢您。

答案1

你好,我有一个带有 2 个接口(eth0 和 eth1)的主机系统。eth0 将接收 IP 为 127.3.xx 的数据包,我想将这些数据包从 eth1 转发到服务器(10.0.1)。eth1 的 IP 为 192.168.0.100。服务器需要将数据包视为来自主机(192.168.0.100)。我想我可以删除 -m 标志,但当我这样做时,我收到此错误:iptables v1.4.21:不允许使用多个 -d 标志

为了实现这一点,您可以使用以下 iptables 规则:

iptables -t nat -A PREROUTING -d 127.3.0.2/24 -p udp --dport 69 -j DNAT --to-destination 10.0.0.1 iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100

但您应将 127.3.0.2/24 替换为单个 IP(即 127.3.0.2)或有效 CIDR 范围(例如 127.3.0.0/24)。127.3.0.2/24 不是有效 CIDR 范围,因为 /24 会覆盖 127.3.0.0-127.3.0.254。这还会将发往该范围内任何 IP 的任何流量重定向到 10.0.0.1 上的端口 69。

此外,由于端口 69 是 TFTP,我不得不提一下——如果您尝试将其用于 PXE 启动或其他基于 DHCP 的解决方案,那么很有可能它将无法工作,因为大多数供应商在使用 PXE 遍历子网时都会遇到麻烦。

相关内容