我在位置 A 有一堆仅支持 IPv6 的主机。为了让它们连接到仅支持 IPv4 的主机,我在位置 B 的双栈主机上设置了一个 NAT64 网关。现在,我希望位置 A 的仅支持 IPv6 的主机将网络的所有流量转发64:ff9b::/96
到位置 B 的 NAT64 网关。
当我尝试添加这样的静态路由时,收到以下错误消息:
$ sudo ip -6 route add 64:ff9b::/96 via 2001:db8::
RTNETLINK answers: No route to host
我需要做什么才能将网络流量转发64:ff9b::/96
到主机2001:db8::
?
答案1
一般情况下,您不能直接通过其他网络上的主机添加路由。路由通过改变鏈接層数据包的地址,并且根据定义这些地址只能在本地网络内设置——一旦数据包需要通过路由器,数据包中就不再有任何地方可以指定所需的网关。
(IPv6 确实有“路由头”,类似于 IPv4 有“源路由”选项,但最接近你想要的东西是 RH类型 0– 已从实施中删除,因为存在重大安全风险,与之前的 IPv4 源路由完全一样。其余 RH 类型(例如分段路由)需要沿整个路径进行设置。)
因此,为了使其工作,您需要建立一个隧道(例如 GRE 隧道或 WireGuard VPN),以远程网关作为隧道端点,然后通过该隧道路由您的数据包。