本机 IPv6:eth0 和 eth1 之间的路由

本机 IPv6:eth0 和 eth1 之间的路由

我谦虚地请求您帮助解决我自己无法解决的问题。

我有一个本地 IPv6 链接,其中分配了 2001:db8:14::/48。我在 3.2.50-grsec 内核上运行 Slackware。我的 ISP 端(我的 ::/0 默认网关)是 2001:db8:14::1。我已将 2001:db8:14::2 分配给我的 WAN 接口(eth0),并且它正在运行 - 我可以通过 IPv6 ping 和访问 Internet 上的各种服务。我希望这台机器充当 LAN(eth1)中机器的路由器。我部署了 radvd,所有计算机(各种 Win XP、Win 7 和 Linux 系统)都成功从 2001:db8:14:a::/64 子网获取了 IPv6 地址。我将 2001:db8:14:a::1 分配给 eth1 LAN 接口。现在...我可以在 LAN 内的所有机器之间 ping6。我可以从 LAN 中的任何机器 ping 6 2001:db8:14:a::1。我无法从 LAN 中的任何机器 ping 6 2001:db8:14::2 (eth0)(“目标无法访问:地址无法访问”)。我可以从 Internet ping 2001:db8:14::2。我无法从 Internet ping 2001:db8:14:a::1。

显然,接口之间的转发流量有问题。当然,我已将所有 /proc/sys/net/ipv6/conf/*/forwarding 伪文件设置为“1”。我的默认路由设置为“::/0 via 2001:db8:14::1 on dev eth0”。我没有任何防火墙,以防万一,ip6tables 上针对转发(和其他任何内容)的默认策略是接受。

我是不是漏掉了什么?你知道路由可能出了什么问题吗?

答案1

我注意到您的路由表有一个具体问题。它指定2001:db8:14::/48为直接连接到eth0。那应该是/64。但我不明白这如何解释这些症状。

显然缺少一条信息。ISP 路由器必须配置网关地址2001:db8:14::/48。如果该网关地址是2001:db8:14::2,则路由应该正常工作。如果是其他地址,则来自外部的数据包无法到达 LAN 上的任何内容,只有路由器 WAN 地址可以访问。这可以解释为什么2001:db8:14:a::1从外部无法访问。但从2001:db8:14::2内部应该仍然可以访问,这令人费解。

在这种情况下,唯一的解决办法是重复 ping,但没有成功,这次用 tcpdump 或同等工具观察路由器两个接口上的网络流量。

从外部发送数据包时,eth0路由器上的接口应该会看到 ISP 为您的前缀分配的网关的邻居发现。如果将数据包发送到您的 /48 中的任何地址会导致邻居发现完全相同的地址,那么该地址就是您应该分配给的网关地址eth0。还有其他几种可能出现这种情况的方式,在这种情况下,您需要使用有关您实际看到的流量的信息来更新您的问题。

相关内容