openwrt 上的 Ip6tables DNAT 不起作用

openwrt 上的 Ip6tables DNAT 不起作用

我在我的 openwrt 路由器上使用 ip6tables 配置 ipv6 dnat:

ip6tables -t nat -I PREROUTING -p udp --dport 5100 -j DNAT --to-destination fdca:3aae:fe2e::1:53 # fdca:3aae:fe2e::1 is my router address

然后通过 dig 在其他 Linux 服务器上进行测试,如下所示:

dig -6 www.google.com @fdca:3aae:fe2e::1 -p5100

Dig 失败,连接在几秒后超时。但是执行 dig 命令后,ip6tables pkts 计数器加 1。tcpdump 显示路由器收到了 udp 数据包,但没有回复。我这样测试了 ipv4 并成功了。那么为什么 ipv6 会失败呢?

TCPDUMP 数据包:

16:29:16.914206 IP6 fdca:3aae:fe2e:0:5054:ff:fe32:8d8b.48898 > fdca:3aae:fe2e::1.5100: UDP,长度 43

ip6tables -t nat -L -x -n -v 显示:

链 PREROUTING(策略接受 1 个数据包,91 字节)pkts 字节目标协议选择加入退出源目标 8 728 DNAT udp * * ::/0 ::/0 udp dpt:5100 to:fdca:3aae:fe2e::1:53

cat /proc/net/nf_conntrack | grep 5100 显示:

ipv6 10 udp 17 56 src=fdca:3aae:fe2e:0000:5054:00ff:fe32:8d8b dst=fdca:3aae:fe2e:0000:0000:0000:0000:0001 sport=47169 dport=5100 数据包=1 字节=91 [未回复] src=fdca:3aae:fe2e:0000:0000:0000:0001:0053 dst=fdca:3aae:fe2e:0000:5054:00ff:fe32:8d8b sport=5100 dport=47169 数据包=0 字节=0 标记=0 区域=0 使用=2

答案1

我猜你需要使用以下方法保护 IPv6 地址[]

ip6tables -t nat -I PREROUTING -p udp --dport 5100 -j DNAT --to-destination [fdca:3aae:fe2e::1]:53 # fdca:3aae:fe2e::1 is my router address

这也应该可行并且更简单:

ip6tables -t nat -I PREROUTING -p udp --dport 5100 -j REDIRECT --to-ports 53

相关内容