// 内核中针对特定子网的 IPv6 路由添加问题...(1000::)...为什么?
// 添加 ipv6 路由:
sudo /sbin/ip -6 route add 1005:1006:1007:1008::1/64 via 1001:1002:1003:1004::1 dev eth0
RTNETLINK answers: No route to host
// 但对于其他情况
sudo /sbin/ip -6 route add 2000::/3 dev eth0
sudo /sbin/ip -6 route add 1005:1006:1007:1008::1/64 via 2000:: dev eth0
// 现在它工作正常了..为什么会这样?请解释一下这个问题..谢谢
答案1
首先,你正在使用保留的地址空间,你不应该使用它。要么从你的 ISP 获取地址空间,要么生成你自己的 ULA 前缀(我建议六XS)。
第一个命令不起作用的原因是您的网关与您自己的 IP 地址位于不同的网络上。您需要到达网关才能到达离线目的地,但网关本身却离线。这永远行不通。
该地址1005:1006:1007:1008::1/64
是子网的一部分1005:1006:1007:1008::/64
。该子网上的地址从(拼写出您通常会省略的所有零)1005:1006:1007:1008:0000:0000:0000:0000
到1005:1006:1007:1008:ffff:ffff:ffff:ffff
。如您所见,1001:1002:1003:1004::1
不在该范围内,因此您的配置无效。
在第二个示例中,您告诉您的机器2000::/3
(即所有当前使用的全局单播空间)位于您的以太网接口上。因此,您基本上是在告诉您的机器整个互联网是一个大 LAN,即您的 LAN。之后,您当然可以使用任何地址2000::/3
作为您的默认网关,因为该范围内的所有内容都被视为在线的。因此,您不会从系统收到错误,但您仍然错误地配置了您的网络。
如果你想尝试 IPv6,你应该使用 ULA 空间运行本地实验室,或者从以下地址获取 IPv6 隧道:六XS或者飓风电气。
我建议您了解 IP 寻址的工作原理,这样您就知道自己在做什么。此类问答网站非常适合回答您的具体问题,但它们并不适合替代学习基础知识或参加培训课程。尝试以下一些网站和文档来帮助您入门: