NAT与内网穿透
家用路由器:三合一的”缝合怪”
我们平时在家里用的路由器(TP-Link、华为、小米等),专业上应该叫 家庭网关 (Home Gateway) 或 SOHO路由器。它其实是一个”三合一”设备,承担了三种核心工作。
1. 无线接入点 (AP) — 你家的”微型基站”
痛点: 手机可以接收基站的 4G/5G 信号,但笔记本电脑、智能电视、扫地机器人没有 SIM 卡槽,接收不了基站信号,它们只认识 Wi-Fi。
作用: 家用路由器的天线充当无线接入点 (AP),发射 Wi-Fi 信号,把家里所有不支持 4G/5G 的设备”收拢”起来。
2. NAT 转换器 — 你家的”超级分配器”(最核心)
痛点: 公网 IPv4 地址已经枯竭且极其昂贵。你拉一条宽带,运营商只分配给你家 1 个公网 IP,但你家有 5 部手机、2 台电脑、1 个电视,它们全都要同时上网。
作用: 家用路由器承担了 NAT(网络地址转换) 的重任,就像你家的大管家:
- 给你的电脑、手机分配”内部假名”(如 192.168.1.10)
- 当你的电脑要看视频时,数据包发给路由器
- 路由器把包裹上的发件人”192.168.1.10”撕下来,贴上运营商给的那个唯一合法的”公网 IP”,然后发给小区的光猫,进入光缆
- 等视频数据传回来时,它再根据内部账本(NAT 表),精准地把视频发给你的电脑,而不是电视
NAT 工作原理详解:
【出站】你的电脑看 B 站视频
1. 电脑发出数据包:
源 IP: 192.168.1.10 源端口: 54321
目标 IP: 110.242.68.3 目标端口: 80 (B站服务器)
2. 路由器收到后,修改 IP 层:
源 IP: 192.168.1.10 → 123.45.67.89 (公网IP)
源端口: 54321 → 60001 (路由器分配的新端口)
3. 路由器记录 NAT 表:
192.168.1.10:54321 ↔ 123.45.67.89:60001
4. 发往 B 站的包:
源 IP: 123.45.67.89 源端口: 60001
目标 IP: 110.242.68.3 目标端口: 80
【回程】B 站返回视频数据
1. B 站发回的包:
源 IP: 110.242.68.3 源端口: 80
目标 IP: 123.45.67.89 目标端口: 60001
2. 路由器查 NAT 表,找到 60001 对应 192.168.1.10:54321
3. 路由器修改 IP 层:
目标 IP: 123.45.67.89 → 192.168.1.10
目标端口: 60001 → 54321
4. 转发给你的电脑
NAT 表示例:
| 内网地址:端口 | 公网地址:端口 | 目标服务器 | 状态 |
|---|---|---|---|
| 192.168.1.10:54321 | 123.45.67.89:60001 | 110.242.68.3:80 (B站) | 活跃 |
| 192.168.1.15:54322 | 123.45.67.89:60002 | 183.3.226.35:443 (微信) | 活跃 |
| 192.168.1.20:54323 | 123.45.67.89:60003 | 180.101.49.11:80 (抖音) | 活跃 |
关键点:
- MAC 地址不保留: 数据包每经过一个路由器,MAC 地址都会被替换成下一跳的 MAC 地址(数据链路层的事)
- IP 地址被替换: 内网 IP 被替换成公网 IP
- 端口号是关键: NAT 靠 端口号 区分不同设备的连接,这就是为什么一个公网 IP 可以支持几万个并发连接(端口号范围 1024-65535)
结论: 没有路由器做 NAT,你家永远只能有一台设备上网。
3. DHCP 服务器与交换机 — 你家的”内网居委会”
痛点: 如果手机想把视频投屏到电视上,或者电脑想连接家里的无线打印机,难道还要绕道去几公里外的电信机房跑一圈吗?
作用: 家用路由器内置了交换机 (Switch) 和 DHCP 服务器:
- 每次你连上 Wi-Fi,它瞬间给你分配一个局域网 IP(DHCP 的功劳)
- 它把你家里的所有设备组建成了一个封闭的局域网 (LAN)
- 你手机投屏给电视的数据,到了路由器这里,路由器一看:“哦,目标就在隔壁”,直接就通过 Wi-Fi 转过去了,根本不需要经过外面的光纤大网
家用路由器 vs 运营商路由器
| 对比项 | 家用路由器(家庭网关) | 运营商路由器(纯种路由器) |
|---|---|---|
| 定位 | 小区门口的传达室大爷 | 高速公路枢纽的调度中心 |
| 核心功能 | NAT + Wi-Fi + DHCP + 局域网交换 | 全球路由表查询 + 高速转发 |
| 接口 | 几个网线口 + Wi-Fi 天线 | 密密麻麻的光纤接口 |
| 处理能力 | 每秒几千到几万个包 | 每秒上亿个包 |
| 路由协议 | 通常只有默认路由 | OSPF、BGP 等复杂协议 |
| 典型场景 | 把你家所有设备整编成一支队伍,统一接入互联网 | 把全球数据包指引向正确的国家和城市 |
总结: 光缆和基站把互联网修到了你家门口,而家用路由器,负责把你家里乱七八糟的各种电子设备,整编成一支队伍,统一接入这个互联网。
内网穿透
由于 NAT 的存在,外网无法主动访问内网设备。如果你想在公司访问家里的 NAS,或者让朋友连接你电脑上的游戏服务器,就需要 内网穿透。
常见方案
1. 端口映射(Port Forwarding)
- 在路由器上配置:外网访问 公网IP:8080 → 转发到内网 192.168.1.10:80
- 优点:简单直接
- 缺点:需要路由器管理权限,且公网 IP 可能动态变化
2. UPnP / NAT-PMP
- 设备自动向路由器请求端口映射
- 游戏主机、BT 下载常用
3. 反向代理 / 隧道服务
- 内网设备主动连接到公网服务器(如 frp、ngrok)
- 公网服务器作为中转站
- 优点:不需要公网 IP,不需要配置路由器
- 缺点:需要第三方服务器,有延迟
4. P2P 打洞(STUN/TURN)
- 两个内网设备通过公网服务器协调,建立直连
- 视频通话、游戏联机常用
- 优点:建立连接后不经过中转,延迟低