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

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

我有一个本地IPv6链接2001:db8:14 :: / 48分配。 我在3.2.50-grsec内核上运行Slackware。 我的ISP端(我的默认gw为:: / 0)是2001:db8:14 :: 1。 我已将2001:db8:14 :: 2分配给我的广域网接口(eth0),它工作正常 – 我可以通过IPv6在互联网上ping和访问各种服务。 我希望这台机器作为LAN(eth1)中的机器的路由器。 我部署了radvd,所有计算机(Win XP,Win 7和Linux系统)都从2001年成功获取了IPv6地址:db8:14:a :: / 64子网。 我将2001:db8:14:a :: 1分配给eth1 LAN接口。 现在…我可以在LAN内的所有机器之间ping通。 我可以从LAN中的任何一台机器ping6 2001:db8:14:a :: 1。 我不能ping任何机器LAN 2001(“目的不可到达:地址不可达”)ping6 2001:db8:14 :: 2(eth0)。 我可以从网上ping 2001:db8:14 :: 2。 我无法从因特网上ping 2001:db8:14:a :: 1。

显然,接口之间的转发stream量有问题。 当然,我已经把所有的/ proc / sys / net / ipv6 / conf / * / pseudofiles转为“1”。 我有我的默认路由设置为“:: / 0通过dev:eth0上的2001:db8:14 :: 1”。 我没有任何防火墙,以防万一在ip6tables FORWARDING(和其他)的默认策略是接受。

有什么我失踪? 任何想法可能是错误的路由?

我注意到你的路由表中有一个特定的问题。 它将2001:db8:14::/48为直接连接到eth0 。 那应该是/64 。 但是我不明白这怎么解释症状。

一条信息显然缺失。 ISP路由器必须使用2001:db8:14::/48的网关地址进行configuration。 如果该网关地址是2001:db8:14::2 ,路由应该正常工作。 如果是别的东西,那么来自外部的数据包不能到达你局域网上的任何东西,只有路由器的广域网地址是可达的。 这将解释为什么2001:db8:14:a::1无法从外部访问。 但2001:db8:14::2应该仍然可以从里面到达,这是令人费解的。

在这种情况下前进的唯一方法是重复ping,这是行不通的,这次是使用tcpdump或等价的方式观察路由器两个接口上的networkingstream量。

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