返回文章列表

文章

关于NAT

目录
  1. 一、NAT 的全称与本质
  2. 二、为什么会有 NAT
  3. 三、NAT 的工作原理
  4. 四、NAT 的类型(对 iroh 很重要)
  5. 五、NAT 对 iroh 的影响
  6. 六、简单类比

一、NAT 的全称与本质#

  • NAT = Network Address Translation(网络地址转换)
  • 本质:把私有网络的 IP 地址映射到公网 IP,允许多个内网设备共用一个公网 IP。

二、为什么会有 NAT#

  1. IPv4 地址不足
    • IPv4 地址有限(约 42 亿个)
    • 很多设备都需要上网
    • NAT 让多个设备共享同一个公网 IP
  2. 安全与隔离
    • 内网设备默认不能直接被外网访问
    • 防火墙和 NAT 提供了天然隔离

三、NAT 的工作原理#

假设你家里有两台设备:

设备A (192.168.0.2)  ─┐
设备B (192.168.0.3)  ─┤  NAT 路由器
公网 IP: 203.0.113.5  ─┘
  • 内网设备发出请求时:
    • NAT 会把源地址(192.168.0.2)改成公网 IP(203.0.113.5)
    • 并记录端口映射,例如 50000 → 203.0.113.5:40001
  • 返回的数据包:
    • NAT 根据映射把数据包送回正确内网设备

这就解释了为什么内网设备能访问互联网,但互联网设备通常不能主动访问内网。


四、NAT 的类型(对 iroh 很重要)#

  1. Full Cone NAT(全锥型)
    • 内网 IP + 端口 → 公网 IP + 端口 是固定的
    • 任意外部主机都能访问这个映射端口
  2. Restricted / Port Restricted NAT(受限型 / 端口受限型)
    • 外部主机只有在内网设备主动发过包后才能访问
  3. Symmetric NAT(对称型)
    • 每次外发包到不同目标 IP / port 都会分配不同映射
    • 最难穿透

iroh 要做内网穿透,实际上就是在“试探 NAT 类型”,找出可用路径。


五、NAT 对 iroh 的影响#

  1. 无法直接用 IP 联系内网节点
    • 如果你用传统 socket,你需要知道对方公网 IP + 映射端口
    • NAT 对外隐藏了你的真实位置
  2. 端口映射可能随时变
    • DHCP、重新连接 WiFi,端口映射可能改变
    • Endpoint 必须动态维护
  3. 穿透方式依赖 NAT 类型
    • UDP 打洞(UDP hole punching)
    • Relay(当 NAT 太严格时)

所以 iroh 的 Endpoint 才需要维护“多条可达路径”和“中继 fallback”。


六、简单类比#

  • NAT = 家里的门卫
    • 你家人可以出去找别人
    • 别人很难直接进你家
    • iroh 的穿透机制 = 教别人“怎么通过门卫找到你”,或者给门卫一条临时通道