我对家庭局域网中实际的 ipv6 设置感到非常困惑。我从 ISP 获得一个 ipv6 /54 前缀。该前缀通过 ISP 提供的 DHCPv6 分配给路由器的 WAN 接口。然后,路由器的 wlan0 接口应通过 radvd 将此前缀通告到我的局域网中,以便主机可以执行 SLAAC。配置如下:
interface wlan0 {
AdvSendAdvert on;
MaxRtrAdvInterval 9;
AdvReachableTime 2000;
prefix ::/64 {
AdvAutonomous on;
DeprecatePrefix on;
};
route ::/0 {
};
};
从现在起,一切都运行正常。我的 LAN 中的所有主机都获得了 ipv6 地址,而 whatismyip.com 等网站显示主机的 ipv6 连接工作正常。此外,我可以 ping ipv6 站点,例如 ipv6.google.com。
但是。我的 LAN 上的路由/广告 PC 运行 apache2 网络服务器。此服务器已启动并运行,并分配给路由器端口 80 上的 WAN 接口 IP。现在我可以使用以下方法测试互联网的可达性:ipv6proxy.net。一切正常!但是当我想从 LAN 中的主机 ping 此 IP 时,我收到了一条Destination unreachable: Address unreachable
消息...
这是路由问题吗?还有什么可能?
答案1
我终于找到了问题所在。事实上,这是一个路由问题。默认情况下,Linux 内核不接受来自 ICMPv6 消息的路由信息,所以我把
echo 128 > /proc/sys/net/ipv6/conf/all/accept_ra_rt_info_max_plen
或者,我可以使用以下方法通过 wlan-interface 手动设置路由:
route -6 add <prefix of WAN interface>/64 gw <address of wlan0 interface>
在位于 LAN 中的客户端上