第 4 课,共 4 课 · 6 分钟
你的路由器和 NAT
为什么家里的每一台设备都能通过同一个公有地址同时联网,以及这种安排能保护你免受什么、又不能保护你免受什么。
查一下你自己的公有 IP 地址,你会发现家庭网络里的每一台设备——手机、笔记本电脑、智能音箱——显示的都是同一个数字。但如果查看每台设备自己认为的地址,你会发现不一样的东西:一个像 192.168.1.12 这样的私有地址,来自 RFC 1918 为本地网络保留的范围,本课程第一课中介绍过。在这两者之间架起桥梁的设备,就是你的路由器,它使用一种叫作网络地址转换(NAT)的技术。
NAT 实际上做了什么
MDN 词汇表给出了直白的定义:NAT“是一种让多台计算机共享一个 IP 地址的技术”,做法是“为本地网络上的每台计算机分配唯一的地址,并调整网络流量,把数据发送到正确的地方”。具体来说,当你的笔记本电脑向一个网站发起连接时,路由器会重写这个出站数据包,让它看起来像是来自路由器自己的公有地址,并保留一张表,把这条连接与你笔记本电脑的私有地址和端口关联起来。当回复抵达时,路由器会在这张表中查找,并把它转发给正确的设备。
这正是 NAT 存在的根本原因:IPv4 大约 43 亿个地址,永远不可能撑到让每个家庭里的每部手机、每台笔记本电脑和每个智能设备都拥有一个公有地址,而互联网服务提供商通常也只会给一个家庭分配一个公有地址。NAT 让一个拥有十几台设备的家庭,能够共享这唯一一个地址,而不必让每台设备都拥有自己的地址。
NAT 附带为你做了什么
NAT 最初是为了解决地址短缺的问题而设计的,并不是为了保护你的网络安全,但它带来了一个有用的附带效果。由于 NAT 后面的设备只拥有私有地址,公开互联网上的一台计算机无法像你的笔记本电脑直接持有公有地址那样,简单地对它发起一次新的、未经请求的连接:它根本没有一个公有地址可以到达,路由器的转换表中也没有匹配的条目可以把这条连接转发过去。你自己设备请求过的流量,会因为路由器记得这个请求而被放行进来;而没有人请求过的流量,通常也就无处可去。
NAT 做不到的事
这种附带的过滤效果并不等同于安全,值得精确地厘清两者的区别:
- 对于你自己设备主动发起的出站连接,NAT 什么都不会做。如果你笔记本电脑上的一个应用连接了某台服务器,NAT 会欣然放行返回的回复;至于这个应用最初是否就应该和这台服务器通信,它没有任何立场。
- NAT 不会检查或加密内容。任何以明文发送的内容,对中间的网站和网络来说,其可读程度和没有 NAT 时完全一样。
- NAT 不能替代防火墙。许多路由器会在运行 NAT 的同时,也运行一个有状态防火墙,真正负责跟踪上一课中描述的握手过程、决定放行什么的,是这个防火墙,而不是 NAT。
- 共享同一个公有地址的设备,仍然可以通过其他方式被逐一区分开来,比如账户、Cookie,或者它们访问的网站所使用的设备标识符。
简而言之:NAT 是你全家共享一个地址的原因,而作为一个附带效果,它也是随机的入站连接通常无法未经邀请就抵达你家中某台特定设备的原因。但对于你自己的设备选择发送出去什么内容,或者你出站连接下游的任何一方,它什么都没有说明。
要点
- NAT 让私有网络上的多台设备共享一个公有 IP 地址,在连接经过路由器时对其进行重写和跟踪。
- NAT 存在的主要原因,是 IPv4 没有足够的地址让每台设备都拥有自己的公有地址。
- 作为一个附带效果,由于没有公有地址直接指向你的设备,外部设备很难对其发起一次未经请求的直接连接。
- NAT 不会检查、过滤或加密你自己设备发出的流量;那是防火墙的工作,不是 NAT 的工作。
- 共享一个公有地址,并不能让各台设备在它们所连接的网站面前保持匿名。
自我检测
1. 根据 MDN 的说法,NAT 做了什么?
- 加密所有离开路由器的流量
- 通过把流量转换到正确的本地设备,让多台计算机共享一个 IP 地址 — 正确。
- 为每台设备分配一个唯一的公有 IP 地址
- 自动屏蔽所有入站连接
MDN 把 NAT 描述为一种通过调整流量、让其抵达正确设备,从而让多台计算机共享一个 IP 地址的技术。
2. 为什么家用路由器通常会使用 NAT?
- 为了让 Wi-Fi 更快
- 因为 IPv4 没有足够的地址,无法让家里的每台设备都拥有自己的公有地址 — 正确。
- 因为加密要求必须这样做
- 为了屏蔽钓鱼网站
IPv4 大约 43 亿个地址,不足以让全世界的每台设备都拥有一个公有地址,因此 NAT 让一个家庭共享 ISP 分配的单一地址。
3. 关于 NAT 和入站连接,以下哪种说法是准确的?
- NAT 会主动扫描并屏蔽恶意流量
- 由于 NAT 后面的设备没有公有地址,外部设备通常无法对它们直接发起一次新的、未经请求的连接 — 正确。
- NAT 会让网络上的每台设备在它访问的网站面前都变得不可见
- NAT 会阻止你自己的应用发起任何出站连接
NAT 的转换表只会转发对你自己设备所请求连接的回复;外部人员没有一个可以直接瞄准的公有地址。
4. NAT 无法防范什么?
- 你自己设备通过它发起的连接所发送的内容,包括任何未加密的内容 — 正确。
- IPv4 地址短缺
- 路由器需要转换地址这件事
- 多台设备共享一个公有地址
NAT 对你自己设备选择发送出去的内容既无法查看,也无法控制;它只负责转换和跟踪地址,不会检查或保护内容。
用 FireAI 动手做
在你自己的 Mac 上练习这节课的内容。
来源
- RFC 1918: Address Allocation for Private Internets
- MDN Web Docs: NAT (Glossary)
- Cloudflare Learning: What is my IP address?
在你的 Mac 上实践
免费试用全部功能 17 天,无需绑定银行卡。