Hexo


  • 首页

  • 归档

无处不在的NAT

发表于 2018-05-20

NAT是网络地址转换(Network Address Translation)的缩写。通俗的理解就是将网络数据包从一个地址转换为另外一个,转换的过程中保持数据包的实际数据(payload)保持不变。如果将源地址进行转换则称为SNAT(source NAT);转换目标地址则是DNAT(Destination NAT);如果同时转换目标地址和源地址则称为Twice NAT。

不同的NAT有不同的使用场景。在目前的网络环境中,NAT几乎已经无处不在,尤其是SNAT。以现在我所处的家庭宽带环境为例说明一下NAT的强大存在。我所用的电脑IP地址是10.0.1.4,登陆到接入路由器上显示获得的IP地址是10.64.93.240。为了清晰了解数据包的来龙去脉,使用traceroute工具观察本地到114.114.114.114经过哪些网络节点:

1
2
3
4
5
6
7
8
9
10
11
traceroute to 114.114.114.114 (114.114.114.114), 64 hops max, 52 byte packets
1 10.0.1.1 (10.0.1.1) 2.748 ms 1.135 ms 1.787 ms
2 192.168.2.1 (192.168.2.1) 5.489 ms 3.008 ms 1.864 ms
3 192.168.1.1 (192.168.1.1) 7.783 ms 9.514 ms 2.695 ms
4 100.64.0.1 (100.64.0.1) 17.273 ms 4.184 ms 5.410 ms
5 218.19.193.113 (218.19.193.113) 6.402 ms 7.097 ms 7.775 ms
6 121.8.134.105 (121.8.134.105) 5.951 ms 8.907 ms 13.192 ms
7 202.97.29.74 (202.97.29.74) 43.473 ms
202.97.122.250 (202.97.122.250) 33.322 ms
202.97.40.110 (202.97.40.110) 29.353 ms
......

从上面的输出可以清晰看出:假如本地要向地址114.114.114.114通讯,需要经过一系列节点。其中1、2、3都是家里的路由器。为什么用3个路由器其实也很无奈。电信提供的那个光纤拨号的设备本身具有路由功能,但是只有两个网口,Wi-Fi信号很差并且没有5G频段。所以就把之前不用的旧四口路由器拿了过来,但这个路由器又不能工作在桥接模式。这两台路由器都在客厅,就拉了一根网线到房间,房间有另外一个路由器,所以就有了3个路由器。每次经过路由器都要进行一次NAT。

第四跳的地址是100.64.0.1,这是一个比较特殊的保留地址。100.64.0.0/10网段被用作网络运行商NAT地址段,范围从100.64.0.0~100.127.255.255,共计4,194,304个IP地址。这个地址段被运营商视作内网,因此拨号分配到的地址是10.64.93.240。所以经过100.64.0.1时也需要做一次NAT。

为了知道真正的公网地址,可以访问诸如http://ipip.net http://ip.cn http://ip138.com 之类网站。显示的结果是202.97.40.110。因此发送到114.114.114.114的数据包至少要进行5次NAT。三次在家庭路由器,一次在100.64.0.1, 一次在202.97.40.110。第5跳和第6跳有没有NAT比较难以判断。

由于IPv4地址匮乏,NAT非常普遍。除了一些具有公网地址的服务器,其他设备进行网络连接都要进行几次转换。这些设备包括通常的家庭网络设备、手机、公司内网设备等。如果一个设备的地址是192.168.x.x, 10.x.x.x几乎可以断定是通过NAT联网。SNAT很大程度上缓解了IPv4地址紧缺的困境,所以SNAT应用最为广泛。

测试

发表于 2018-05-18

测试发表

Hello World

发表于 2018-05-18

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

John Doe

3 日志
2 标签
© 2018 John Doe
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4