NAT 网络地址转换详解

7.1 NAT 的作用与分类(静态、动态、PAT)

什么是 NAT?

NAT(Network Address Translation,网络地址转换)是一种将私有地址与公网地址互相映射的技术,通常部署在边界路由器上。

NAT 的主要作用:

  1. 节省 IPv4 地址:多个私有 IP 可共用一个公网 IP。
  2. 隐藏内部网络结构:增强网络安全性。
  3. 实现私网设备访问公网资源

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 转换过程(慎用)

常见问题与排查建议:

  1. NAT 未生效
    • 检查接口是否正确配置为 inside/outside。
    • 检查 ACL 是否写错,是否匹配了实际流量。
  2. 部分主机能访问,部分不能
    • 检查地址池是否耗尽(动态 NAT)。
    • 检查是否开启 PAT overload。
  3. 无法访问公网
    • 检查默认路由是否设置正确。
    • 确保外部接口能访问外网。
  4. NAT 配置正确但无映射
    • 使用 pingcurl 模拟内网流量,触发 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 中用于匹配地址范围的写法