Conntrack获取传出协议41的错误转发规则


1

我正在尝试通过运行Tomato 1.28的WRT54G转发协议41(ipv6-in-ipv4)用于HE隧道。 Tomato 1.28正在运行一个2.4内核,它对协议41一无所知,只是它被命名为“ipv6”。拥有2.4内核似乎也意味着conntrack不能被禁用:没有“原始”iptables规则。

我可以设置规则,以便将传入的数据包DNAT到正确的内部主机。如果远程主机首先通过隧道发送内容,一切正常。数据包可以通过适当的NAT来在两个方向上流过隧道,我得到了一个 /proc/net/ip_conntrack 像这样的条目:

unknown 41 599 src=72.52.104.74 dst=67.180.229.14 src=10.1.0.3 dst=72.52.104.74 use=1 mark=0

该条目表示它是针对未知协议41,如果没有收到更多流量,则超时为599秒,并且在发起方(WAN侧)具有一对源地址和目标地址,而在接收方具有另一对(这是局域网侧)。

但是如果我的系统首先尝试通过隧道发送数据包,则源地址不会像它应该的那样被转换为路由器的地址,并且我得到这样的conntrack条目:

unknown 41 589 src=10.1.0.3 dst=72.52.104.74 [UNREPLIED] src=72.52.104.74 dst=10.1.0.3 use=1 mark=0

只要我的机器不断尝试使用隧道,它就会使这个虚假的conntrack条目保持活动状态,我可以看到数据包离开我的路由器,电缆调制解调器的内部源地址仍然附着,导致它们被丢弃,永远不会到达他们要走了。

为了让我的隧道出现,我必须在我的端部关闭隧道接口,使用HE ping工具诱导一些IPv6流量下来管道,并且,虽然10分钟超时仍然是活动的正确conntrack入口,让我的隧道尽头重新上升 - 然后确保它一下子不会闲置10分钟。一世 能够 这样做,但它非常愚蠢。

现在我的转发规则设置如下:

# Send incoming ipv6-in-ipv4 packets to the correct host
iptables -t nat -A PREROUTING -p 41 -s 72.52.104.74 -j DNAT --to 10.1.0.3

# Allow those packets through the firewall
iptables -I FORWARD -p 41 -d 10.1.0.3 -j ACCEPT

# Things I have added to try and solve my problem, which didn't work:

# Remove the default masquerade-everything rule
iptables -t nat -D POSTROUTING 10
# Masquerade only protocols other than 41. Conntrack still gets its bogus entries, 
# and if I get the correct entry in it still works.
iptables -t nat -A POSTROUTING -p ! 41 -j MASQUERADE

我也曾尝试像这样建立一个SNAT规则:

iptables -t nat -I POSTROUTING -p 41 -s 10.1.0.3 -j SNAT --to 67.180.229.14

但就我所知,这也没有任何帮助。

所以我的问题是:

1)有没有人通过WRT54G成功运行Tomato获得协议41?如果是这样,您使用了哪些特殊的防火墙规则?

2)为什么路由器认为它不必在传出协议41上进行源地址转换?


令人尊敬的WRT54G可能仍然有一些有用的生命,取决于其具体的硬件修订,但我会放弃番茄。其他人都有。
Michael Hampton

你能推荐一个能更好地支持IPv6的固件吗?甚至是原生隧道支持?我可以在这个东西上运行OpenWRT,但它不够强大,无法运行OpenWRT Web UI,所以我会手动完成所有事情。
interfect

我在家里拥有的所有东西都运行OpenWRT Barrier Breaker,这是目前的 各种型号和年龄的路由器,已经运行了很长一段时间。至少在你习惯了OpenWRT的配置文件之后,我不会认为缺少web UI是一个显着的缺点。
Michael Hampton

Answers:


0

怎么样

iptables -t nat -A PREROUTING -p 41 -s 72.52.104.74 -j DNAT --to 10.1.0.3
iptables -t nat -A POSTROUTING -j MASQUERADE
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.