为什么内网能访问外网却反向不通?(内网只能访问某些网站) 99xcs.com

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

“我们办公室几百台电脑都用一个公网IP上网,是怎么做到的?”

“我在家开了一台服务器,为什么外面访问不了?”

“内网可以刷网页、看视频,但别人却连不上我的电脑?”

这些日常网络现象的背后,都离不开一个关键技术:

NAT—— 网络地址转换

它让成千上万的内网设备,通过少数几个公网IP访问互联网。但同时,它也带来了“外网无法主动访问内网”的限制。

今天就用最直观的方式,带你彻底搞懂NAT的工作原理,并解答:

  • 为什么内网能访问外网?
  • 为什么外网不能直接访问内网?
  • 如何让外网访问内网服务?

一、背景:IPv4地址枯竭

IPv4地址总共约43亿个,早已分配殆尽。而每个手机、电脑、摄像头都需要IP,怎么办?

NAT的使命

多个内网私有IP,共用一个或少数几个公网IP上网,节省公网地址资源。

✅ 私有IP范围:

  • 10.0.0.0 ~ 10.255.255.255
  • 172.16.0.0 ~ 172.31.255.255
  • 192.168.0.0 ~ 192.168.255.255
二、NAT如何工作?

想象你住在一个大院里(内网),但快递只送到门卫(路由器)。

你想网购并收货:

  1. 你下单(内网 → 外网)
    • 你写收货地址:“张三,门卫代收”
    • 快递员记下:“张三的包裹放门卫”
  2. 快递送达(外网 → 内网)
    • 快递员把包裹给门卫
    • 门卫查记录:“这个是张三的”
    • 门卫把包裹转交给张三
  3. 如果有人想寄东西给你
    • 对方只知道“门卫”地址,不知道你
    • 没登记 → 门卫不会帮你收

这就是NAT的核心逻辑:出去时登记,回来时查表

三、技术实现:NAT转换表

当内网主机访问外网时,路由器会创建一条NAT映射表

数据包流转过程:1. 内网 → 外网(请求)

[PC] → 目的: 8.8.8.8:53, 源: 192.168.1.100:5001

[路由器NAT]

- 记录:192.168.1.100:5001 ↔ 202.96.1.1:10001

- 改写源IP: 202.96.1.1:10001

[外网服务器] ← 收到:目的: 8.8.8.8:53, 源: 202.96.1.1:10001

2. 外网 → 内网(响应)

[外网服务器] → 响应:目的: 202.96.1.1:10001, 源: 8.8.8.8:53

[路由器NAT]

- 查表:10001 → 192.168.1.100:5001

- 改写目的IP: 192.168.1.100:5001

[PC] ← 收到:目的: 192.168.1.100:5001, 源: 8.8.8.8:53

✅ 成功!通信完成。

四、为什么外网不能主动访问内网?

因为没有建立NAT映射条目

假设外网用户想直接访问 202.96.1.1:10001:

[黑客] → 发送数据包:目的: 202.96.1.1:10001

[路由器NAT]

- 查NAT表:无此条目(因为内网没发起过)

- 默认行为:丢弃

[内网PC] → 无感知,收不到