NAT 网络地址转换详解
7.1 NAT 的作用与分类(静态、动态、PAT)
什么是 NAT?
NAT(Network Address Translation,网络地址转换)是一种将私有地址与公网地址互相映射的技术,通常部署在边界路由器上。
NAT 的主要作用:
- 节省 IPv4 地址:多个私有 IP 可共用一个公网 IP。
- 隐藏内部网络结构:增强网络安全性。
- 实现私网设备访问公网资源。
NAT 的三种主要类型:
类型 | 特点 | 应用场景 |
---|
静态 NAT | 一一映射,私网 IP 与公网 IP 固定绑定 | 服务器对公网开放 |
动态 NAT | 多对多映射,使用地址池,从公网地址池中动态分配 IP | 多台私网设备访问公网(但不多) |
PAT(NAPT) | 端口地址转换,多台私网主机共用一个公网 IP,通过端口号做区分 | 最常见的 NAT 类型(如家庭路由器) |
7.2 内部地址 / 外部地址 / 映射关系
NAT 术语解释:
名称 | 说明 |
---|
Inside Local | 内部网络中主机使用的 IP(如 192.168.1.10) |
Inside Global | 映射到公网的 IP 地址(如 202.100.1.1) |
Outside Global | 公网上的主机 IP(通常不做转换) |
Outside Local | 外部主机在内部网络中看到的地址(很少使用) |
映射关系示意图:
1 2 3 4 5
| 内部主机:192.168.1.10 (Inside Local) ↓ 公网地址:203.0.113.1 (Inside Global) ↓ 访问目标:8.8.8.8 (Outside Global)
|
提示:NAT 只转换 Inside 地址,Outside 通常不做转换。
7.3 静态 NAT 配置与验证
场景:
让公网用户访问部署在私有网络中的 Web 服务器。
拓扑简述:
1 2 3
| 公网访问 → 路由器 → 内网 Web 服务器 公网 IP:200.1.1.1 私网 IP:192.168.1.100
|
配置步骤(Cisco IOS):
1 2 3 4 5 6 7 8 9
| R1(config)# interface fa0/0 R1(config-if)# ip address 200.1.1.254 255.255.255.0 R1(config-if)# ip nat outside
R1(config)# interface fa0/1 R1(config-if)# ip address 192.168.1.1 255.255.255.0 R1(config-if)# ip nat inside
R1(config)# ip nat inside source static 192.168.1.100 200.1.1.1
|
验证命令:
1 2
| R1# show ip nat translations R1# show ip nat statistics
|
7.4 动态 NAT 配置与地址池
场景:
多台内部主机访问互联网,每次动态获取公网 IP。
地址池定义:
1
| R1(config)# ip nat pool MYPOOL 200.1.1.2 200.1.1.10 netmask 255.255.255.0
|
配置内部与外部接口:
1 2 3 4
| R1(config)# interface fa0/1 R1(config-if)# ip nat inside R1(config)# interface fa0/0 R1(config-if)# ip nat outside
|
创建访问控制列表 ACL 定义谁可以做 NAT:
1
| R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
|
启用 NAT:
1
| R1(config)# ip nat inside source list 1 pool MYPOOL
|
验证:
1 2
| R1# show ip nat translations R1# show ip nat statistics
|
7.5 PAT(端口地址转换)配置与原理
什么是 PAT?
PAT(Port Address Translation,端口地址转换),又叫 NAPT(Network Address Port Translation),是 NAT 的一种增强形式。
它通过端口号来区分多个私网主机的连接,使多个主机可以共享一个公网 IP。
工作原理:
多个内部主机共享同一个公网 IP,但使用不同的端口号:
1 2
| 192.168.1.10:12345 → 203.0.113.1:40001 192.168.1.20:12346 → 203.0.113.1:40002
|
配置示例(使用接口 IP):
1 2 3 4 5 6 7 8 9 10 11
| R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
R1(config)# interface fa0/0 R1(config-if)# ip address 203.0.113.1 255.255.255.0 R1(config-if)# ip nat outside
R1(config)# interface fa0/1 R1(config-if)# ip address 192.168.1.1 255.255.255.0 R1(config-if)# ip nat inside
R1(config)# ip nat inside source list 1 interface fa0/0 overload
|
overload 参数表示启用端口复用,也就是 PAT。
验证命令:
1 2
| R1# show ip nat translations R1# show ip nat statistics
|
7.6 NAT 配置验证与常见问题排查
验证命令总结:
命令 | 用途说明 |
---|
show ip nat translations | 显示当前的地址转换记录 |
show ip nat statistics | 显示 NAT 使用统计信息 |
debug ip nat | 实时调试 NAT 转换过程(慎用) |
常见问题与排查建议:
- NAT 未生效
- 检查接口是否正确配置为 inside/outside。
- 检查 ACL 是否写错,是否匹配了实际流量。
- 部分主机能访问,部分不能
- 检查地址池是否耗尽(动态 NAT)。
- 检查是否开启 PAT overload。
- 无法访问公网
- 检查默认路由是否设置正确。
- 确保外部接口能访问外网。
- NAT 配置正确但无映射
- 使用
ping
或 curl
模拟内网流量,触发 NAT 建立。
7.7 NAT 与 ACL 的联合使用
在 Cisco 路由器中,NAT 和 ACL 配合使用主要用于定义哪些内部主机允许做 NAT。
举例说明:
1 2
| access-list 10 permit 192.168.1.0 0.0.0.255 ip nat inside source list 10 pool MYPOOL
|
这条配置的含义是:
- 仅允许 192.168.1.0/24 网段的主机使用 NAT;
- 超出 ACL 范围的主机将无法访问公网。
常用 ACL 与 NAT 配合的技巧:
- 使用标准 ACL,仅匹配源地址(推荐方式)。
- ACL 写错或过于严格会导致 NAT 无法建立。
拓展建议:ACL 也可用于限制 NAT 访问特定公网地址,但这属于进阶用法,一般用在企业级环境中。
7.8 NAT 与私网通信中的常见应用场景
实际应用 1:家庭宽带路由器(典型 PAT)
- 家庭中多台设备访问互联网;
- 路由器使用 ISP 提供的单一公网 IP;
- 所有设备通过 PAT 转换访问公网;
- 内部网络为 192.168.x.x 类型私网。
实际应用 2:公司对公网发布服务器(静态 NAT)
- 公司内部服务器需要公网访问;
- 使用静态 NAT 将公网 IP 映射到内部 IP;
- 比如邮件服务器、Web 服务器等。
实际应用 3:数据中心内部访问 Internet(动态 NAT)
- 内部主机临时需要访问公网更新软件;
- 动态分配公网 IP 访问 Internet;
- 节省公网地址,确保可控性。
Cisco NAT 命令语法与配置详解
NAT(Network Address Translation,网络地址转换)是 Cisco 路由器中常见的配置项之一,用于私网和公网之间的地址转换。本文将详细介绍 Cisco 不同类型 NAT 的命令语法及其使用方法。
1. 接口 NAT 方向设置
首先要为路由器接口设置 内网(inside) 和 外网(outside)。
1 2 3 4 5 6
| interface 接口名 ip address [IP地址] [子网掩码] ip nat inside // 设置为内网接口 interface 接口名 ip address [IP地址] [子网掩码] ip nat outside // 设置为外网接口
|
2. 静态 NAT(Static NAT)
将一个内网地址固定映射到一个公网地址,适用于内网服务器需要被外部访问的场景。
1
| ip nat inside source static [内网IP] [公网IP]
|
示例:
1
| ip nat inside source static 192.168.1.100 203.0.113.5
|
3. 动态 NAT(Dynamic NAT)
多个内网地址动态使用地址池中的公网IP。
步骤一:创建公网地址池
1
| ip nat pool [池名] [起始公网IP] [结束公网IP] netmask [子网掩码]
|
步骤二:定义访问控制列表(ACL)
1
| access-list [编号] permit [内网网段] [反掩码]
|
步骤三:绑定ACL与地址池
1
| ip nat inside source list [ACL编号] pool [地址池名]
|
示例配置:
1 2 3
| ip nat pool MYPUB 203.0.113.10 203.0.113.20 netmask 255.255.255.0 access-list 1 permit 192.168.1.0 0.0.0.255 ip nat inside source list 1 pool MYPUB
|
4. NAT Overload(PAT,端口复用)
最常见的 NAT 类型,多个内网主机共享一个公网IP,通过不同端口进行区分。
1
| ip nat inside source list [ACL编号] interface [外网接口名] overload
|
示例配置:
1 2
| access-list 1 permit 192.168.1.0 0.0.0.255 ip nat inside source list 1 interface FastEthernet0/1 overload
|
5. 查看 NAT 状态命令
以下命令用于排查 NAT 是否配置正确:
1 2 3
| show ip nat translations // 查看 NAT 转换表 show ip nat statistics // 查看 NAT 使用统计 debug ip nat // 实时调试 NAT 转换过程(慎用)
|
6. 基础知识补充
术语 | 说明 |
---|
Inside | 私有地址接口(内网) |
Outside | 公有地址接口(外网) |
Overload | 端口复用(PAT) |
NAT Pool | 用于动态 NAT 的公网地址池 |
Access-list | 控制哪些内网IP可参与 NAT |
反掩码(Wildcard) | ACL 中用于匹配地址范围的写法 |