我负责管理一家小型组织的网络。由于只熟悉 IPv4,我不确定如何最好地使用 IPv6。
现有的 IPv4 设置
我们有 13 个公共 IPv4 地址,它们都通过 NAT 转换为内部 RFC 1918 地址(其中一个地址为用户提供一对多映射,其余地址为服务器提供一对一映射)。所有传出流量都流经我们 ISP 的(单个)上游网关。我们自己的路由器运行 Linux。
在精美的 ASCII 艺术中,网络看起来类似于此:
client <- LAN -> router <- WAN -> upstream
10.0.0.x 10.0.0.1 <- NAT -> 192.0.2.2 192.0.2.1
IPv6 设置
当然,有了 IPv6,就不需要 NAT,因为我们已经分配了四个 /64 网络(假设为“9:9:9:0::/62”),其中一个包含上游路由器。类似的 IPv6 网络的标准是什么?
A)可能的IPv6网络布局:
client <- LAN -> router <- WAN -> upstream
9:9:9:1::x 9:9:9:1::1 9:9:9:0::2 9:9:9:0::1
那么问题就是,如何让上游网关通过我们的路由器路由数据包。使用 NAT 和 IPv4,这很简单:我们的路由器拥有地址并响应针对它们的 ARP 请求。但现在,上游网关希望在其自己的子网上找到 LAN 主机,但失败了。
1) 我研究过 NDP 代理(ARP 代理的 IPv6 版本),让路由器通告 9:9:9:1/64 中的所有地址。但是,至少 Linux 似乎需要单独的 Netfilter 条目每个 IP 地址,这在 IPv6 中当然是完全不可能的。我是不是漏掉了什么?
2) 似乎可以使用 NDP 路由器通告将我们的路由器通告为 9:9:9:1::/64 的“下游网关”。但无法使其工作。也许我们的 ISP 忽略了路由器通告?
3) 我们是否需要要求我们的 ISP 手动配置其上游网关以使用我们的路由器?这似乎很奇怪,在 IPv6 下是必要的,而在 IPv4 下则不需要。
答案1
上游路由器不应假设其本地接口上有完整的 9:9:9:0/62,而应使用路由器的 IP 和中间网络前缀的长度对其进行编程。他们的路由器需要进行编程,基本与您的路由器一样。
(请注意,WAN 网络不必使用您已分配的 9:9:9:0/62 网络的子集;您的 ISP 可能会为此链路分配特殊的 /126 或 /127 网络,具体细节因 ISP 而异)
您的 ISP 上游路由器始终必须进行编程,IPv4 或 IPv6。“问题”在于大多数 IPv4 部署仅具有外围网络,而大多数 IPv6 网络将完全(正确)路由。