maybeonly
2023-03-09 10:43:05 +08:00
A. 显然不是。
————
Q. 本质上说,ipv4 为什么要 nat 啊?
A. 最常见的理由是,公网 ip 不够,需要共享同一个公网 ip 。
Q. 那么,为什么不能直接用 192.168.x.x 的 ip 上外边的网站,而一定要 nat 呢?
A. 答案是,因为 192.168.x.x 不是公网 ip 。
Q. 那么,为什么他不是公网 ip ?
A. 因为 RFC 里写了,他不是公网 ip 。
Q. 那我用一段 RFC 里规定的公网 ip 行不行,比如我把我家内网设置为 11.22.33.0/24 ?
A. 答案是仍然需要 nat ,本质是这些 11.22.33.x 的 ip ,别人找不到你;而运营商给你的那个公网 IP ,别人能找到你。
Q. 那他们为什么不看到 11.22.33.x 就来找我呢?
A. 因为你没有宣告路由,而且你不是这段 ip 的合法拥有者,别人也不会接受你的宣告。
Q. 那么,如果我买了 /租了一段合法的 ip ,然后花钱让运营商帮我宣告,我是不是就可以不用 nat 了?
A. 只从技术上来讲,是的。很多 IDC 商家就是这么做的,他们的路由器到运营商的链路上,通常有另一组(或多组)点对点的 IP 地址,和局域网内的地址完全不同,不用于上网只用于互联。
Q. 那么如果运营商给我分了一段 ip ,还帮我宣告了,我是不是就不用 nat 了?
A. Bingo ! 2409:8a28:c1f:80c0:a0d3:9bb8:e792:6007 所在这一段(可能是 /64 或者更大)就是运营商帮你宣告了,访问这一段的数据包都会转发给你(被防火墙干掉的除外)。这些数据包是通过 2409:8a28:cf1:4ea7:3655:94ff:fe87:db49 这个地址转发的(运营商到你这一段通常是 dhcp-pd )。
Q. 那运营商为什么要这么干,是不是剥夺了我做 nat 的权利?
A. 并没有。他这么干除了成本原因,也是给了你自己选择 nat 或者不 nat 的权力。如果你一定要,你仍然可以把出去的请求 nat 到你拥有的任何合法 ip 地址上。你所有对外访问的 v6 流量都用 2409:8a28:c1f:80c0::做源 ip ,完全可以实现。