我有一个仅支持 IPv6 的网络,现在我正尝试添加 NAT64 网关。NAT64 不在我的默认网关上,因为它打算使用与默认网关不同的 ISP。
默认网关已使用 进行通告radvd
,并且 IPv6 连接正常运行。但是 ISP 提供的 NAT64 不可靠,因此我想配置自己的 NAT64。
在运行 NAT64 的机器上我创建了以下radvd
配置:
interface enp4s0
{
AdvSendAdvert on;
AdvDefaultPreference low;
route 64:ff9b::/96 {
AdvRoutePreference high;
};
};
但它不起作用。在客户端机器上,我只看到路由default
,而看不到64:ff9b::/96
到 NAT64 网关的路由。
答案1
该radvd
配置确实有效,但 Ubuntu 14.04 充当什么RFC 4191呼叫 B 型主机。
RFC 4191中定义的类型如下:
- A 类 - 不支持偏好或更具体的路线
- B 类 - 支持偏好但不支持更具体的路线
- C 型 - 支持偏好和更具体的路线
Ubuntu 14.04 上的版本radvd
可以配置为同时发送首选项和更具体的路由。但是当 Ubuntu 14.04 收到此类路由时,它将忽略更具体的路由,而只关注首选项。
解决此问题的一种方法是将主机升级到 Ubuntu 16.04(或更高版本),它将充当 C 型主机,完全支持更具体路由的广告。
为了向后兼容 A 型和 B 型主机,RFC 4191 建议使用重定向消息。如果网络上的所有 IPv6 路由器都有完整的路由表,则当网络上的主机对数据包使用错误的网关时,它们可以发送重定向消息。