05-NAT配置
本章节下载: 05-NAT配置 (331.21 KB)
本特性的支持情况与设备的型号有关,请参见“配置指导导读”中的“特性差异情况”部分的介绍。
NAT(Network Address Translation,网络地址转换)是将IP数据报文头中的IP地址转换为另一个IP地址的过程。在实际应用中,NAT主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公网IP地址代表较多的私网IP地址的方式,将有助于减缓可用IP地址空间的枯竭。
私网IP地址是指内部网络或主机的IP地址,公网IP地址是指在因特网上全球唯一的IP地址。
RFC 1918为私有网络预留出了三个IP地址块,如下:
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
(上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP或注册中心申请而在公司或企业内部自由使用。)
NAT最初的设计目的是用于实现私有网络访问公共网络的功能,后扩展到实现任意两个网络间进行访问时的地址转换应用,本文中将这两个网络分别称为内部网络(内网)和外部网络(外网),通常私网为内部网络,公网为外部网络。
图1-1描述了一个基本的NAT应用。
(1) 内网用户主机(192.168.1.3)向外网服务器(1.1.1.2)发送的IP报文通过NAT设备。
(2) NAT设备查看报头内容,发现该报文是发往外网的,将其源IP地址字段的私网地址192.168.1.3转换成一个可在Internet上选路的公网地址20.1.1.1,并将该报文发送给外网服务器,同时在NAT设备的网络地址转换表中记录这一映射。
(3) 外网服务器给内网用户发送的应答报文(其初始目的IP地址为20.1.1.1)到达NAT设备后,NAT设备再次查看报头内容,然后查找当前网络地址转换表的记录,用内网私有地址192.168.1.3替换初始的目的IP地址。
上述的NAT过程对终端(如图中的Host和Server)来说是透明的。对外网服务器而言,它认为内网用户主机的IP地址就是20.1.1.1,并不知道有192.168.1.3这个地址。因此,NAT“隐藏”了企业的私有网络。
地址转换的优点在于,在为内部网络主机提供了“隐私”保护的前提下,实现了内部网络的主机通过该功能访问外部网络的资源。但它也有一些缺点:
· 由于需要对数据报文进行IP地址的转换,涉及IP地址的数据报文的报头不能被加密。在应用协议中,如果报文中有地址或端口需要转换,则报文不能被加密。例如,不能使用加密的FTP连接,否则FTP协议的port命令不能被正确转换。
· 网络调试变得更加困难。比如,某一台内部网络的主机试图攻击其它网络,则很难指出究竟哪一台主机是恶意的,因为主机的IP地址被屏蔽了。
在实际应用中,我们可能希望某些内部网络的主机可以访问外部网络,而某些主机不允许访问,即当NAT设备查看IP数据报文的报头内容时,如果发现源IP地址属于禁止访问外部网络的内部主机,它将不进行地址转换。另外,也希望只有指定的公网地址才可用于地址转换。
设备可以利用ACL(Access Control List,访问控制列表)和地址池来对地址转换进行控制。
· 访问控制列表可以有效地控制地址转换的使用范围,只有满足访问控制列表规则的数据报文才可以进行地址转换。
· 地址池是用于地址转换的一些连续的公网IP地址的集合,它可以有效地控制公网地址的使用。用户可根据自己拥有的合法IP地址数目、内部网络主机数目以及实际应用情况,定义合适的地址池。在地址转换的过程中,NAT设备将会从地址池中挑选一个IP地址做为数据报文转换后的源IP地址。
从图1-1的地址转换过程可见,当内部网络访问外部网络时,地址转换将会选择一个合适的外部地址,来替代内部网络数据报文的源地址。在图1-1中是选择NAT设备出接口的IP地址(公网IP地址)。这样所有内部网络的主机访问外部网络时,只能拥有一个外部网络的IP地址,因此,这种情况同时只允许最多有一台内部网络主机访问外部网络。
当内部网络的多台主机并发的要求访问外部网络时,NAT也可实现对并发性请求的响应,允许NAT设备拥有多个公有IP地址。当第一个内网主机访问外网时,NAT选择一个公有地址IP1,在地址转换表中添加记录并发送数据报;当另一内网主机访问外网时,NAT选择另一个公有地址IP2,以此类推,从而满足了多台内网主机访问外网的请求。
NAT设备拥有的公有IP地址数目要远少于内部网络的主机数目,因为所有内网主机并不会同时访问外网。公有IP地址数目的确定,应根据网络高峰期可能访问外网的内网主机数目的统计值来确定。
NAT隐藏了内部网络的结构,具有“屏蔽”内部主机的作用,但是在实际应用中,可能需要给外部网络提供一个访问内网主机的机会,如给外部网络提供一台Web服务器,或是一台FTP服务器。
NAT设备提供的内部服务器功能,就是通过静态配置“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,实现公网IP地址到私网IP地址的“反向”转换。例如,可以将20.1.1.1:8080配置为内网某Web服务器的外部网络地址和端口号供外部网络访问。
如图1-2所示,外部网络用户访问内部网络服务器的数据报文经过NAT设备时,NAT设备根据报文的目的地址查找地址转换表项,将访问内部服务器的请求报文的目的IP地址和端口号转换成内部服务器的私有IP地址和端口号。当内部服务器回应该报文时,NAT设备再根据已有的地址映射关系将回应报文的源IP地址和端口号转换成公网IP地址和端口号。
一般情况下,DNS服务器和访问私网服务器的用户都在公网,通过在NAT设备的公网接口上配置内部服务器,可以将公网地址、端口等信息映射到私网内的服务器上,使得公网用户可以通过内部服务器的域名或公网地址来访问内部服务器。但是,如图1-3所示,如果DNS服务器在公网,私网用户希望通过域名来访问私网的Web服务器,则会由于DNS服务器向私网用户发送的响应报文中包含的是私网服务器的公网地址,而导致收到响应报文的私网用户无法利用域名访问私网服务器。通过在设备上配置DNS mapping可以解决该问题。
图1-3 NAT DNS mapping工作示意图
DNS mapping功能是指,通过配置“域名+公网IP地址+公网端口号+协议类型”的映射表,建立内部服务器域名与内部服务器公网信息的对应关系。在配置了NAT的接口上,设备检查接收到的DNS响应报文,根据报文中的域名查找用户配置的DNS mapping映射表,并根据表项内的“公网地址+公网端口+协议类型”信息查找内部服务器地址映射表中该信息对应的私网地址,替换DNS查询结果中的公网地址。这样,私网用户收到的DNS响应报文中就包含了要访问的内部服务器的私网地址,也就能够使用内部服务器域名访问同一私网内的内部服务器。
Easy IP功能是指进行地址转换时,直接使用接口的外网IP地址作为转换后的源地址,能够最大程度的节省IP地址资源。它也可以利用访问控制列表控制哪些内部地址可以进行地址转换。
表1-1 NAT配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置地址转换 |
配置静态地址转换 |
二者必选其一 |
|
配置动态地址转换 |
|||
配置内部服务器 |
必选 |
||
配置DNS mapping |
可选 |
接口下的NAT相关配置(地址转换或内部服务器配置)改变时,为保证连接的稳定性,建议用户在完成所有NAT相关的配置之后,保存配置并重启设备,以避免可能会产生的问题。这些问题主要包括:NAT相关的配置删除后,已建立的连接仍然可以进行地址转换处理;在连接过程中进行NAT配置,会因为配置顺序的不一致,导致相同的配置产生不同的处理结果。
通过NAT设备上静态建立或动态生成的地址映射关系,实现内部网络与外部网络IP地址的转换。通常,我们按照地址映射关系的产生方式将地址转换分为动态地址转换和静态地址转换两类:
· 静态地址转换
外部网络和内部网络之间的地址映射关系在配置中确定。适用于内部网络与外部网络之间的少量固定访问需求。
· 动态地址转换
外部网络和内部网络之间的地址映射关系由报文动态决定。通过配置访问控制列表和地址池(或接口地址)的关联,由“具有某些特征的IP报文”挑选使用“地址池中地址(或接口地址)”,从而建立动态地址映射关系。适用于内部网络有大量用户需要访问外部网络的需求。这种情况下,关联中指定的地址池资源由内网报文按需从中选择使用,访问外网的会话结束之后该资源便释放给其它用户。
配置静态地址转换时,需要首先在系统视图下配置静态地址转换映射,然后在接口下使该转换生效。
静态地址转换映射支持一对一静态转换映射。
实现一个内部私有网络地址到一个外部公有网络地址的转换。
表1-2 配置一对一静态地址转换
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置一对一静态地址转换映射 |
nat static local-ip global-ip |
必选 |
进入接口视图 |
interface interface-type interface-number |
- |
使配置的NAT静态转换在接口上生效 |
nat outbound static [ track vrrp virtual-router-id ] |
必选 |
通过在接口上配置访问控制列表和地址池(或接口地址)的关联即可实现动态地址转换。
若直接使用接口的IP地址作为转换后的地址,则配置Easy IP功能来实现动态地址转换。
若选择使用地址池中的地址作为转换后的地址,可以使用NO-PAT方式,NO-PAT为不使用TCP/UDP端口信息实现的多对多地址转换。
· 配置控制地址转换范围的访问控制列表。
· 确定是否直接使用接口的IP地址作为转换后的报文源地址。
· 配置根据实际网络情况,合理规划可用于地址转换的公网IP地址池。
· 确定地址转换过程中是否使用端口信息。
访问控制列表的配置请参见“ACL和QoS配置指导”中的“ACL”。
动态地址转换的过程中,NAT设备将会从配置的地址池中挑选一个IP地址做为转换后的报文源地址。
表1-3 定义地址池
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个地址池 |
nat address-group group-number start-address end-address [ level level ] |
必选 |
不同地址池中定义的IP地址段之间不允许重叠。
通过配置Easy IP功能,实现直接使用接口的IP地址作为转换后的报文源地址。
表1-4 配置Easy IP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置访问控制列表和接口地址关联,实现Easy IP功能 |
nat outbound [ acl-number ] [ track vrrp virtual-router-id ] |
必选 |
通过配置访问控制列表和地址池(或接口地址)的关联,将与访问控制列表匹配的报文的源地址映射为地址池中的地址(或接口地址),且不使用端口信息。
表1-5 配置NO-PAT
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
在出接口配置访问控制列表和地址池关联,且不使用端口信息,实现NO-PAT |
nat outbound acl-number address-group group-number no-pat |
必选 |
通过配置内部服务器,可以将相应的外部地址和端口映射到内部服务器的私有地址和端口上,从而使外部网络用户能够访问内部服务器。内部服务器与外部网络的映射表是通过在接口上配置nat server命令生成的。
配置内部服务器时需要配置的信息包括:外部网络的信息(外部网络地址global-address、外部网络端口global-port)、内部网络的信息(内部网络地址local-address、内部网络端口local-port)以及服务协议类型。
配置普通的内部服务器是将内网服务器的地址和端口(local-address、local-port)映射为外网地址和端口(global-address、global-port),允许外部网络中的主机访问位于内网的服务器。
表1-6 配置普通内部服务器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置普通内部服务器 |
nat server protocol pro-type global { global-address | current-interface | interface interface-type interface-number } [ global-port ] inside local-address [ local-port ] [ track vrrp virtual-router-id ] |
二者必选其一 |
nat server protocol pro-type global { global-address current-interface | interface interface-type interface-number } global-port1 global-port2 inside local-address1 local-address2 local-port [ track vrrp virtual-router-id ] |
· 目前设备支持引用接口地址作为内部服务器的外网地址,即可配置Easy IP方式的内部服务器。可以指定的接口只能是Loopback接口,且该Loopback接口必须是已存在的。
· 配置Easy IP方式的内部服务器时,如果指定的接口未配置地址,则对应的内部服务器的配置不生效。
通过配置DNS mapping,可以实现私网用户通过域名(DNS服务器在公网)访问位于同一私网的内部服务器的功能。
表1-7 配置DNS mapping
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置一条域名到内部服务器的映射 |
nat dns-map domain domain-name protocol pro-type ip global-ip port global-port |
必选 |
在完成上述配置后,在任意视图下执行display命令可以显示NAT配置后的运行情况,通过查看显示信息验证配置的效果。
表1-8 NAT显示和维护
操作 |
命令 |
显示NAT地址池的信息 |
display nat address-group [ group-number ] [ | { begin | exclude | include } regular-expression ] |
显示所有的NAT配置信息 |
display nat all [ | { begin | exclude | include } regular-expression ] |
显示地址转换关联的配置信息 |
display nat bound [ | { begin | exclude | include } regular-expression ] |
显示DNS mapping的配置信息 |
display nat dns-map [ | { begin | exclude | include } regular-expression ] |
显示内部服务器的信息 |
display nat server [ | { begin | exclude | include } regular-expression ] |
显示静态配置的信息 |
display nat static [ | { begin | exclude | include } regular-expression ] |
显示NAT的统计信息 |
display nat statistics [ | { begin | exclude | include } regular-expression ] |
内部网络用户10.110.10.8/24使用公网地址202.38.1.100访问Internet。
图1-4 静态地址转换典型配置组网图
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 配置一对一静态地址转换映射。
<AC> system-view
[AC] nat static 10.110.10.8 202.38.1.100
# 使配置的静态地址转换在接口Vlan-interface 3上生效。
[AC] interface Vlan-interface 3
[AC-Vlan-interface3] nat outbound static
[AC-Vlan-interface3] quit
一个公司拥有202.38.1.1/24至202.38.1.3/24三个公网IP地址,内部网址为10.110.0.0/16,需要实现如下功能:
· 内部网络中10.110.10.0/24网段的用户可以访问Internet,其它网段的用户不能访问Internet。使用的公网地址为202.38.1.2和202.38.1.3。
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 配置IP地址池1,包括两个公网地址202.38.1.2和202.38.1.3。
<AC> system-view
[AC] nat address-group 1 202.38.1.2 202.38.1.3
# 配置访问控制列表2001,仅允许内部网络中10.110.10.0/24网段的用户可以访问Internet。
[AC] acl number 2001
[AC-acl-basic-2001] rule permit source 10.110.10.0 0.0.0.255
[AC-acl-basic-2001] rule deny
[AC-acl-basic-2001] quit
# 在出接口Vlan-interface 3上配置ACL 2001与IP地址池1相关联,并实现NAPT。
[AC] interface Vlan-interface 3
[AC-Vlan-interface3] nat outbound 2001 address-group 1
[AC-Vlan-interface3] quit
某公司内部对外提供Web、FTP和SMTP服务,而且提供两台Web服务器。公司内部网址为10.110.0.0/16。其中,内部FTP服务器地址为10.110.10.3/16,内部Web服务器1的IP地址为10.110.10.1/16,内部Web服务器2的IP地址为10.110.10.2/16,内部SMTP服务器IP地址为10.110.10.4/16。公司拥有202.38.1.1/24至202.38.1.3/24三个IP地址。需要实现如下功能:
· 外部的主机可以访问内部的服务器。
· 选用202.38.1.1作为公司对外提供服务的IP地址,Web服务器2对外采用8080端口。
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 进入接口Vlan-interface 3。
<AC> system-view
[AC] interface Vlan-interface 3
# 设置内部FTP服务器。
[AC-Vlan-interface3] nat server protocol tcp global 202.38.1.1 21 inside 10.110.10.3 ftp
# 设置内部Web服务器1。
[AC-Vlan-interface3] nat server protocol tcp global 202.38.1.1 80 inside 10.110.10.1 www
# 设置内部Web服务器2。
[AC-Vlan-interface3] nat server protocol tcp global 202.38.1.1 8080 inside 10.110.10.2 www
# 设置内部SMTP服务器。
[AC-Vlan-interface3] nat server protocol tcp global 202.38.1.1 smtp inside 10.110.10.4 smtp
[AC-Vlan-interface3] quit
某公司内部对外提供Web和FTP服务。公司内部网址为10.110.0.0/16。其中,Web服务器地址为10.110.10.1/16,FTP服务器地址为10.110.10.2/16。公司具有202.38.1.1/24至202.38.1.3/24三个合法的IP地址。另外公司在公网有一台DNS服务器,IP地址为202.38.1.4/24。需要实现如下功能:
· 选用202.38.1.2作为公司对外提供服务的IP地址。
· 公网用户可以通过域名或IP地址访问内部服务器。
· 私网用户可以通过域名访问内部服务器。
图1-7 NAT DNS mapping典型配置组网
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 进入接口Vlan-interface 3。
<AC> system-view
[AC] interface Vlan-interface 3
# 配置内部Web服务器。
[AC-Vlan-interface3] nat server protocol tcp global 202.38.1.2 inside 10.110.10.1 www
# 配置内部FTP服务器。
[AC-Vlan-interface3] nat server protocol tcp global 202.38.1.2 inside 10.110.10.2 ftp
[AC-Vlan-interface3] quit
# 配置两条DNS mapping表项:Web服务器的域名www.server.com对应IP地址202.38.1.2;FTP服务器的域名ftp.server.com对应IP地址202.38.1.2。
[AC] nat dns-map domain www.server.com protocol tcp ip 202.38.1.2 port www
[AC] nat dns-map domain ftp.server.com protocol tcp ip 202.38.1.2 port ftp
[AC] quit
# 上述配置完成后,可以用display命令查看DNS mapping的配置情况。
<AC> display nat dns-map
NAT DNS mapping information:
There are currently 2 NAT DNS mapping(s)
Domain-name: www.server.com
Global-IP : 202.38.1.2
Global-port: 80(www)
Protocol : 6(TCP)
Domain-name: ftp.server.com
Global-IP : 202.38.1.2
Global-port: 21(ftp)
Protocol : 6(TCP)
私网Host A和公网Host B均可通过域名www.server.com访问私网内的Web服务器,以及通过域名ftp.server.com访问私网内的FTP服务器。
故障排除:通过打开NAT的调试信息开关,根据设备上的调试信息,初步定位错误,然后使用其它命令作进一步的判断。调试时,注意观察地址转换后的源地址,要保证这个地址是希望转换的地址,否则可能会是地址池配置错误。同时要保证目的网络到地址池中地址段的路由可达。注意防火墙以及地址转换本身的访问控制列表对地址转换造成的影响,同时注意路由的配置。
故障排除:如果外部主机不能正常访问内部服务器,请检查是否是内部服务器主机的配置有错或路由器上对内部服务器的配置有错,如对内部服务器的IP地址指定错误等等。同时也有可能是防火墙禁止了外部主机对内部网络的访问,可以用display acl命令来查看。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!