NAT 技术
01 NAT 概述
全局NAT的优先级高于接口NAT。若同时存在全局NAT策略和接口NAT的配置,当流量与全局NAT策略中任意一条过滤规则匹配,那么接口NAT中的源地址转换和目的转换的配置均不生效。建议不要同时配置接口NAT和全局NAT。
设备上经过NAT转换的报文不会再进行AFT转换。
使用NAT功能进行地址转换时,NAT模块会发布公网IP地址的主机路由。如果公网IP地址是一段地址范围,则NAT模块会对公网IP地址范围划分网段,划分网段时使用的掩码长度为8、16、24、26、28、30。
例如,公网IP地址范围为122.90.12.128~122.90.12.135,则NAT模块发布的主机路由的目的地址和掩码长度为122.90.12.128/30和122.90.12.132/30。
02 NAT 概念
· NAT设备:配置了NAT功能的连接内部网络(私网地址)和外部网络(公网地址)的边缘设备。
· NAT接口:NAT设备上应用了NAT相关配置的接口。
· NAT规则:用于进行地址转换的NAT配置称为NAT规则。NAT规则的位置决定了匹配的优先级,位置越靠前的NAT规则,其匹配优先级越高。
· NAT地址:用于进行地址转换的公网IP地址,与外部网络路由可达,可静态指定或动态分配。
· NAT表项:NAT设备上用于记录网络地址转换映射关系的表项。关于NAT表项的详细介绍请参见“1.6 NAT表项”。
· Easy IP功能:NAT转换时直接使用设备上接口的IP地址作为NAT地址。设备上接口的地址可静态指定或通过DHCP或PPPoE等协议动态获取。
· 全局NAT:NAT规则的应用范围为全局。对于全局NAT,所有经过NAT设备的流量都会进行匹配,并对匹配NAT规则的流量进行地址转换。
· 接口NAT:NAT规则的应用范围为接口。对于接口NAT,只有经过应用NAT规则的接口的流量才会进行匹配,并对匹配NAT规则的流量进行地址转换。
注意:(全局NAT优先级大于接口NAT)
03 NAT 工作原理
如图1-1所示,一台NAT设备连接内网和外网,当有报文经过NAT设备时,NAT的基本工作过程如下:
(1) 当内网用户主机(192.168.1.3)向外网服务器(1.1.1.2)发送的IP报文通过NAT设备时,NAT设备查看报文的IP头内容,发现该报文是发往外网的,则将其源IP地址字段的内网地址192.168.1.3转换成一个可路由的外网地址20.1.1.1,并将该报文发送给外网服务器,同时在NAT设备上建立表项记录这一映射关系。
(2) 外网服务器给内网用户发送的应答报文到达NAT设备后,NAT设备使用报文信息匹配建立的表项,然后查找匹配到的表项记录,用内网私有地址192.168.1.3替换初始的目的IP地址20.1.1.1。
上述的NAT过程对终端(如图中的Host和Server)来说是透明的。对外网服务器而言,它认为内网用户主机的IP地址就是20.1.1.1,并不知道存在192.168.1.3这个地址。因此,NAT“隐藏”了企业的私有网络。
04 NAT转换控制
在实际应用中,如果用户希望某些内部网络的主机可以访问外部网络,而某些主机不允许访问;或者希望某些外部网络的主机可以访问内部网络,而某些主机不允许访问。即NAT设备只对符合要求的报文进行地址转换。
NAT设备可以利用ACL(Access Control List,访问控制列表)来对地址转换的使用范围进行控制,通过定义ACL规则,并将其与NAT配置相关联,实现只对匹配指定的ACL permit规则的报文才进行地址转换的目的。而且,NAT仅使用规则中定义的源IP地址、源端口号、目的IP地址、目的端口号、传输层协议类型和VPN实例这几个元素进行报文匹配,忽略其它元素。
05 NAT 转换方式
①静态IP地址转换
静态地址转换是指外部网络和内部网络之间的地址映射关系由配置确定,该方式适用于内部网络与外部网络之间存在固定访问需求的组网环境。静态地址转换支持双向互访:内网用户可以主动访问外网,外网用户也可以主动访问内网。
一 NAT 出口方向实验
1 配置接口的IP地址
2 配置nat 静态映射
3 测试 无法ping 通 202.38.1.100
4 接口上开启静态Nat'映射规则
[FW-Router-BJ-GigabitEthernet0/1]nat static enable
6
5 查看配置
[FW-Router-BJ]display nat static
6 测试
7 查看NAT 会话状态
8 静态NAT 配置脚本
[FW-Router-BJ] nat static outbound 10.110.10.8 202.38.1.100
[FW-Router-BJ-GigabitEthernet0/1]display this
#
interface GigabitEthernet0/1
port link-mode route
combo enable copper
ip address 10.110.10.254 255.255.255.0
nat static enable
#
NAT 地址组实验
二 NAT 地址池+ACL 规则案例
1 创建NAT地址组
注释:创建的是NAT地址组 地址范围 202.38.1.2 到 202.38.1.34
2 创建ACL规则 ACL规则分为基础ACL 高级ACL
3 调用规则和nat地址组 在出口方向 NAT out
4 测试
[FW-Router-BJ]undo nat address-group 23 //删除配置
[FW-Router-BJ-GigabitEthernet0/2]undo nat outbound 3998 //删除配置
三 内网用户通过NAT地址访问外网配置举例(地址重叠)
1 配置IP地址
2 配置ACL 策略
3 创建NAT地址组 地址重复
[Router] ip route-static 202.38.1.2 32 gigabitethernet 1/0/2 20.2.2.2
四 外网用户通过外网地址访问内网服务器
1. 组网需求
某公司内部对外提供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至202.38.1.3三个公网IP地址。需要实现如下功能:
· 外部的主机可以访问内部的服务器。
· 选用202.38.1.1作为公司对外提供服务的IP地址,Web服务器2对外采用8080端口。
2. 组网图
图2-6 外网用户通过外网地址访问内网服务器配置组网图
3. 配置步骤
3.1 按照组网图配置各接口的IP地址,具体配置过程略。
3.2 进入接口GigabitEthernet1/0/2。
<Router> system-view
[Router] interface gigabitethernet 1/0/2
3.3 配置内部FTP服务器,允许外网主机使用地址202.38.1.1、端口号21访问内网FTP服务器。
[Router-GigabitEthernet1/0/2] nat server protocol tcp global 202.38.1.1 21 inside 10.110.10.3 ftp
3.4 配置内部Web服务器1,允许外网主机使用地址202.38.1.1、端口号80访问内网Web服务器1。
[Router-GigabitEthernet1/0/2] nat server protocol tcp global 202.38.1.1 80 inside 10.110.10.1 http
3.5 配置内部Web服务器2,允许外网主机使用地址202.38.1.1、端口号8080访问内网Web服务器2。
[Router-GigabitEthernet1/0/2] nat server protocol tcp global 202.38.1.1 8080 inside 10.110.10.2 http
3.6 配置内部SMTP服务器,允许外网主机使用地址202.38.1.1以及SMTP协议定义的端口访问内网SMTP服务器。
[Router-GigabitEthernet1/0/2] nat server protocol tcp global 202.38.1.1 smtp inside 10.110.10.4 smtp
五 外网用户通过域名访问内网服务器
1. 组网需求
· 某公司内部对外提供Web服务,Web服务器地址为10.110.10.2/24。
· 该公司在内网有一台DNS服务器,IP地址为10.110.10.3/24,用于解析Web服务器的域名。
· 该公司拥有两个外网IP地址:202.38.1.2和202.38.1.3。
需要实现,外网主机可以通过域名访问内网的Web服务器。
3. 配置思路
· 外网主机通过域名访问Web服务器,首先需要通过访问内网DNS服务器获取Web服务器的IP地址,因此需要通过配置NAT内部服务器将DNS服务器的内网IP地址和DNS服务端口映射为一个外网地址和端口。
· DNS服务器回应给外网主机的DNS报文载荷中携带了Web服务器的内网IP地址,因此需要将DNS报文载荷中的内网IP地址转换为一个外网IP地址。外网地址分配可以通过出方向动态地址转换功能实现,转换载荷信息可以通过DNS ALG功能实现。
4. 配置步骤
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 开启DNS协议的ALG功能。
<Router> system-view
[Router] nat alg dns
# 配置ACL 2000,允许对内部网络中10.110.10.2的报文进行地址转换。
[Router] acl basic 2000
[Router-acl-ipv4-basic-2000] rule permit source 10.110.10.2 0
[Router-acl-ipv4-basic-2000] quit
4.1 创建地址组1。
[Router] nat address-group 1
4.2 添加地址组成员202.38.1.3。
[Router-address-group-1] address 202.38.1.3 202.38.1.3
[Router-address-group-1] quit
4.3 在接口GigabitEthernet1/0/2上配置NAT内部服务器,允许外网主机使用地址202.38.1.2访问内网DNS服务器。
[Router] interface gigabitethernet 1/0/2
[Router-GigabitEthernet1/0/2] nat server protocol udp global 202.38.1.2 inside 10.110.10.3 dns
4.4 在接口GigabitEthernet1/0/2上配置出方向动态地址转换,允许使用地址组1中的地址对DNS应答报文载荷中的内网地址进行转换,并在转换过程中不使用端口信息,以及允许反向地址转换。
[Router-GigabitEthernet1/0/2] nat outbound 2000 address-group 1 no-pat reversible
4.5. 验证配置
以上配置完成后,外网Host能够通过域名访问内网Web server。通过查看如下显示信息,可以验证以上配置成功。
[Router] display nat all
六外网用户通过域名访问内网服务器配置
1. 组网需求
· 某公司内网使用的IP地址为192.168.1.0/24。
· 该公司内部对外提供Web服务,Web服务器地址为192.168.1.2/24。
· 该公司在内网有一台DNS服务器,IP地址为192.168.1.3/24,用于解析Web服务器的域名。
· 该公司拥有三个外网IP地址:202.38.1.2、202.38.1.3和202.38.1.4。
需要实现,外网主机可以通过域名访问与其地址重叠的内网Web服务器。
3. 配置思路
这是一个典型的双向NAT应用,具体配置思路如下。
· 外网主机通过域名访问Web服务器,首先需要访问内部的DNS服务器获取Web服务器的IP地址,因此需要通过配置NAT内部服务器将DNS服务器的内网IP地址和DNS服务端口映射为一个外网地址和端口。
· DNS服务器回应给外网主机的DNS报文载荷中携带了Web服务器的内网IP地址,该地址与外网主机地址重叠,因此在出方向上需要为内网Web服务器动态分配一个NAT地址,并将载荷中的地址转换为该地址。NAT地址分配可以通过出方向动态地址转换功能实现,转换载荷信息可以通过DNS ALG功能实现。
· 外网主机得到内网Web服务器的IP地址之后(该地址为NAT地址),使用该地址访问内网Web服务器,因为外网主机的地址与内网Web服务器的真实地址重叠,因此在入方向上也需要为外网主机动态分配一个NAT地址,可以通过入方向动态地址转换实现。
· NAT设备上没有目的地址为外网主机对应NAT地址的路由,因此需要手工添加静态路由,使得目的地址为外网主机NAT地址的报文的出接口为GigabitEthernet1/0/2。
4. 配置步骤
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 开启DNS协议的ALG功能。
<Router> system-view
[Router] nat alg dns
# 配置ACL 2000,允许对内部网络中192.168.1.0/24网段的报文进行地址转换。
[Router] acl basic 2000
[Router-acl-ipv4-basic-2000] rule permit source 192.168.1.0 0.0.0.255
[Router-acl-ipv4-basic-2000] quit
# 创建地址组1。
[Router] nat address-group 1
# 添加地址组成员202.38.1.2。
[Router-address-group-1] address 202.38.1.2 202.38.1.2
[Router-address-group-1] quit
# 创建地址组2。
[Router] nat address-group 2
# 添加地址组成员202.38.1.3。
[Router-address-group-2] address 202.38.1.3 202.38.1.3
[Router-address-group-2] quit
# 在接口GigabitEthernet1/0/2上配置NAT内部服务器,允许外网主机使用地址202.38.1.4访问内网DNS服务器。
[Router] interface gigabitethernet 1/0/2
[Router-GigabitEthernet1/0/2] nat server protocol udp global 202.38.1.4 inside 192.168.1.3 dns
# 在接口GigabitEthernet1/0/2上配置出方向动态地址转换,允许使用地址组1中的地址对DNS应答报文载荷中的内网地址进行转换,并在转换过程中不使用端口信息,以及允许反向地址转换。
[Router-GigabitEthernet1/0/2] nat outbound 2000 address-group 1 no-pat reversible
# 在接口GigabitEthernet1/0/2上配置入方向动态地址转换,允许使用地址组2中的地址对外网访问内网的报文进行源地址转换,并在转换过程中使用端口信息。
[Router-GigabitEthernet1/0/2] nat inbound 2000 address-group 2
# 配置到达202.38.1.3地址的静态路由,出接口为GigabitEthernet1/0/2,下一跳地址为20.2.2.2(20.2.2.2为本例中的直连下一跳地址,实际使用中请以具体组网情况为准)。
[Router] ip route-static 202.38.1.3 32 gigabitethernet 1/0/2 20.2.2.2
5. 验证配置
# 以上配置完成后,外网Host能够通过域名访问内网相同IP地址的Web server。通过查看如下显示信息,可以验证以上配置成功。
[Router] display nat all
七 内网用户通过NAT地址访问内网服务器
1. 组网需求
· 某公司内部网络中有一台FTP服务器,地址为192.168.1.4/24。
· 该公司拥有两个外网IP地址:202.38.1.1和202.38.1.2。
需要实现如下功能:
· 外网主机可以通过202.38.1.2访问内网中的FTP服务器。
· 内网主机也可以通过202.38.1.2访问内网中的FTP服务器
3. 配置思路
该需求为典型的C-S模式的NAT hairpin应用,具体配置思路如下。
· 为使外网主机可以通过外网地址访问内网FTP服务器,需要在外网侧接口配置NAT内部服务器。
· 为使内网主机通过外网地址访问内网FTP服务器,需要在内网侧接口开启NAT hairpin功能。其中,目的IP地址转换通过匹配外网侧接口上的内部服务器配置来完成,源地址转换通过匹配内部服务器配置所在接口上的出方向动态地址转换或出方向静态地址转换来完成,本例中采用出方向动态地址转换配置。
4. 配置步骤
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 配置ACL 2000,允许对内部网络中192.168.1.0/24网段的报文进行地址转换。
<Router> system-view
[Router] acl basic 2000
[Router-acl-ipv4-basic-2000] rule permit source 192.168.1.0 0.0.0.255
[Router-acl-ipv4-basic-2000] quit
# 在接口GigabitEthernet1/0/2上配置NAT内部服务器,允许外网主机使用地址202.38.1.2访问内网FTP服务器,同时使得内网主机访问内网FTP服务器的报文可以进行目的地址转换。
[Router] interface gigabitethernet 1/0/2
[Router-GigabitEthernet1/0/2] nat server protocol tcp global 202.38.1.2 inside 192.168.1.4 ftp
# 在接口GigabitEthernet1/0/2上配置Easy IP方式的出方向动态地址转换,使得内网主机访问内网FTP服务器的报文可以使用接口GigabitEthernet1/0/2的IP地址进行源地址转换。
[Router-GigabitEthernet1/0/2] nat outbound 2000
# 在接口GigabitEthernet1/0/1上开启NAT hairpin功能。
[Router] interface gigabitethernet 1/0/1
[Router-GigabitEthernet1/0/1] nat hairpin enable
5. 验证配置
# 以上配置完成后,内网主机和外网主机均能够通过外网地址访问内网FTP Server。通过查看如下显示信息,可以验证以上配置成功。
[Router] display nat all
八 内网用户通过NAT地址互访配置
1. 组网需求
某P2P应用环境中,内网中的客户端首先需要向外网服务器进行注册,外网服务器会记录客户端的IP地址和端口号。如果内网的一个客户端要访问内网的另一个客户端,首先需要向服务器获取对方的IP地址和端口号。
需要实现如下功能:
· 内网客户端可以向外网中的服务器注册,且注册为一个相同的外网地址。
· 内网客户端能够通过从服务器获得的IP地址和端口进行互访。
2. 组网图
图2-10 内网用户通过NAT地址互访配置组网图
3. 配置思路
该需求为典型的P2P模式的NAT hairpin应用,具体配置思路如下。
· 内网中的客户端需要向外网中的服务器注册,因此需要进行源地址转换,可以通过在外网侧接口配置出方向动态地址转换实现。
· 服务器记录客户端的IP地址和端口号,且该地址和端口号是NAT转换后的。由于服务器记录的客户端IP地址和端口号需要供任意源地址访问,因此客户端地址的转换关系必须不关心对端地址,这可以通过配置EIM模式的动态地址转换实现。
· 内部主机通过外网地址进行互访,需要在内网侧接口开启NAT hairpin功能。
4. 配置步骤
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 配置ACL 2000,允许对内部网络中192.168.1.0/24网段的报文进行地址转换。
<Router> system-view
[Router] acl basic 2000
[Router-acl-ipv4-basic-2000] rule permit source 192.168.1.0 0.0.0.255
[Router-acl-ipv4-basic-2000] quit
# 在外网侧接口GigabitEthernet1/0/2上配置Easy IP方式的出方向动态地址转换,允许使用接口GigabitEthernet1/0/2的IP地址对内网访问外网的报文进行源地址转换,因为多个内部主机共用一个外网地址,因此需要配置为PAT方式,即转换过程中使用端口信息。
[Router] interface gigabitethernet 1/0/2
[Router-GigabitEthernet1/0/2] nat outbound 2000
# 配置PAT方式下的地址转换模式为EIM,即只要是来自相同源地址和源端口号的且匹配ACL 2000的报文,不论其目的地址是否相同,通过PAT转换后,其源地址和源端口号都被转换为同一个外部地址和端口号。
[Router] nat mapping-behavior endpoint-independent acl 2000
# 在内网侧接口GigabitEthernet1/0/1上开启NAT hairpin功能。
[Router] interface gigabitethernet 1/0/1
[Router-GigabitEthernet1/0/1] nat hairpin enable
5. 验证配置
# 以上配置完成后,Host A、Host B和Host C 分别向外网服务器注册之后,它们之间可以相互访问。通过查看如下显示信息,可以验证以上配置成功。
[Router] display nat all
九 内网用户通过NAT地址互访配置
1. 组网需求
某公司两个部门由于需要业务隔而分属不同的VPN实例,且两个部门内部使用了相同的子网地址空间。现在要求这两个部门的主机Host A 和Host B之间能够通过NAT地址互相访问。
2. 组网图
3. 配置思路
这是一个典型的两次NAT应用:两个VPN之间主机交互的报文的源IP地址和目的IP地址都需要转换,即需要在连接两个VPN的接口上先后进行两次NAT,这可以通过在NAT设备的两侧接口上分别配置静态地址转换实现。
4. 配置步骤
# 按照组网图配置各接口的VPN实例和IP地址,具体配置过程略。
# 配置VPN 1内的IP地址192.168.1.2到VPN 2内的IP地址172.16.1.2之间的静态地址转换映射。
<Router> system-view
[Router] nat static outbound 192.168.1.2 vpn-instance vpn1 172.16.1.2 vpn-instance vpn2
# 配置VPN 2内的IP地址192.168.1.2到VPN 1内的IP地址172.16.2.2之间的静态地址转换映射。
[Router] nat static outbound 192.168.1.2 vpn-instance vpn2 172.16.2.2 vpn-instance vpn1
# 在接口GigabitEthernet1/0/2上配置静态地址转换。
[Router] interface gigabitethernet 1/0/2
[Router-GigabitEthernet1/0/2] nat static enable
# 在接口GigabitEthernet1/0/1上配置静态地址转换。
[Router] interface gigabitethernet 1/0/1
[Router-GigabitEthernet1/0/1] nat static enable
5. 验证配置
# 以上配置完成后,Host A和Host B可以互通,且Host A的对外地址为172.16.1.2,Host B的对外地址为172.16.2.2。通过查看如下显示信息,可以验证以上配置成功。
[Router] display nat all
十 负载分担内部服务器配置
1. 组网需求
某公司内部拥有3台FTP服务器对外提供FTP服务。
需要实现如下功能:
· 使用IP地址为202.38.1.1作为公司对外提供服务的IP地址。
· 3台FTP服务器可以同时对外提供服务,并进行负载分担。
3. 配置步骤
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 配置内部服务器组0及其成员10.110.10.1、10.110.10.2和10.110.10.3。
<Router> system-view
[Router] nat server-group 0
[Router-nat-server-group-0] inside ip 10.110.10.1 port 21
[Router-nat-server-group-0] inside ip 10.110.10.2 port 21
[Router-nat-server-group-0] inside ip 10.110.10.3 port 21
[Router-nat-server-group-0] quit
# 在接口Gigabitethernet1/0/2上配置负载分担内部服务器,引用内部服务器组0,该组内的主机共同对外提供FTP服务。
[Router] interface gigabitethernet 1/0/2
[Router-GigabitEthernet1/0/2] nat server protocol tcp global 202.38.1.1 ftp inside server-group 0
4. 验证配置
# 以上配置完成后,外网主机可以访问内网FTP服务器组。通过查看如下显示信息,可以验证以上配置成功。
[Router] display nat all
十一 NAT DNS mapping配置
1. 组网需求
某公司内部对外提供Web和FTP服务。公司内部网址为10.110.0.0/16。其中,Web服务器地址为10.110.10.1/16,FTP服务器地址为10.110.10.2/16。公司具有202.38.1.1至202.38.1.3三个公网IP地址。另外公司在外网有一台DNS服务器,IP地址为202.38.1.4。
需要实现如下功能:
· 选用202.38.1.2作为公司对外提供服务的IP地址。
· 外网用户可以通过域名或IP地址访问内部服务器。
· 内网用户可以通过域名访问内部服务器。
3. 配置思路
· 内网服务器对外提供服务,需要配置NAT内部服务器将各服务器的内网IP地址和端口映射为一个外网地址和端口。
· 内网主机通过域名访问内网服务器时,首先需要通过出接口地址转换分配的外网地址访问外网的DNS服务器,并获取内网服务器的内网IP地址。由于DNS服务器向内网主机发送的响应报文中包含的是内网服务器的外网地址,因此NAT设备需要将DNS报文载荷内的外网地址转换为内网地址,这可以通过查找DNS mapping映射表配合DNS ALG功能实现。DNS mapping映射表用于实现根据“域名+外网IP地址+外网端口号+协议类型”查找到对应的“内网IP+内网端口号”。
4. 配置步骤
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 开启DNS的NAT ALG功能。
<Router> system-view
[Router] nat alg dns
# 进入接口GigabitEthernet1/0/2。
[Router] interface gigabitethernet 1/0/2
# 配置NAT内部Web服务器,允许外网主机使用地址202.38.1.2访问内网Web服务器。
[Router-GigabitEthernet1/0/2] nat server protocol tcp global 202.38.1.2 inside 10.110.10.1 http
# 配置NAT内部FTP服务器,允许外网主机使用地址202.38.1.2访问内网FTP服务器。
[Router-GigabitEthernet1/0/2] nat server protocol tcp global 202.38.1.2 inside 10.110.10.2 ftp
# 在接口GigabitEthernet1/0/2上配置Easy IP方式的出方向动态地址转换。
[Router-GigabitEthernet1/0/2] nat outbound
# 配置两条DNS mapping表项:Web服务器的域名www.example.com对应IP地址202.38.1.2;FTP服务器的域名ftp.example.com对应IP地址202.38.1.2。
[Router] nat dns-map domain www.example.com protocol tcp ip 202.38.1.2 port https
[Router] nat dns-map domain ftp.example.com protocol tcp ip 202.38.1.2 port ftp
[Router] quit
5. 验证配置
# 以上配置完成后,内网主机和外网主机均可以通过域名访问内网服务器。通过查看如下显示信息,可以验证以上配置成功。
[Router] display nat all
十二 NAT444端口块静态映射
服务器配置IP地址
root@HCL-Server:/# ls //查看目录
切换文件夹
root@HCL-Server:/# cd /etc/
root@HCL-Server:/etc# ls
切换文件夹
文件的读写
1. 组网需求
内部网络用户10.110.10.1~10.110.10.10使用外网地址202.38.1.100访问Internet。内网用户地址基于NAT444端口块静态映射方式复用外网地址202.38.1.100,外网地址的端口范围为10001~15000,端口块大小为500。
3. 配置步骤
# 按照组网图配置各接口的IP地址,具体配置过程略。
3.1 创建NAT端口块组1。
<Router> system-view
[Router] nat port-block-group 1
3.2 添加私网地址成员10.110.10.1~10.110.10.10。g
[Router-port-block-group-1] local-ip-address 10.110.10.1 10.110.10.10
3.3 添加公网地址成员为202.38.1.100。
[Router-port-block-group-1] global-ip-pool 202.38.1.100 202.38.1.100
3.4 配置端口块大小为500,公网地址的端口范围为10001~15000。
[Router-port-block-group-1] block-size 500
[Router-port-block-group-1] port-range 10001 15000
[Router-port-block-group-1] quit
脚本
#
nat port-block-group 1
local-ip-address 192.168.20.1 192.168.20.10
local-ip-address 192.168.30.1 192.168.30.10
global-ip-pool 202.38.1.100 202.38.1.100
block-size 500
port-range 1001 15000
#
3.5 在接口GigabitEthernet1/0/2上配置NAT444端口块静态映射,引用端口块组1。
[Router] interface gigabitethernet 1/0/2
[Router-GigabitEthernet1/0/2] nat outbound port-block-group 1 //调用这个接口应用
[Router-GigabitEthernet1/0/2] quit
4. 验证配置
# 以上配置完成后,内网主机可以访问外网服务器。通过查看如下显示信息,可以验证以上配置成功。
[Router] display nat all
十三 NAT444端口块动态映射
1. 组网需求
· 某公司内网使用的IP地址为192.168.0.0/16。
· 该公司拥有202.38.1.2和202.38.1.3两个外网IP地址。
需要实现,内部网络中的192.168.1.0/24网段的用户可以访问Internet,其它网段的用户不能访问Internet。基于NAT444端口块动态映射方式复用两个外网地址202.38.1.2和202.38.1.3,外网地址的端口范围为1024~65535,端口块大小为300。当为某用户分配的端口块资源耗尽时,再为其增量分配1个端口块
3. 配置步骤
# 按照组网图配置各接口的IP地址,具体配置过程略。
3.1 配置地址组0,包含两个外网地址202.38.1.2和202.38.1.3,外网地址的端口范围为1024~65535,端口块大小为300,增量端口块数为1。
<Router> system-view
[Router] nat address-group 0
[Router-address-group-0] address 202.38.1.2 202.38.1.3
[Router-address-group-0] port-range 1024 65535
[Router-address-group-0] port-block block-size 300 extended-block-number 1
[Router-address-group-0] quit
3.2 配置ACL 2000,仅允许对内部网络中192.168.1.0/24网段的用户报文进行地址转换。
[Router] acl basic 2000
[Router-acl-ipv4-basic-2000] rule permit source 192.168.1.0 0.0.0.255
[Router-acl-ipv4-basic-2000] quit
3.3 在接口GigabitEthernet1/0/2上配置出方向动态地址转换,允许使用地址组0中的地址对匹配ACL 2000的报文进行源地址转换,并在转换过程中使用端口信息。
[Router] interface gigabitethernet 1/0/2
[Router-GigabitEthernet1/0/2] nat outbound 2000 address-group 0
3.4 验证配置
# 以上配置完成后,Host A能够访问外网服务器,Host B和Host C无法访问外网服务器。通过查看如下显示信息,可以验证以上配置成功。
[Router] display nat all
十四双出口组网中的SIP
1. 组网需求
· 某公司内部的SIP用户User使用的IP地址为192.168.0.0/16。
· 该公司拥有202.38.1.2和202.38.2.2两个外网IP地址。
· Router作为NAT网关连接企业内部和Internet。User能够通过Router上连接不同运营商的出接口访问不同的SIP服务器。User访问SIP Server A时,Router将报文的源IP地址转换为202.38.1.2;User访问SIP Server B时,Router将报文的源IP地址转换为202.38.2.2。
· User访问SIP Server A后,Router会生成关联表,用于记录对SIP协议报文载荷中的地址进行转换的映射关系。后续User访问SIP Server B时,Router首先查找关联表对SIP协议报文进行地址转换。这种情况下,Router可能会将User访问SIP Server B的报文载荷中的IP地址转换为202.38.1.2。SIP Server B收到User发送的报文后,向User发送目的IP为202.38.1.2的数据报文。由于ISP 2没有去往202.38.1.2的路由,导致SIP Server B发送的数据报文无法正常转发。为了避免上述问题的产生,需要在Router上开启SIP协议关联表项匹配目的地址功能。开启此功能后,当数据报文匹配关联表项时,需要同时匹配目的地址,避免仅匹配关联表项的源IP和源端口号可能导致的地址转换出错的问题
3. 配置步骤
# 按照组网图配置各接口的IP地址,具体配置过程略。
# 配置地址组0,包含外网地址202.38.1.2。
<Router> system-view
[Router] nat address-group 0
[Router-address-group-0] address 202.38.1.2 202.38.1.2
[Router-address-group-0] quit
# 配置地址组1,包含外网地址202.38.2.2。
[Router] nat address-group 1
[Router-address-group-1] address 202.38.2.2 202.38.2.2
[Router-address-group-1] quit
# 配置ACL 2000,仅允许对内部网络中192.168.1.0/24网段的用户报文进行地址转换。
[Router] acl basic 2000
[Router-acl-ipv4-basic-2000] rule permit source 192.168.1.0 0.0.0.255
[Router-acl-ipv4-basic-2000] quit
# 在接口GigabitEthernet1/0/2上配置出方向动态地址转换,允许使用地址组0中的地址对匹配ACL 2000的报文进行源地址转换,并在转换过程中使用端口信息。
[Router] interface gigabitethernet 1/0/2
[Router-GigabitEthernet1/0/2] nat outbound 2000 address-group 0
[Router-GigabitEthernet1/0/2] quit
# 在接口GigabitEthernet1/0/3上配置出方向动态地址转换,允许使用地址组1中的地址对匹配ACL 2000的报文进行源地址转换,并在转换过程中使用端口信息。
[Router] interface gigabitethernet 1/0/3
[Router-GigabitEthernet1/0/3] nat outbound 2000 address-group 1
[Router-GigabitEthernet1/0/3] quit
# 开启SIP的NAT ALG功能。
[Router] nat alg sip
# 开启SIP协议会话关联表项匹配目的地址功能。
[Router] session relation-table match destination-ip sip enable
4. 验证配置
# 通过以下显示命令,可以看到Host访问SIP server A时生成NAT会话信息。
[Router] display nat session verbose
②源IP地址转换
源IP地址转换方式是一种动态地址转换方式,动态地址转换是指内部网络和外部网络之间的地址映射关系在建立连接的时候动态产生。该方式通常适用于内部网络有大量用户需要访问外部网络的组网环境。
源IP地址转换包括NO-PAT模式的地址转换、基于端口的PAT模式的地址转换和基于端口块的PAT模式的地址转换。
1. NO-PAT模式
NO-PAT(Not Port Address Translation)模式下,一个外网地址同一时间只能分配给一个内网地址进行地址转换,不能同时被多个内网地址共用。当使用某外网地址的内网用户停止访问外网时,NAT会将其占用的外网地址释放并分配给其他内网用户使用。
该模式下,NAT设备只对报文的IP地址进行NAT转换,同时会建立一个NO-PAT表项用于记录IP地址映射关系,并可支持所有IP协议的报文。
2. 基于端口的PAT模式
PAT(Port Address Translation)模式下,一个NAT地址可以同时分配给多个内网地址共用。该模式下,NAT设备需要对报文的IP地址和传输层端口同时进行转换,且只支持TCP、UDP和ICMP(Internet Control Message Protocol,互联网控制消息协议)查询报文。
图1-2 PAT基本原理示意图
如图1-2所示,三个带有内网地址的报文到达NAT设备,其中报文1和报文2来自同一个内网地址但有不同的源端口号,报文1和报文3来自不同的内网地址但具有相同的源端口号。通过PAT映射,三个报文的源IP地址都被转换为同一个外网地址,但每个报文都被赋予了不同的源端口号,因而仍保留了报文之间的区别。当各报文的回应报文到达时,NAT设备仍能够根据回应报文的目的IP地址和目的端口号来区别该报文应转发到的内部主机。
采用PAT方式可以更加充分地利用IP地址资源,实现更多内部网络主机对外部网络的同时访问。
目前,PAT支持两种不同的地址转换模式:
· Endpoint-Independent Mapping(不关心对端地址和端口转换模式):只要是来自相同源地址和源端口号的报文,不论其目的地址是否相同,通过PAT映射后,其源地址和源端口号都被转换为同一个外部地址和端口号,该映射关系会被记录下来并生成一个EIM表项;并且NAT设备允许所有外部网络的主机通过该转换后的地址和端口来访问这些内部网络的主机。这种模式可以很好的支持位于不同NAT网关之后的主机进行互访。
· Address and Port-Dependent Mapping(关心对端地址和端口转换模式):对于来自相同源地址和源端口号的报文,相同的源地址和源端口号并不要求被转换为相同的外部地址和端口号,若其目的地址或目的端口号不同,通过PAT映射后,相同的源地址和源端口号通常会被转换成不同的外部地址和端口号。与Endpoint-Independent Mapping模式不同的是,NAT设备只允许这些目的地址对应的外部网络的主机可以通过该转换后的地址和端口来访问这些内部网络的主机。这种模式安全性好,但由于同一个内网主机地址转换后的外部地址不唯一,因此不便于位于不同NAT网关之后的主机使用内网主机转换后的地址进行互访。
3. 基于端口块的PAT模式
基于端口块的PAT模式是一种基于端口范围的PAT动态地址转换,即一个私网IP地址在一个时间段内独占一个公网IP地址的某个端口块。例如:假设私网IP地址10.1.1.1独占公网IP地址202.1.1.1的一个端口块10001~10256,则该私网IP向公网发起的所有连接,源IP地址都将被转换为同一个公网IP地址202.1.1.1,而源端口将被转换为端口块10001~10256之内的一个端口。
基于端口块的PAT模式包括端口块方式包括静态映射和动态映射两种,主要应用在NAT444中。
· 端口块静态映射
端口块静态映射是指,NAT网关设备根据配置自动计算私网IP地址到公网IP地址、端口块的静态映射关系,并创建静态端口块表项。当私网IP地址成员中的某个私网IP地址向公网发起新建连接时,根据私网IP地址匹配静态端口块表项,获取对应的公网IP地址和端口块,并从端口块中动态为其分配一个公网端口,对报文进行地址转换。
配置端口块静态映射时,需要创建一个端口块组,并在端口块组中配置私网IP地址成员、公网IP地址成员、端口范围和端口块大小。假设端口块组中每个公网IP地址的可用端口块数为m(即端口范围除以端口块大小),则端口块静态映射的算法如下:按照从小到大的顺序对私网IP地址成员中的所有IP地址进行排列,最小的m个私网IP地址对应最小的公网IP地址及其端口块,端口块按照起始端口号从小到大的顺序分配;次小的m个私网IP地址对应次小的公网IP地址及其端口块,端口块的分配顺序相同;依次类推。
· 端口块动态映射
当内网用户向公网发起连接时,首先根据动态地址转换中的ACL规则进行过滤,决定是否需要进行源地址转换。对于需要进行源地址转换的连接,当该连接为该用户的首次连接时,从所匹配的动态地址转换配置引用的NAT地址组中获取一个公网IP地址,从该公网IP地址中动态分配一个端口块,创建动态端口块表项,然后从端口块表项中动态分配一个公网端口,进行地址转换。对该用户后续连接的转换,均从生成的动态端口块表项中分配公网端口。当该用户的所有连接都断开时,回收为其分配的端口块资源,删除相应的动态端口块表项。
端口块动态映射支持增量端口块分配。当为某私网IP地址分配的端口块资源耗尽(端口块中的所有端口都被使用)时,如果该私网IP地址向公网发起新的连接,则无法再从端口块中获取端口,无法进行地址转换。此时,如果预先在相应的NAT地址组中配置了增量端口块数,则可以为该私网IP地址分配额外的端口块,进行地址转换。
③目的IP地址转换
在实际应用中,内网中的服务器可能需要对外部网络提供一些服务,例如给外部网络提供Web服务,或是FTP服务。这种情况下,通过定义内部服务器对外提供服务使用的外部IP地址+端口与内部服务器在内网使用的地址+端口的映射关系,实现NAT设备允许外网用户通过指定的NAT地址和端口访问这些内部服务器。
如图1-3所示,外部网络用户访问内部网络服务器的数据报文经过NAT设备时,NAT设备将报文的目的地址与接口上的NAT内部服务器配置进行匹配,并将匹配上的访问内部服务器的请求报文的目的IP地址和端口号转换成内部服务器的私有IP地址和端口号。当内部服务器回应该报文时,NAT设备再根据已有的地址映射关系将回应报文的源IP地址和端口号转换成外网IP地址和端口号。
图1-3 内部服务器基本原理示意图
06 NAT 表
6.1 NAT会话表项
NAT设备处理一个连接的首报文时便确定了相应的地址转换关系,并同时创建会话表项,该会话表项中添加了NAT扩展信息(例如接口信息、转换方式)。会话表项中记录了首报文的地址转换信息。这类经过NAT处理的会话表项,也称为NAT会话表项。
当该连接的后续报文经过NAT设备时,将与NAT会话表项进行匹配,NAT设备从匹配到的会话表项中得到首报文的转换方式,并根据首报文的转换方式对后续报文进行处理:
· 后续报文方向与首报文相同时,源和目的的转换方式与首报文相同。
· 后续报文方向与首报文相反时,转换方式与首报文相反。即,如果首报文转换了源地址,则后续报文需要转换目的地址;如果首报文转换了目的地址,则后续报文需要转换源地址。
NAT会话表项的更新和老化由会话管理模块维护,关于会话管理的相关介绍请参见“安全配置指导”中的“会话管理”。
6.2 EIM表项
如果NAT设备上开启了Endpoint-Independent Mapping模式,则在PAT方式的动态地址转换过程中,会首先创建一个NAT会话表项,然后创建一个用于记录地址和端口的转换关系(内网地址和端口<-->NAT地址和端口)的EIM三元组表项,该表项有以下两个作用:
· 保证后续来自相同源地址和源端口的新建连接与首次连接使用相同的转换关系。
· 允许外网主机向NAT地址和端口发起的新建连接根据EIM表项进行反向地址转换。
该表项在与其相关联的所有NAT会话表项老化后老化。
6.3 NO-PAT表项
在NO-PAT方式进行源地址的动态转换过程中,NAT设备首先创建一个NAT会话表项,然后建立一个NO-PAT表项用于记录该转换关系(内网地址<-->NAT地址)。除此之外,在NAT设备进行ALG处理时,也会触发创建NO-PAT表项。
NO-PAT表项有以下两个作用:
· 保证后续来自相同源地址的新建连接与首次连接使用相同的转换关系。
· 允许满足指定条件的主机向NAT地址发起的新建连接根据NO-PAT表项进行反向地址转换。
该表项在与其相关联的所有NAT会话表项老化后老化。
6.4 端口块表项
端口块表项记录1个用户在网关转换前的私网IP地址、转换后对应的公网IP地址及其端口块。端口块表项分为静态端口块表项和动态端口块表项。
7 NAT&VPN实例
支持多VPN实例的NAT允许VPN实例内的用户访问外部网络,同时允许分属于不同VPN实例的用户互访。例如,当某VPN实例内的用户经过NAT设备访问外部网络时,NAT将内部网络主机的IP地址和端口替换为NAT地址和端口,同时还记录了用户的VPN实例信息(如VPN实例名称)。外部网络的回应报文到达NAT设备时,NAT将外部网络地址和端口还原为内部网络主机的IP地址和端口,同时可得知该回应报文应该转发给哪一个VPN实例内的用户。另外,NAT还可利用外部网络地址所携带的VPN实例信息,支持多个VPN实例之间的互访。
同时,NAT内部服务器也支持多VPN实例,这给外部网络提供了访问VPN实例内服务器的机会。例如,VPN1内提供Web服务的主机地址是10.110.1.1,可以使用202.110.10.20作为Web服务器的外部地址,Internet的用户使用202.110.10.20的地址就可以访问到VPN1提供的Web服务。目前,仅全局NAT支持多VPN实例。
8 NAT hairpin
NAT hairpin功能用于满足位于内网侧的用户之间或内网侧的用户与服务器之间通过NAT地址进行访问的需求,通过对报文同时进行源地址和目的地址的转换来实现。它支持两种组网模式:
· P2P:位于内网侧的用户之间通过动态分配的NAT地址互访。内网各主机首先向外网服务器注册自己的内网地址信息,该地址信息为外网侧出方向地址转换的NAT地址,然后内网主机之间通过使用彼此向外网服务器注册的外网地址进行互访。
· C/S:位于内网侧的用户使用NAT地址访问内网服务器。
9 NAT&ALG
ALG(Application Level Gateway,应用层网关)主要完成对应用层报文的解析和处理。通常情况下,NAT只对报文头中的IP地址和端口信息进行转换,不对应用层数据载荷中的字段进行分析和处理。然而对于一些应用层协议,它们的报文的数据载荷中可能包含IP地址或端口信息,这些载荷信息也必须进行有效的转换,否则可能导致功能不正常。
例如,FTP(File Transfer Protocol,文件传输协议)应用由FTP客户端与FTP服务器之间建立的数据连接和控制连接共同实现,而数据连接使用的地址和端口由控制连接协商报文中的载荷信息决定,这就需要ALG利用NAT的相关转换配置完成载荷信息的转换,以保证后续数据连接的正确建立。
10 NAT&DNS
一般情况下,DNS(Domain Name System,域名系统)服务器和访问私网服务器的用户都在公网,通过在NAT设备上配置内部服务器,可以将公网地址、端口等信息映射到私网内的服务器上,使得公网用户可以通过内部服务器的域名或公网地址来访问内部服务器。但是,如图1-4所示,如果DNS服务器在公网,私网用户希望通过域名来访问私网的Web服务器,则会由于DNS服务器向私网用户发送的响应报文中包含的是私网服务器的公网地址,而导致收到响应报文的私网用户无法利用域名访问私网服务器。通过在设备上配置DNS mapping可以解决该问题。
NAT DNS mapping功能是指,通过配置“域名+公网IP地址+公网端口号+协议类型”的映射表,建立内部服务器域名与内部服务器公网信息的对应关系。NAT设备检查接收到的DNS响应报文,根据报文中的域名查找用户配置的DNS mapping映射表,并根据表项内的“公网地址+公网端口+协议类型”信息查找内部服务器地址映射表中该信息对应的私网地址,替换DNS查询结果中的公网地址。这样,私网用户收到的DNS响应报文中就包含了要访问的内部服务器的私网地址,也就能够使用内部服务器域名访问同一私网内的内部服务器。
11 NAT44
NAT444是运营商网络部署NAT的整体解决方案,它基于NAT444网关,结合AAA服务器、日志服务器等配套系统,提供运营商级的NAT,并支持用户溯源等功能。在众多IPv4向IPv6网络过渡的技术中,NAT444仅需在运营商侧引入二次NAT,对终端和应用服务器端的更改较小,并且NAT444通过端口块分配方式解决用户溯源等问题,因此成为了运营商的首选IPv6过渡方案。
NAT444解决方案分为集中部署和分布部署两种。
11.2 NAT444集中部署
通过在CR设备上安装处理NAT业务的slot或者旁挂NAT444设备来实现NAT444。如图1-5所示,用户访问外部网络时,CPE设备上进行第一次NAT转换,然后在BRAS上完成AAA认证和私网地址的分配,认证通过后,用户发起访问外网的报文会在NAT444网关上进行NAT444转换(第二次NAT转换)。
图1-5 NAT444集中部署组网图
11.3 NAT444分布部署
通过在BRAS设备上安装处理NAT业务的slot实现NAT444,此种部署方式需要配置BRAS联动功能。如图1-6所示。配置NAT444网关与BRAS联动(通过在认证ISP域中指定具体的用户地址类型),用户通过AAA认证并分配得到私网地址之后,NAT444网关会立即为该用户分配公网地址以及端口块,并将用户的私网IP地址、分配的公网地址及该端口块的映射关系通知给BRAS(如果NAT444网关上可分配的公网资源已耗尽,BRAS会强制用户下线,也不会对用户进行计费)。BRAS记录该地址映射关系,并将这个映射关系上报给AAA服务器。之后,该用户访问外部网络时直接使用NAT444网关已经分配的公网地址和端口块。通过此联动功能,AAA服务器能够获得并统一维护所有用户的地址映射关系,提供更便捷的用户溯源服务。
目前,仅支持对PPP用户的业务与NAT444网关联动。
图1-6 NAT444分布式部署组网图
12 地址重叠NAT
分属不同VPN的内部网络主机使用了相同的地址空间,为了实现不同VPN中地址重叠的内网主机互访,需要配置静态NAT,对同一个方向的同一条流的数据报文同时进行源IP地址转换和目的IP地址转换。
如图1-7所示,VPN 1和VPN 2中的内网用户地址均为192.168.1.1。配置静态NAT,将VPN 1中Host A的地址在VPN 2中转换为172.16.1.1,将VPN 2中Host B的地址在VPN 1中转换为172.16.2.1。当静态NAT生效后,Host A使用172.16.2.1能够访问Host B,Host B使用172.16.1.1能够访问Host A。
图1-7 地址中叠的两个VPN之间互访
1.12.2 内网用户主动访问与之地址重叠的外网服务器
当内部网络主机使用外网注册地址或者合法的外网地址访问外部网络时,内网主机的IP地址和外网主机的IP地址可能会发生重叠。为了实现内网主机能够成功访问与之地址重叠的外部服务器,需要配置NAT ALG+动态NAT。
如图1-8所示,内网Host通过域名访问外网Web服务器,Host和Web服务器的IP地址均为192.168.1.1。
(1) 内网Host首先向外网的DNS服务器发起DNS查询请求。
(2) DNS服务器发送的DNS应答报文中,Web服务器的域名对应的IP地址为192.168.1.1。DNS应答报文经过NAT设备时,进行DNS的NAT ALG处理,将DNS应答报文中域名对应的IP地址192.168.1.1转换为10.1.1.1(该地址为临时分配的NAT地址)。NAT设备将ALG处理后的DNS应答报文发送给内网Host。
(3) Host访问Web服务器的报文中,源IP地址为192.168.1.1,目的IP地址为10.1.1.1。报文经过NAT设备时,NAT设备根据动态NAT配置将源地址192.168.1.1转换为20.1.1.1;NAT设备检测到目的地址10.1.1.1为临时分配的NAT地址,根据步骤(2)中的转换关系,将10.1.1.1转换为192.168.1.1。
图1-8 内网用户主动访问与之地址重叠的外网服务器