NAT 的工作原理
设备把流量发往局域网外时,NAT 路由器会将私有源地址替换为公有地址。在常见的多对一模式下,路由器还会分配不同的源端口,并记录这条映射。
设备:51514 → NAT 路由器 → 源地址 198.51.100.25:62001 → 互联网
响应到达 198.51.100.25:62001 后,路由器会查找对应记录,将目标地址还原为设备的私有地址,再转发数据包。每条记录都会保存转换前后的地址-端口元组及协议,并根据协议状态或空闲超时失效。
这种共享机制有助于节省公有 IPv4 地址。IPv6 的地址空间大得多,因此通常不太需要这种机制。
NAT 的类型
- **静态 NAT:**在私有地址和公有地址之间保持固定的一对一映射。
- **动态 NAT:**从地址池中临时分配公有地址。以后再次连接时,映射可能不同。
- **端口地址转换:**通过分配不同端口,让多台设备共享同一个公有地址。也称 PAT、NAPT 或 NAT overload。
CGNAT 在 ISP 网络内采用类似的共享机制。多个客户对外可能显示为同一个公有地址。
NAT 与正向代理
两者都可能改变下游看到的源地址,但处理流量的方式不同。
| 方面 | NAT | 正向代理 |
|---|---|---|
| 流量处理 | 重写数据包头 | 接收并转发连接 |
| 客户端设置 | 通常由网关处理 | 通常在应用或操作系统中配置 |
| 网站看到的地址 | NAT 网关的公有地址 | 代理出口地址 |
正向代理 是为特定流量主动选用的中间节点。NAT 通常是网关自动应用于路由流量的功能。
NAT 对代理连接的影响
配置代理后,链路为 device → NAT gateway → proxy → website。代理通常看到 NAT 网关的公有地址,网站则看到代理出口地址。
- **源 IP 认证:**如果代理使用 IP 白名单,应将 NAT 网关的公有地址加入白名单,而不是设备的私有地址。
- **空闲连接:**NAT 映射可能会在一段时间没有活动后失效。长时间保持的代理隧道可能因此断开,需要保活机制或重新连接。
- **入站访问:**连接代理通常属于出站连接,不需要端口转发。若在 NAT 后托管代理,则需要明确配置映射和相应的防火墙规则。
常见问题
使用 NAT 时,网站能看到我的 IP 地址吗?
能,但网站看到的是 NAT 网关的公有地址,而不是设备的私有地址。如果使用代理,网站通常会看到代理出口地址。
NAT 是防火墙吗?
不是。NAT 会转换地址和端口,但不会执行防火墙的安全策略。家用路由器通常会同时使用 NAT 和有状态防火墙,由防火墙拒绝未经请求的入站连接。
IPv6 需要 NAT 吗?
如果只是为了节省地址,通常不需要。IPv6 设备可以使用全局可路由地址,由防火墙控制入站访问。不过,确实存在 IPv6 到 IPv6 的地址转换技术。