NAT概述
NAT(Network Address Translation)又称为网络地址转换,用于实现私有网络和公有网络之间的互访。
私有网络地址和公有网络地址
私有网络地址(以下简称私网地址)是指内部网络或主机的IP地址,公有网络地址(以下简称公网地址)是指在互联网上全球唯一的IP地址。IANA(Internet Assigned Number Authority)规定将下列的IP地址保留用作私网地址,不在Internet上被分配,可在一个单位或公司内部使用。RFC1918中规定私有地址如下:
A类私有地址:10.0.0.0~10.255.255.255
B类私有地址:172.16.0.0~172.31.255.255
C类私有地址:192.168.0.0~192.168.255.255
NAT基本原理
内部网络的地址是10.0.0.0网段,而对外的公有网络IP地址是203.196.3.23。内部的主机10.1.1.48访问外部HTTP服务器202.18.245.251,主机10.1.1.48发出一个数据报文,随机选择一个源端口6084,目的端口为80。在经过NAT设备后,该报文的源地址和端口可能改为203.196.3.23:32814,目的地址与端口不改变。在NAT设备中维护着一张地址和端口对应表,也称为转换表项,或转换槽位,当外部网络的WWW服务器返回数据包时,NAT设备检查转换表项,将数据报文中目的IP地址及端口转化为10.1.1.48:6084。实现了内部主机10.1.1.48访问外部服务器。
路由器支持NAT类型
静态NAT、PAT、内部服务器、NAT ALG功能、NAT过滤、NAT映射、Easy IP、两次NAT及NAT多实例。
静态NAT
静态NAT实现私网地址和公网地址的一对一转换。有多少个私网地址就需要配置多少个公网地址。静态NAT不能节约公网地址,但可以起到隐藏内部网络的作用。
内部网络向外部网络发送报文时,静态NAT将报文的源IP地址替换为对应的公网地址;外部网络向内部网络发送响应报文时,静态NAT将报文的目的地址替换为相应的私网地址。
PAT
PAT又称为NAPT(Network Address Port Translation),它实现一个公网地址和多个私网地址之间的映射,因此可以节约公网地址。PAT的基本原理是将不同私网地址的报文的源IP地址转换为同一公网地址,但他们被转换为该地址的不同端口号,因而仍然能够共享同一地址。
PAT需要维护一张私网地址和端口的映射表。当不同的私网地址向外发送报文时,PAT将报文的源IP地址替换为相同公网地址,但源端口号被替换为不同的端口号;当外部网络向内部网络发送响应报文时,PAT根据报文的目的端口号,将报文的目的IP地址替换为不同的私网地址,如下图
内部服务器
通过配置内部服务器,可将相应的外部地址、端口等映射到内部的服务器上,提供了外部网络主机访问内部服务器的功能例如可以使用202.110.10.10作为Web服务器的外部地址,使用202.110.10.11作为FTP服务器的外部地址,甚至还可以使用202.110.10.12:8080这样的地址作为Web的外部地址。还可为外部用户提供多台同样的服务器,如提供多台Web服务器。
NAT过滤
NAT过滤是指NAT设备对外网发到内网的流量进行过滤,即当私网主机向某公网主机发起访问后,公网主机发向私网主机的流量经过NAT设备时会进行过滤。
Easy IP
当进行地址转换时,直接使用接口的公有IP地址作为转换后的源地址。同样它也利用访问控制列表控制哪些内部地址可以进行地址转换。
地址转换应用层网关
地址转换会导致许多对NAT敏感的应用协议无法正常工作,必须针对该协议进行特殊的处理。所谓对NAT敏感的协议是指该协议的某些报文的有效载荷中携带IP地址和(或)端口号,如果不进行特殊处理,将会影响后继的协议交互。
地址转换应用层网关NAT ALG(NAT Application Level Gateway)是解决特殊协议穿越NAT的一种常用方式,该方法按照地址转换规则,对载荷中的IP地址和端口号进行替换,从而实现对该协议的透明中继。NAT ALG支持DNS、FTP协议、RTSP(Real-Time Streaming Protocol )和SIP(Session Initiation Protocol )如下图:
两次NAT
3 常规地址转换技术只转换报文的源地址或目的地址,而两次NAT(Twice NAT)技术可以将报文的源地址和目的地址同时转换,该技术应用于内部网络主机地址与公网上主机地址重叠的情况。如图所示:内部网络主机PC1和公网上主机PC3的地址重叠。这种情况下,内部网络主机PC2访问主机PC3的报文不会到达目的主机,而会被错误的转发到主机PC1上。两次NAT技术通过在NAT设备上配置重叠地址池到临时地址的映射关系(在实现常规NAT的基础上),将重叠地址转换为唯一的临时地址,来保证报文的正确转发。
在NAT设备上配置两次NAT:
第一步:配置常规NAT(多对多地址转换)。配置NAT地址池200.0.0.1~200.0.0.100,并应用到广域网接口。
第二步:配置一组重叠地址到临时地址的映射。10.0.0.0<-->3.0.0.0。
此映射表示,重叠地址池与临时地址池一一对应,转换规则为:
临时地址 = 临时地址池首地址 +(重叠地址 – 重叠地址池首地址)
重叠地址 = 重叠地址池首地址 +(临时地址 – 临时地址池首地址)
当内部主机PC2直接用域名访问公网上的主机PC3时,报文的处理流程如下:
PC2发送解析域名为www.web.com的Web服务器的DNS请求,经公网DNS服务器解析后,NAT设备收到DNS服务器的响应报文。NAT设备检查DNS响应报文载荷中的解析回来的地址10.0.0.1,经检查该地址为重叠地址(与重叠地址池匹配),将地址10.0.0.1转换为对应的临时地址3.0.0.1。之后再对DNS响应报文进行目的地址转换(常规NAT处理),发送给PC2。
PC2用www.web.com对应的临时地址3.0.0.1发起访问,当报文到达NAT设备时,先转换报文的源地址(常规NAT处理),再将报文的目的地址即临时地址,转换为对应的重叠地址10.0.0.1。将报文送到广域网出接口,并经广域网逐跳转发至主机PC3。
当PC3给PC2返回的报文到NAT设备时,先检查报文的源地址10.0.0.1,该地址为重叠地址(与重叠地址池匹配),则将源地址转换为对应的临时地址3.0.0.1。之后再对返回报文的目的地址进行常规NAT转换,并发送给PC2。
VPN关联的源NAT
华为路由器的NAT不仅可以使内部网络的用户访问外部网络,还允许分属于不同VPN的用户通过同一个出口访问外部网络,能够解决内部网络中IP地址重叠的VPN同时访问外网主机的问题。
VPN关联的NAT Server
华为路由器的NAT支持VPN关联的NAT server,提供给外部网络访问VPN内主机的机会,能够支持内网多个VPN地址重叠的场景。
实验拓扑如下:
NAT Outbound配置实例:
system-view
[GW]nat address-group 0 202.100.1.100 202.100.1.200[GW]acl number 2000
[GW-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.255[GW-GigabitEthernet0/0/0]int g0/0/1
[GW-GigabitEthernet0/0/1] nat outbound 2000 address-group 0 no-pat
注:no-pat表示一对一转换,只转换地址,不转换端口,直接回车表示IP和端口都做转换。
测试:
telnet 202.100.1.1
Press CTRL_] to quit telnet mode
Trying 202.100.1.1 …
Connected to 202.100.1.1 …
Login authentication
Password:display users
User-Intf Delay Type Network Address AuthenStatus AuthorcmdFlag
+ 0 CON 0 00:00:00 pass Username : Unspecified129 VTY 0 00:00:02 TEL 202.100.1.101 pass Username : Unspecified
display nat outbound
NAT Outbound Information:
Interface Acl Address-group/IP/Interface Type
GigabitEthernet0/0/1 2000 0 no-pat
Total : 1
display nat session all ====查看转换表项
NAT Session Table Information:
Protocol : TCP(6)
SrcAddr Port Vpn : 192.168.1.1 59335
DestAddr Port Vpn : 202.100.1.1 5888
NAT-Info
New SrcAddr : 202.100.1.101
New SrcPort : —-
New DestAddr : —-
New DestPort : —-[GW]reset nat session all ===清除转换表项
Warning:The current all NAT sessions will be deleted.
Are you sure to continue?[Y/N]y
Easy IP配置实例:
[GW]int g0/0/1
[GW-GigabitEthernet0/0/1]nat outbound 2000
测试:
telnet 202.100.1.1
Press CTRL_] to quit telnet mode
Trying 202.100.1.1 …
Connected to 202.100.1.1 …Login authentication
Password:display users
User-Intf Delay Type Network Address AuthenStatus AuthorcmdFlag
+ 0 CON 0 00:00:00 pass Username : Unspecified129 VTY 0 00:00:11 TEL 202.100.1.10 pass Username : Unspecified
display nat session all
NAT Session Table Information:
Protocol : TCP(6)
SrcAddr Port Vpn : 192.168.1.1 54467
DestAddr Port Vpn : 202.100.1.1 5888
NAT-Info
New SrcAddr : 202.100.1.10
New SrcPort : 10240
New DestAddr : —-
New DestPort : —-
Total : 1
静态NAT配置实例:
[GW]int g0/0/1
[GW-GigabitEthernet0/0/1]nat static global 202.100.1.100 inside 172.16.1.1
注:配置静态NAT时,其中的global-address和host-address必须保证和设备现有地址没有重复,包括设备接口地址,用户地址池地址等,以避免冲突。
测试:
display nat static
Static Nat Information:
Interface : GigabitEthernet0/0/1
Global IP/Port : 202.100.1.100/—-
Inside IP/Port : 172.16.1.1/—-
Protocol : —-
VPN instance-name : —-
Acl number : —-
Netmask : 255.255.255.255
Description : —-
Total : 1
内部服务器配置实例:
[GW]int g0/0/1
[GW-GigabitEthernet0/0/1]nat static protocol tcp global 202.100.1.100 2121 inside 172.16.1.1 21
[GW-GigabitEthernet0/0/1]nat static protocol tcp global 202.100.1.100 80 inside 172.16.1.1 80
测试:
NAT ALG配置实例:
[GW]nat alg ?
all All protocol
dns Dns protocol
ftp Ftp protocol
rtsp Rtsp protocol
sip Sip protocol
NAT 过滤配置实例:
NAT过滤是指NAT设备对外网发到内网的流量进行过滤,即当私网主机向某公网主机发起访问后,公网主机发向私网主机的流量经过NAT设备时会进行过滤。
NAT过滤包括三种类型:
a.与外部地址和端口无关的NAT过滤行为。
b.与外部地址相关端口无关的NAT过滤行为。
c.与外部地址和端口都相关的NAT过滤行为。
[GW]nat filter-mode ?
endpoint-and-port-dependent Endpoint and port dependent
endpoint-dependent Endpoint dependent
endpoint-independent Endpoint independent
缺省采用endpoint-and-port-dependent方式,表示查询NAT反向映射表时,以“源IP+源端口+目的IP+目的端口+协议号”作索引进行匹配。
NAT映射配置实例:
配置NAT映射可以满足使用STUN、TURN、ICE等NAT穿越技术的终端软件能够穿越NAT。
NAT映射包含如下三种类型:
a.外部地址和端口无关的映射:对相同的内部IP和端口重用相同的地址端口映射。
b.外部地址相关端口无关的映射:对相同的内部IP地址和端口访问相同的外部IP地址时重用相同的端口映射。
c.外部地址和端口相关的映射:对相同的内部IP地址和端口号访问相同的外部IP地址和端口号重用相同的端口映射(如果此映射条目还处在活动状态)。
[GW]nat mapping-mode endpoint-independent ?
tcp Transmission Control Protocol
udp User Datagram Protocol
Please press ENTER to execute command
配置Twice NAT实例:
如图:内部网络主机PC1和公网上主机Host A的地址重叠。这种情况下,内部网络主机PC2访问主机Host A的报文不会到达目的主机,而有可能会被错误的转发到主机PC1上。两次NAT技术通过在NAT设备上配置重叠地址池到临时地址池的映射关系(在实现常规NAT的基础上),将重叠地址转换为唯一的临时地址,来保证报文的正确转发。
1.配置DNS-Mapping
[Huawei] nat alg dns enable
[Huawei] nat dns-map www.Server.com 192.168.20.2 80 tcp
2.配置重叠地址池到临时地址池的映射关系
[Huawei] nat overlap-address 0 192.168.20.2 202.169.100.2 pool-length 254
3.配置临时地址池到出接口GigabitEthernet3/0/0的静态路由
[Huawei] ip route-static 202.169.100.2 32 gigabitethernet 3/0/0 202.169.10.2
4.配置NAT Outbound
[Huawei]acl 3180
[Huawei-acl-adv-3180] rule permit ip source 192.168.20.0 0.0.0.255[Huawei]nat address-group 1 160.160.0.2 160.160.0.254
[Huawei-GigabitEthernet3/0/0] nat outbound 3180 address-group 1 [Huawei] display nat overlap-address all
Nat Overlap Address Pool To Temp Address Pool Map Information:
Id Overlap-Address Temp-Address Pool-Length Inside-VPN-Instance-Name
0 192.168.20.2 202.169.100.2 254
Total : 1
配置NAT日志输出
配置NAT日志输出功能可以实时跟踪、记录NAT流表的信息,增强网络的安全性,方便用户定位通过NAT访问网络的用户。NAT日志是设备在做NAT时生成的信息记录。该信息包括报文的源IP地址、源端口、目的IP地址、目的端口、转换后的源IP地址、转换后的源端口以及NAT的时间信息和用户执行的操作等。网络管理员可以通过查看NAT日志实时跟踪或定位用户通过NAT访问网络的情况,增强了网络的安全性。如下图:
[GW]firewall log session enable ===启用防火墙日志功能。
[GW]firewall log session nat enable ===启用NAT类型的流日志功能。
[GW]info-center enable ===开启信息中心。
[GW]info-center loghost 192.168.1.100 ===配置log主机,最多可以配置8个。