IPv6 和 NAT,路由至多个 ISP

IPv6 和 NAT,路由至多个 ISP

目前,我有一个不错的设置,使用私有 IPv4 地址空间和从两个 ISP 到互联网的上行链路。借助 NAT,我只需关闭其中一个接口,互联网访问仍可继续。

我一直在思考如何在 IPv6 中复制此配置。从我读到的内容来看,“NAT 已死”,我真的很高兴,我不喜欢它(有时甚至完全讨厌它),但它有它的用处。

换个角度来说:这是一家小公司,网络中有 30 台计算机,我们没有预算来购买支持 SLA 和 BGP 的高级链接。所以我思考我们自己的 RIPE-NCC 的 IPv6 子网将无法工作。

另一方面,拥有两个独立链接非常有用。有没有办法在 IPv6 中进行 1 对 1 NAT(我使用 Linux 机器作为路由器)?我该怎么做?它是否允许我继续使用两个 ISP(前提是它们都支持 IPv6)。

当我从 ISP 获得子网时,我需要一个面向 Internet 的 IP 地址(以便能够将数据包路由到我的 ISP)和一个面向我的 LAN 的 IP 地址。在 IPv6 中应该可路由。这是否意味着我必须从我的 ISP 获得至少 2 个子网?或者 ISP 需要提供一个 /48 子网,而不仅仅是两个 /64 子网?(并将第一个 /64 子网专用于路由器内通信。)如果我从 ISP 只获得一个 /64 子网该怎么办?

总结一下:

问题

  • 我可以在 Linux 中对 IPv6 进行 1 对 1 NAT 吗?我该怎么做?
  • 我是否需要接收至少两个 /64 子网才能在防火墙后面的 LAN 中舒适地设置路由?
  • 如果我从 ISP 获得单个 /64 子网,是否有办法在我的 LAN 中拥有公共地址?

答案1

如果没有 BGP 和“商业级”ISP,多宿主将无法为您服务。它可以使用 IPv6 进行 1 对 1 NAT。但我不知道如何在 Linux 上配置它。不过还有另一种方法:

您将从两个 ISP 获得一个前缀。可能是 /56 或 /48。在这种情况下,到 ISP 的链路是否获得自己的地址并不重要。IPv6 可以完美地与无编号上行链路配合使用。然后您要做的就是将每个 ISP 的路由器连接到您的 LAN,并且两者都应该在您的 LAN 上从他们自己的 ISP 通告一个 /64。因此,您的所有系统都会获得(至少)两个公共 IPv6 地址:每个 ISP 一个。您可以为您的主要 ISP 的通告赋予更高的优先级。当到 ISP 的链路断开时,相应的路由器应该撤回其通告,您的系统将开始使用另一个链路。

唯一的缺点是当一个 ISP 不接受来自另一个 ISP 的源地址的数据包时。如果是这种情况,则路由器应检查源地址并将具有错误源地址的流量转发到另一个路由器。

如果您从 ISP 仅获得一个 /64,那么您可以在 LAN 上使用它。但他们应该给您更多。多年来 /48 曾是标准,而 /56 如今正变得越来越常见,但您获得的绝对应该不止 /64。

答案2

解决方案与 IPv4 相同 - 您必须将专用网络隐藏在具有两个 WAN 链接的 NAT 后面。

唯一本地地址 (ULA) 是“IPv6 的专用网络”。网络前缀转换 (NPt) 是“IPv6 的 NAT”。为您的网络分配一个内部 IPv6 唯一本地地址。虽然这不是必需的(如果网络需要与另一个专用网络合并,则 ULA 发生冲突的可能性比 IPv4 子网发生冲突的可能性要小得多),但注册您的 ULA 至少在理论上是有好处的。在每个 WAN 接口上启用 NPt,向 NPt 提供您的内部 ULA 和每个提供商的 IPv6 前缀。您自己的 RIPE-NCC 的 IPv6 子网无法工作,原因与您自己的 IPv4 子网无法工作的原因相同(您缺乏 BGP 支持的预算)。

NPt 对我来说效果很好。我的目的只是在我的内部 IPv6 寻址方案和 ISP 寻址方案之间提供独立性,这样如果我切换 ISP,只需要更改 ISP 前缀,而不是我的整个网络配置。理论上,如果协议将不可路由的地址发送到远程计算机,然后尝试重新连接,它将遭遇与 IPv4 NAT 相同的问题。

答案3

有没有办法在 IPv6 中实现一对一 NAT(我使用 Linux 机器作为路由器)?

这被称为“网络前缀转换”,是的,Linux 确实支持它。您可以使用“mangle”表中的“SNPT”和“DNPT”目标(“nat”表仅用于有状态 NAT)。

我该怎么做?

使用 SNPT 目标更改传出数据包的源前缀,使用 DNPT 目标更改传入数据包的目标前缀。由于它是无状态的,因此您必须明确地在两个方向上进行转换。

您可以在您的局域网上使用一个 ISP 的地址并为另一个 ISP 进行转换,或者您可以在您的局域网上使用 ULA 地址并为两个 ISP 进行转换。

它是否允许我继续使用两个 ISP(假设它们都支持 IPv6)。

是的。

显然,与 V4 NAT 一样,您需要确保路由相当稳定,因为 ISP 交换机会中断已建立的连接。

我一直在思考如何在 IPv6 中复制此配置。据我所知,“NAT 已死”

IPv6 纯粹主义者不喜欢它,但 Linux 最近为 IPv6 添加了状态 NAT 实现。因此,如果您愿意,您可以将整个网络隐藏在单个 V6 IP 后面。

我是否需要接收至少两个 /64 子网才能在防火墙后面的 LAN 中舒适地设置路由?

如果您在机器上放置公共 IP 或使用 NPT,那么您将需要子网来执行此操作。

据我所知,消费者/小型企业 ISP 的 IPV6 典型场景是,它们为 CPE 路由器的互联网端分配一个地址。然后,它们使用 DHCPv6 前缀委派为客户分配一个前缀,供其在其网络上使用。典型的做法是为每个客户分配一个 /56。

不幸的是,据我所知,至少有一家 ISP 坚持要求您使用 ISP 提供的 CPE 路由器,而该路由器目前不支持前向前缀委派。因此,如果您想将自己的防火墙放在他们的路由器后面,那么您会陷入困境 :(

相关内容