在过去十年中,NAT 允许我们做的事情之一就是将物理服务拆分到不同的服务器上,同时隐藏在单个接口后面。
例如,我example.com
在 上有一个 NAT 后面192.0.2.10
。我将端口转发:80
到:443
我的 Web 服务器。我还将端口转发:25
到我的邮件服务器、:3389
终端服务器和:8080
下载种子的计算机的 Web 界面,故事还在继续。
因此,我有 5 个端口转发到 4 台不同的计算机example.com
。
然后,我去获取一些整洁的 IPv6。我分配了example.com
一个 IPv6 地址2001:db8:88:200::10
。这对我的网站来说很棒,但我想访问 来example.com:8080
获取我的种子,或者example:3389
登录到我的终端服务器。
由于没有 NAT,我该如何使用 IPv6 来实现这一点。当然,我可以为每个新服务创建一堆新的 DNS 条目,但随后我必须更新所有习惯于只需键入example.com
即可访问网站的客户端或者终端服务器。我的用户比两块砖头还笨,所以他们不会记得连接到rdp.example.com
。
我有哪些选项可以使 IPv6 保留 NAT 样式的功能?
如果你还没搞明白,上述场景对我来说并不是真实的场景,或者对任何人来说都不是真实的场景然而但它最终一定会发生。你知道,有了 DevOps 和一切。
答案1
我们最后有机会离开互联网最大的错误之一被扔进历史的垃圾箱吧。别把它搞砸了。
强烈鼓励您的客户别再担心,学会喜欢没有 NAT 的 IPv6并习惯于输入类似的东西
rdp.example.com
(他们早就应该这样做了;你所描述的场景在我看来是极其糟糕的设计)。我们有部分主机名因为各种服务位于网络上的不同地址;这种您早已习惯的 NAT 缺陷,使您能够在同一主机名上寻址实际上位于网络上不同地址的各个服务,这种缺陷将会而且必须消失。开始帮助您的客户过渡到新常态提供现在就将这些主机名纳入其中并鼓励使用它们,即使您仍然只有 IPv4。这将使几乎所有人的过渡都变得更容易。
如果你必须为无法更新的少数遗留应用程序转发端口,或者有人不把自己的名字写在显示器上的便签上就记不住,那么你仍然可以在第 7 层使用以下工具来完成此操作:
xinetd
和socat
。Socat 可以转发 TCP 和 UDP 连接,因此它可能会更有用。
最近在超级用户上提出了一个类似的问题,其答案也大致相同:如何在 m0n0wall 中端口转发 IPv6?