NAT
私有IPv4地址
类别 | CIDR前缀 | RFC 1918内部地址范围 |
---|---|---|
A | 10.0.0.0/8 | 10.0.0.0~10.255.255.255 |
B | 172.16.0.0/12 | 172.16.00~172.31.255.255 |
C | 192.168.0.0/16 | 192.168.0.0~192.168.255.255 |
这些私有地址可以在局域网中使用,配合NAT地址转换。可以实现节约IP地址的目的。
主要作用:
-
节省了公有IPv4地址
-
增强了网络的私密性和安全性,因为它对外部网络隐藏了内部IPv4地址
创建一个NAT地址池,转换的地址可以从地址池中获取。
NAT路由器通常工作在末节网络边界。末节网络事一个与其相邻网络具有单个连接的网络,而且单进单出。
NAT术语
-
内部本地地址
- 从网络内部看到源地址
-
内部全局地址
- 从外部网络看到的源地址
-
外部本地地址
- 从外部网络看到的目标地址
-
外部全局地址
- 从网络内部看到的目标地址
NAT的类型
-
静态地址转换(静态NAT)
-
本地地址和全局地址之间的一对一地址映射
-
动态地址转换(动态NAT)
- 本地地址和全局地址之间的多对多地址映射
-
端口地址转换(PAT)
- 本地地址和全局地址之间的多对一地址映射0
NAT优势
- NAT允许对内联网实行私有编址
- NAT增强了与公有网络连接的灵活性
- NAT为内部网络编址提供了一致性
- NAT隐藏用户IPv4地址
NAT缺点
- 性能下降
- 端对端功能下降
- 端对端IP可追溯性会丧失
- 隧道会变的更加复杂
- 源TCP连接中断
配置静态NAT
R2(config)#ip nat inside source static 192.168.10.254 209.165.201.5
//内部地址 内部全局地址
R2(config)#interface serial0/0/0
R2(config-if)#ip address 10.1.1.2 255.255.255.0
R2(config-if)#ip nat inside
//配置面向内部的IP地址
R2(config)#interface serial0/1/0
R2(config-if)#ip address 209.165.200.225 255.255.255.0
R2(config-if)#ip nat outside
//配置面向外部的全局地址
R2#show ip nat translations
//查看静态NAT条目
R2#show ip nat statistics
//该命令显示有关总活动转换数、NAT配置参数、地址池中地址数量和已分配地址数量
R2#clear ip nat statistics
//清除任何之前转换的统计信息
配置动态NAT
静态NAT提供内部本地地址与内部全局地址之间的永久映射,而动态NAT使内部地址与内部全局地址能够进行自动映射
配置动态NAT的五个步骤
- 定义将会用于转换的地址池,为该池分配一个名称来标识它。
- 使用
access-list access-list-number permit source [source-wildcard]
命令配置一个标准的ACL,用于仅标识允许哪些将要进行转换的地址。 - 绑定ACL与地址池。使用
ip nat inside list access-list-number pool pool-name
- 配置内部接口
- 配置外部接口
R2(config)#ip nat pool NAT-pool 209.165.200.226 209.165.200.240 netmask 255.255.255.224
R2(config)#access-list 1 permit 192.168.0.0 0.0.255.255
R2(config)#ip nat inside source list 1 pool NAT-pool
R2(config)#interface serial0/0/0
R2(config-if)#ip nat inside
//配置面向内部的接口
R2(config)#interface serial0/1/0
R2(config-if)#ip nat outside
//配置面向外部的接口
配置PAT
配置PAT的五个步骤(第一种模式:有多个内部全局地址)
- 定义将会用于转换的地址池,为该池分配一个名称来标识它。
- 使用
access-list access-list-number permit source [source-wildcard]
命令配置一个标准的ACL,用于仅标识允许哪些将要进行转换的地址。 - 绑定ACL与地址池。使用
ip nat inside list access-list-number pool pool-name overload
,PAT和NAT之间的主要区别在于此命令使用了overload
关键字 - 配置内部接口
- 配置外部接口
配置PAT步骤(第二种模式:只有一个全局地址)
-
使用
ip nat pool pool-name start-ip end-ip {netmask netmask |prefix-length prefix-length}
命令定义将会用于转换的地址池(由于只有一个地址所以不需要地址池) -
绑定ACL与接口。
ip nat inside source list access-lsit-number interface type number overload
全局配置命令绑定ACL与接口。 -
配置内部接口
-
配置外部接口
R2(config)#access-list 1 permit 192.168.0.0 0.0.255.255
R2(config)#ip nat inside source list 1 interface s 0/1/0 overload
R2(config)#interface s 0/0/0
R2(config)#ip nat inside
R2(config)#interface s 0/1/0
R2(config)#ip nat outside
配置端口转发
使用IOS命令实施端口转发与用于配置静态NAT的命令类似。端口转发的实质上是已指定TCP或UDP端口号的静态NAT转换
要配置端口转发,请使用ip nat inside source {static {tcp|udp local-ip local-port global-ip global-port} [extendable]}
全局配置命令
IOS端口转发命令语法
参数 | 说明 |
---|---|
tcp/udp | 指示这是TCP还是UDP端口号 |
local-ip | 这是分配给内部网络上的主机的IPv4地址,通常来自RFC 1918私有地址空间 |
local-port | 设置本地TCP、UDP端口,范围1~65535.这是服务所侦听的端口号 |
global-ip | 这是内部主机的唯一全局地址,这是外部客户端到达内部服务器所用的IP地址 |
global-port | 设置全局TCP、UDP端口,范围1~65535.这是外部客户端到达内部服务器所用的端口号 |
extendable | 这个选项默认会自动应用 |
R2(config)#ip nat inside static tcp 192.168.10.254 80 209.165.200.225 8080