IPv6和NAT,路由到多个ISP

目前我有一个很好的设置使用私人IPv4地址空间和上行链路从两个ISP到互联网。 由于NAT,我可以取下其中一个接口,因特网访问仍然存在。

我一直在想如何在IPv6中复制这个configuration。 从我读到的是“NAT已经死了”,我真的很高兴,我不喜欢它(有时甚至是讨厌它),但它有其用处。

从一些angular度来看:这是一个小公司,networking中有三十台计算机,我们没有SLA和BGP支持的花式链接的预算。 所以我认为我们自己的RIPE-NCC的IPv6子网将无法工作。

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

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

总结:

问题

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

没有BGP和“商业类”的ISP多宿主是不会为你工作的。 使用IPv6可以执行1对1的NAT。 我不知道如何在Linux上configuration它。 还有另一种方法:

您将从两个ISP获得一个前缀。 可能是a / 56或a / 48。 在这种情况下,如果连接到ISP的链接获得了自己的地址,则无关紧要。 IPv6可以与无编号的上行链路完美配合。 然后你要做的就是从每个ISP连接一个路由器到你的局域网,并且两个都应该在你的局域网上从他们自己的ISP上公布一个/ 64。 所以你所有的系统至less得到两个公共的IPv6地址:每个ISP有一个。 您可以将主要ISP的广告放在更高的优先级上。 当到ISP的链路断开时,相应的路由器应该撤销其广告,系统将开始使用另一个链路。

唯一的缺点是一个ISP不接受来自另一个ISP的源地址的数据包。 如果是这样,那么路由器应该检查源地址,并将具有错误源地址的stream量转发到另一个路由器。

如果你只从你的ISP获得一个/ 64,那么你可以在你的局域网上使用它。 他们应该给你比这更多。 A / 48是过去多年的标准,现在56年代已经变得更加正常,但是你肯定会得到超过64分之一。

解决scheme与IPv4相同 – 您必须使用两个WAN链接隐藏NAT后面的专用networking。

唯一的本地地址(ULA)是“IPv6专用networking”。 networking前缀转换(NPt)是“IPv6的NAT”。 为您的networking分配内部IPv6唯一本地地址。 虽然不需要这样做(如果networking需要与另一个专用networking合并,碰撞ULA的机会远远小于冲突的IPv4子网),但注册ULA至less在理论上是有益的。 在每个WAN接口上启用NPt,为NPt提供内部ULA和每个提供商的IPv6前缀。 您自己的IPv6子网从RIPE-NCC将不会出于同样的原因,您自己的IPv4子网不会工作(您缺乏BGP支持的预算)。

NPt对我来说工作得很好。 我的意图只是提供我的内部IPv6寻址scheme和我的ISP之间的独立性,以便如果我切换ISP只有ISP前缀需要更改,而不是我的整个networkingconfiguration。 从理论上讲,如果协议将不可路由的地址发送给远程机器,然后尝试连接回去,它将会遭遇与IPv4 NAT相同的问题。

有没有办法在IPv6中执行1对1的NAT(我使用Linux机器作为路由器)?

这就是所谓的“networking前缀转换”,是的,Linux不支持它。 在“mangle”表中使用“SNPT”和“DNPT”目标(“nat”表仅用于有状态NAT)。

我该怎么做?

您使用SNPT目标来更改传出数据包的源前缀,并使用DNPT目标更改传入数据包的目标前缀。 既然它是无状态的,你必须明确地翻译两个方向。

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

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

是。

很显然,与V4 NAT相比,您将需要确保路由相当稳定,因为ISP交换机将中断已build立的连接。

我一直在想如何在IPv6中复制这个configuration。 从我读到的是“NAT已经死了”

IPv6纯粹主义者不喜欢它,但是最近linux为IPv6添加了一个有状态的NAT实现。 因此,如果您愿意,您可以隐藏整个networking在一个V6 IP之后。

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

如果您在机器上使用公共IP或使用NPT,则需要使用子网。

Afaict IPV6在消费者/小型商业ISP上的典型场景是,他们将一个地址分配给CPE路由器的互联网端。 然后他们使用DHCPv6前缀委托来为客户分配一个前缀以在他们的networking上使用。 典型的是为每个客户分配一个/ 56。

不幸的是,至less有一个ISP意识到我坚持使用ISP提供的CPE路由器,此路由器目前不支持前缀代理。 所以,如果你想把自己的防火墙放在他们的路由器后,你有点卡住:(