NAT(网络地址转换)
NAT可用于以下情况:
- 需要连接到互联网,但没有全局唯一IP
- 更换的ISP要求对网络进行重新编址
- 需要合并两个使用相同编址方案的内联网
优点:
- 节省合法的注册地址
- 在地址重叠时提供解决方案
- 提高连接到互联网的灵活性
- 在网络发生变化时可避免重新编址
缺点:
- 地址转换将增加交换延迟
- 导致无法进行端到端的IP追踪
- 导致有些应用程序无法正常运行
- NAT会修改报头中的值,导致IPSEC等隧道协议更复杂
NAT的三种类型:
- 静态NAT(一对一)
- 动态NAT(多对多)
- NAT重载(一对多)
NAT术语
内部本地地址:转换前的内部源主机的地址,通常是RFC 1918地址
外部本地地址:在内部网络中看到的外部主机的地址,通常是连接到ISP的路由器接口的公有IP地址
内部全局地址:为前往互联网,对内部源主机的地址进行转换得到的地址,也是公有IP地址
外部全局地址:外部目标主机的地址,也是公有IP地址
NAT端口指定
interface FastEthernet0/0
ip nat inside #指定为内部接口
!
interface FastEthernet0/1
ip nat outside #指定为外部接口
静态NAT
{XX}可选,<XX/XX>选择其一
(config)# ip nat <inside/outside> source static {tcp|udp} <inside-local-ip> {port} <local-global-ip> {port}
RouterA(config)#ip nat ?
inside Inside address translation
outside Outside address translation
pool Define pool of addresses
RouterA(config)#ip nat inside ?
source Source address translation
RouterA(config)#ip nat inside source ?
list Specify access list describing local addresses
static Specify static local->global mapping
RouterA(config)#ip nat inside source static ?
A.B.C.D Inside local IP address
tcp Transmission Control Protocol
udp User Datagram Protocol
其中,ip nat inside source将内部接口指定为源,即转换的起点;ip nat outside source,将外部接口指定为源,即转换的起点
动态NAT
(config)# ip nat pool XX <Start IP address> <End IP address> netmask <netmask>
其中netmask可用关键字prefix-length代替
(config)# ip nat <inside/outside> source list XXX pool XX
将ACL XXX匹配的地址转换为POOL XX中的一个可用地址
(config)#interface FastEthernet0/0
(config-if)#ip address <inside-ip> <netmask>
(config-if)# ip nat inside
(config)#interface FastEthernet0/1
(config-if)#ip address <outside-ip> <netmask>
(config-if)#ip nat outside
(config)# access-list XXX permit <inside-ip-pool> 0.0.0.255 #定义感兴趣流量
RouterA(config)#ip nat ?
inside Inside address translation
outside Outside address translation
pool Define pool of addresses
RouterA(config)#ip nat pool ?
WORD Pool name
RouterA(config)#ip nat pool XX ?
A.B.C.D Start IP address
RouterA(config)#ip nat pool XX A.B.C.D ?
A.B.C.D End IP address
RouterA(config)#ip nat pool XX A.B.C.D A.B.C.D ?
netmask Specify the network mask
RouterA(config)#ip nat inside source list ?
<1-199> Access list number for local addresses
WORD Access list name for local addresses
RouterA(config)#ip nat inside source list XX ?
interface Specify interface for global address
pool Name pool of global addresses
重载NAT,PAT(一种特殊的动态NAT)
内部全局地址过载,是当今典型的NAT。除非需要进行静态映射(如映射到服务器),否则很少使用静态NAT和动态NAT
相比于动态NAT,有以下不同:
- 地址池只包含一个IP地址
- 命令ip nat inside source 末尾包含关键字overload
(config)# ip nat pool XX <global-IP> <global-IP> netmask <netmask>
(config)# ip nat <inside/outside> source list XXX pool XX overload
将ACL XXX匹配的地址转换为POOL XX中的一个可用地址
(config)#interface FastEthernet0/0
(config-if)#ip address <inside-ip> <netmask>
(config-if)# ip nat inside
(config)#interface FastEthernet0/1
(config-if)#ip address <outside-ip> <netmask>
(config-if)#ip nat outside
(config)# access-list XXX permit <inside-ip-pool> 0.0.0.255 #定义感兴趣流量
RouterA(config)#ip nat inside source list 1 pool XX ?
overload Overload an address translation
查看NAT信息
Router # show ip nat translations
查看基本的IP地址转换信息
Router # debug ip nat
每个调试输出行中,都会包含发送地址、转换条目和目标地址
Router # clear ip nat translations *
清除转换条目
Router # show ip nat statistics
显示NAT配置摘要、活动转换条目数以及现有转换条目的命中次数