为局域网分配IPv6 ULA地址的方法

网络工程 ipv6 dhcpv6
2021-08-02 05:17:14

我终于踏上了 IPv6 的征程。但是,我不确定为 LAN 中的每个主机分配唯一本地地址 (ULA) 的最佳方式。

对于 IPv4,我更喜欢有一个 DHCP 服务器,其中包含 MAC 地址和固定 IP 之间的所有映射,因为大多数操作系统默认为 DHCP,因此这意味着这种方式的配置较少。我还有一个小型的动态游泳池供客人使用。

所以我想知道我是否应该运行 DHCPv6 服务器来模仿这种行为,或者我是否可以以某种方式使用无状态 IPv6 配置。

由于我的路由器通告了我的全局前缀并且客户端自动选择了它,是否可以让第二个路由器(我的网络交换机)也通告 ULA 前缀,以便客户端可以自动为自己设置两个IP?这将使他们拥有全局地址和 ULA 地址,并且我不需要在某处运行专用的 DHCPv6 服务器,也不需要打扰 NAT。

如果可能的话,我还想在不同的设备上运行 ULA 前缀广告(而不是现有的 DSL 调制解调器),这样如果调制解调器脱机,它就不会中断本地网络流量。或者理想情况下,我会让调制解调器和交换机都通告相同的 ULA 前缀,这样任何一个都可以在不中断网络的情况下消失或被替换。

这是应该分配 ULA 地址的方式吗?或者你应该在 DHCPv6 和静态分配之间进行选择,还是其他一些我还没有了解的方法?

一些背景,如果你需要的话:

我从我的 ISP(通过 6rd)收到了一个全局前缀,我已经在我的路由器上设置了它,所以 LAN 上的每台 PC 现在都有一个全局 IPv6 地址。这工作正常,但如果我想通过 SSH 连接到另一台机器,我必须以某种方式查找其 IPv6 地址,因为我从 ISP 收到的前缀会定期更改。

为了避免这种情况,我想为每个主机分配一个 ULA 地址,以便我可以将这些地址放在本地 DNS 中,并且从那时起只使用主机名。我不打算使用任何形式的 NAT,因为每台机器已经有一个全局 IP,这只是为了在 LAN 中的机器之间直接访问。

(顺便说一句,链接本地地址对此不切实际,因为每次使用该地址时都必须指定网络接口。即使我将链接本地地址放在 DNS 中,我仍然必须弄清楚是什么每台机器上都会调用网络接口的名称,并在我每次尝试进行传出连接时指定它,即使是通过主机名,ULA 应该避免这种情况。)

我也知道使用无状态 IPv6 配置意味着最终的 IP 包括机器的 MAC 地址,所以如果 NIC 发生变化,我必须更新 DNS,但如果我使用的是 DHCP,我仍然需要更新无论如何,使用新 MAC 配置 DHCP,所以我不认为这有任何或多或少的努力。

1个回答

对此进行试验后,我有了一些发现,最终决定了选择哪条路。

多个子网广告意味着同一子网中有多个 IP

如果您有多个路由器通告相同的前缀,则最终不会出现冗余,而是会在同一前缀/子网中获得多个 IP 地址这就像在同一个 NIC 上为自己分配 192.168.0.1 和 192.168.0.2。它有效,但会导致问题。

例如,我在其中一台机器上运行 DNS 服务器,当客户端通过主 IP 查询它时,它在第二台机器上响应。假设有人试图欺骗他们,客户端会忽略此响应,而是等待他们将查询发送到的同一 IP 上的回复,因此 DNS 完全崩溃。

静态 IP 和路由器广告不混合(对于相同的前缀)

您可能会像我一样认为,在同一子网中分配静态 IP 会阻止从同一前缀自动分配 IP。毕竟,在 IPv4 中,如果您有一个静态 IP 地址,DHCP 不会再给您一个。

这是错误的。您可以获得静态 IP 地址,但由于路由器的广告,您还会在同一子网/前缀中获得第二个 IP 地址。

最终结果是同一子网中有两个 IP,导致与上述相同的问题。

宣传不同的前缀

最后,唯一有效的解决方案就是这个。不过,它需要放弃一些 IPv4 想法。

我的目标是用 IPv6 模拟我的 IPv4 设置。也就是说,分配一些机器固定地址,其余的都是动态的,同时让一切都尽可能健壮。希望不再需要运行 DHCP 服务器。

通过让路由器通告 ULA 前缀,所有主机都将自行分配其地址,就像使用 DHCP 一样。但是您不能让多个路由器通告该前缀。也许在一些更高级的设置中,如果注意到主路由器已停止广告,您可以让备用路由器接管,但目前这是不可能的。

但是,您不必拘泥于将固定和动态 IP 放置在与 IPv6 相同的子网中。ULA 地址可以指定子网(最多 65536 个),所以我最终使用了它,以便 /48 ULA 前缀中有两个 /64 子网。路由器为无状态配置(相当于 DHCP)通告一个,而另一个不在任何地方通告并用于在每个主机上配置的静态 IP。您甚至可以使用第三个 ULA 子网作为备用路由器,以防主要路由器停止通告其 ULA,以确保您的主机始终具有站点范围的可路由地址,即使没有可用的全局 IP。

由于 IPv6 的神奇之处,当这一切都发生在同一 LAN 网段内时,无需设置任何路由规则。每个人都会得到一个动态地址,固定地址的机器也会得到一个静态IP,但是由于它们在不同的/64子网中,所以几乎没有混淆。

唯一的问题是那些具有固定 IP 的主机应该始终使用固定 IP 来相互通信。如果从失去动态 IP 的主机建立到动态 IP 的连接,它将改为从剩余的静态 IP 建立连接 - 这意味着多宿主服务器将使用自己的静态 IP 进行回复,而您将再次有不匹配。

但是只要具有静态 IP 的主机始终使用静态子网相互通信,就永远不会有问题。多宿主主机当然也可以毫无问题地与动态子网中的主机通信。