是什么
-
定义:NAT(网络地址转换)通过将专用(私有)IP地址转换为公网(全局)IP地址,解决IPv4地址枯竭并实现内外网通信;结合传输层端口号的NAPT/静态端口映射可实现外网主动访问内网特定服务。
-
大白话:私网就像大学宿舍楼,大家在宿舍里的代号都是“1号床、2号床”(私有IP地址冲突);宿舍楼大门只有一个收发室地址(公网IP)。你想上网买东西,收发室帮你换成大门地址发出去(源NAT);外网想给你送外卖,必须写“收发室转80号柜”(端口映射/目的NAT),外卖员才能精准投递到对应床位。
核心内容
1. 基础认知补充(为什么会有这道题的奇怪现象?)
-
私有地址不可公网路由:
192.168.0.0/16、10.0.0.0/8、172.16.0.0/12是专用私网地址。互联网路由器遇到私网目的IP直接丢弃。 -
地址重叠/冲突:全世界成千上万个家庭和局域网都在用
192.168.1.1,它们在各自局域网内是唯一的,但在公网看来,必须全部披上各自网关的公网IP外衣。
2. 第一问剖析:到底需要配什么?为什么?
视角一:客户端(H2/H3)想发数据到外网,需要配什么?
-
现实困惑:H2 自己的 IP 是
192.168.1.2,它要发包给外网,怎么知道第一步交给谁? -
底层原理:
-
计算机拿目的 IP 和自己的子网掩码做与运算:如果目的 IP 和自己在同一个子网,直接在局域网内发广播(ARP)找人;如果不在同一个子网(跨网段),电脑必须把包无脑交给“班主任/保安”(即默认网关)。
-
题目特意交代了“局域网采用静态 IP 地址配置”。如果是动态(DHCP),网关会自动下发;但静态必须人工手动填写。
-
结论 1:H2 和 H3 必须配置 默认网关(Default Gateway)为 192.168.1.1(路由器 R3 的内网接口)。否则跨网数据包在本地就报错卡死,根本发不出去。
-
视角二:Web 服务器藏在私网里,外网怎么找到它?
-
现实困惑:外网机器(包括跨路由的 H2)根本不知道
192.168.1.2是谁,即使知道了往公网发,公网路由器也直接丢弃。 -
底层原理:
-
外部世界能看到的,只有路由器 R2 露在公网的那张脸:公网 IP
203.10.2.2。 -
要让别人访问到内网的 Web 服务,就必须在 R2 上贴一张“告示”(静态映射条目):只要外网有人向我的
203.10.2.2:80发请求,我就无条件把这个包的目的地改成内网的192.168.1.2:80。 -
结论 2:必须在路由器 R2 的 NAT 表中配置一条静态端口映射条目:
-
外网:
IP: 203.10.2.2,端口: 80(HTTP协议默认端口) -
内网:
IP: 192.168.1.2,端口: 80
-
-
3. 第二问剖析:数据报 P 全程 IP 变迁链条(为什么是这样?)
核心黄金法则:
普通路由器转发:只查路由表换 MAC 帧头,IP 首部的源 IP 和目的 IP 绝对不变!
NAT 路由器(出私网):发生 SNAT(改源 IP),把私网源 IP 换成公网出口 IP。
NAT 路由器(进私网):发生 DNAT(改目的 IP),把公网目的 IP 换成内网真实服务 IP。
[H2: 192.168.1.2]
│ (1) H2发出:源 192.168.1.2 -> 目的 203.10.2.2
▼
[NAT路由 R3]
│ (2) 经过R3出境(SNAT):源 203.10.2.6 -> 目的 203.10.2.2
▼
[普通路由 R1]
│ (3) 经过R1普通转发:IP完全不变
▼
[NAT路由 R2]
│ (4) 经过R2入境(DNAT):源 203.10.2.6 -> 目的 192.168.1.2
▼
[Web服务器: 192.168.1.2]
阶段 1:H2 刚发出的那一瞬间
-
源 IP =
192.168.1.2:发件人是 H2 自己。 -
目的 IP =
203.10.2.2:-
为什么目的不是 192.168.1.2?
-
如果 H2 写目的地址是
192.168.1.2,H2 一看“咦?目的 IP 跟我自己一模一样!”,它会认为是在访问本机环回,或者发本地 ARP 广播,根本不会送给网关,这辈子都访问不到对面的服务器!因此,H2 访问的必须是服务对外公布的公网门牌号203.10.2.2。
-
阶段 2:经过 R3 转发后(离开右侧私网,进入公网)
-
源 IP =
203.10.2.6:-
R3 发现这个包要送往外网,执行 SNAT(源地址转换)。如果不把源 IP 改成公网 IP,就算包到了对方手里,对方回信时也无法把信送回一个私网地址。因此 R3 把源 IP 披上了自己的公网皮:
203.10.2.6。
-
-
目的 IP =
203.10.2.2:目的地始终是指向 R2 的公网地址,保持不变。
阶段 3:经过 R1 转发时
-
R1 只是个普通中继路由器,只查路由表,不改 IP 报头(源、目的 IP 均保持
203.10.2.6203.10.2.2)。
阶段 4:经过 R2 转发后(离开公网,进入左侧私网)
-
源 IP =
203.10.2.6:发件人是谁依然明确记录,保持不变。 -
目的 IP =
192.168.1.2:-
包到达 R2 外网口,R2 检查端口是 80,查到静态 NAT 表规则:“找我的 80 端口其实是找内网的
192.168.1.2:80”,执行 DNAT(目的地址转换),把目的地改成内网 Web 服务器真实的 IP192.168.1.2,顺着交换机 S1 发送给服务器。
-
例题
-
题目:
某校园网有两个局域网,通过路由器 R1、R2 和 R3 互连后接入 Internet,S1 和 S2 为以太网交换机。局域网采用静态 IP 地址配置,路由器部分接口以及各主机的 IP 地址如下图所示。
(拓扑结构见原题:左侧通过 R2 连 Web 服务器 192.168.1.2 和 H1 192.168.1.3,R2 外网口为 203.10.2.2/30;右侧通过 R3 连 H2 192.168.1.2 和 H3 192.168.1.3,R3 外网口为 203.10.2.6/30)。
-
为使 H2 和 H3 能够访问 Web 服务器(使用默认端口号),需要进行什么配置?
-
若 H2 主动访问 Web 服务器时,将 HTTP 请求报文封装到 IP 数据报 P 中发送,则 H2 发送的 P 的源 IP 地址和目的 IP 地址分别是什么?经过 R3 转发后,P 的源 IP 地址和目的 IP 地址分别是什么?经过 R2 转发后,P 的源 IP 地址和目的 IP 地址分别是什么?
-
-
分析:
-
客户端访问外网需配置网关指引下一跳;服务端被外网访问需在边界路由器 R2 上做静态端口映射(针对 HTTP 80 端口)。
-
梳理完整的 IP 变迁链条:H2 发包(目的为 R2 外网口) R3 改源 IP(SNAT) R2 改目的 IP(DNAT)送达服务器。
-
-
答案:
(1)
需要进行的配置:
-
在路由器 R2 的 NAT 转换表中添加静态转换项:
-
外网 IP 地址:
203.10.2.2,外网端口号:80 -
内网 IP 地址:
192.168.1.2,内网端口号:80
-
-
在主机 H2 和 H3 上配置默认网关:
-
默认网关 IP 地址为
192.168.1.1。
-
(2)
-
H2 发送的 P:
-
源 IP 地址:
192.168.1.2 -
目的 IP 地址:
203.10.2.2
-
-
经过 R3 转发后:
-
源 IP 地址:
203.10.2.6 -
目的 IP 地址:
203.10.2.2
-
-
经过 R2 转发后:
-
源 IP 地址:
203.10.2.6 -
目的 IP 地址:
192.168.1.2
-
-
⚠️ 易错点
Warning
第一问漏配“默认网关”:看到题只顾着想 NAT 表,完全忽视了题干给的提示“静态 IP 地址配置”。主机没有网关,连局域网都出不去。
目的 IP 误填对端内网 IP:以为 H2 访问 Web 服务器就直接填 Web 服务器的
192.168.1.2。内网主机向外发起访问时,绝不可能知道对方的私网 IP,更不能填跟自己撞车的 IP,目的 IP 必须填对端路由器的公网 IP。混淆 SNAT 与 DNAT 的发生位置:
出自己的私网走 NAT:改的是发件人(改源 IP,把内网 IP 换成自己的公网出口 IP)。
进对方的私网走 NAT:改的是收件人(改目的 IP,把自己的公网 IP 还原成真实内网服务器 IP)。