12-NAT-PT配置
本章节下载: 12-NAT-PT配置 (271.89 KB)
· 本文中的“SPC单板”指的是单板丝印以“SPC”开头(如SPC-GT48L)的接口板,“SPE单板”指的是单板丝印以“SPE”开头(如SPE-1020-E-II)的业务处理板。
· 丝印为SPE-1010-II、SPE-1010-E-II、SPE-1020-II、SPE-1020-E-II的单板和SPC单板上具有NAT业务接口,除特殊说明外,本文中涉及进入NAT业务接口的相关配置均可在上述单板上进行配置。
IPv6的应用是个循序渐进的过程,在很长时间内,IPv4网络和IPv6网络会同时存在且需要相互通信。在IPv4网络完全过渡到IPv6网络之前,两个网络之间直接的通信可以通过NAT-PT(Network Address Translation-Protocol Translation,附带协议转换的网络地址转换)来实现。NAT-PT提供了IPv4和IPv6地址之间的相互转换功能,例如,使用此技术可以使IPv6网络中的主机直接访问IPv4网络中的FTP服务器。
如图1-1所示,NAT-PT作用于IPv4和IPv6网络边缘设备上,所有的地址转换过程都在该设备上实现,对IPv4和IPv6网络来说是透明的,即用户不必改变目前的IPv4网络中主机的配置就可实现IPv6网络与IPv4网络的通信。
图1-1 NAT-PT示意图
有三种NAT-PT机制可实现IPv4和IPv6地址之间的相互转换:
· 静态映射
静态映射是指采用手工配置的IPv6地址与IPv4地址的一一对应关系来实现IPv6地址与IPv4地址的转换。
· 动态映射
动态映射是指动态地创建IPv6地址与IPv4地址的对应关系来实现IPv6地址与IPv4地址的转换。和静态映射不同,动态映射中IPv6和IPv4地址之间不存在固定的一一对应关系。
· NAPT-PT机制
NAPT-PT(Network Address Port Translation-Protocol Translation,附带协议转换的网络地址端口转换)是指在IP地址静态或动态转换的基础上对TCP、UDP的端口号也进行转换。采用这种“IP地址+端口号”的映射方式,不同的IPv6地址转换时,可以对应同一个IPv4地址,通过不同的端口号来区分不同的IPv6主机,从而节省IPv4地址资源。
NAT-PT前缀是长度为96位的IPv6地址前缀,它具有以下两个作用:
· 从IPv6网络发送到IPv4网络的报文到达NAT-PT设备后,设备会检测报文目的IPv6地址的前缀,只有与所配置的NAT-PT前缀相同的报文才允许进行IPv6到IPv4的转换。
· 从IPv4网络发送到IPv6网络的报文,经过NAT-PT转换后,源IPv6地址的前缀为配置的NAT-PT前缀。
图1-2 NAT-PT的实现过程(IPv6侧发起会话)
(1) 判断是否进行NAT-PT转换:NAT-PT设备接收到IPv6网络主机(IPv6 host)发送给IPv4网络主机(IPv4 host)的报文后,判断该报文是否要转发到IPv4网络。如果报文目的IPv6地址前缀与设备上预先配置的NAT-PT前缀相同,则该报文需要转发到IPv4网络,需要进行NAT-PT转换。
(2) 转换源IP地址:设备根据IPv6侧配置的静态或者动态映射,进行IPv6地址到IPv4地址的转换,将报文的源IPv6地址转换为IPv4地址。
(3) 转换目的IP地址:设备根据IPv4侧配置的静态映射将目的IPv6地址转换为IPv4地址。如果没有配置静态映射,那么,如果报文中的目的IPv6地址的低32位可以直接转换为合法的IPv4地址,则直接转换为目的IPv4地址;否则,转换不成功。
(4) 转发报文并记录映射关系:报文的源IPv6地址和目的IPv6地址都转换为IPv4地址后,设备按照正常的转发流程将报文转发到IPv4网络中的主机。同时,将IPv6地址与IPv4地址的映射关系保存在设备中。
(5) 根据记录的映射关系转发应答报文:IPv4网络主机发送给IPv6网络主机的报文到达NAT-PT设备后,设备将根据已保存的映射关系进行相反的转换,从而将报文发送给IPv6网络主机。
(1) 判断是否需要进行NAT-PT转换:NAT-PT设备接收到IPv4网络主机发送给IPv6网络主机的报文后,判断该报文是否要转发到IPv6网络。如果报文目的IPv4地址与IPv6侧配置的静态映射IPv4地址相同,则该报文需要转发到IPv6网络,需要进行NAT-PT转换。
(2) 转换源IP地址:设备根据IPv4侧配置的静态或者动态映射,进行IPv4地址到IPv6地址的转换,将报文的源IPv4地址转换为IPv6地址。如果未配置IPv4侧报文的映射,则在源IPv4地址前添加配置的第一个NAT-PT前缀,作为转换后的源IPv6地址。
(3) 转换目的IP地址:设备根据IPv6侧配置的静态映射将目的IPv4地址转换为IPv6地址。
(4) 转发报文并记录映射关系:报文的源IPv4地址和目的IPv4地址都转换为IPv6地址后,设备按照正常的转发流程将报文转发到IPv6网络中的主机。同时,将IPv4地址与IPv6地址的映射关系保存在设备中。
(5) 根据记录的映射关系转发应答报文:IPv6网络主机发送给IPv4网络主机的报文到达NAT-PT设备后,设备将根据已保存的映射关系进行相反的转换,从而将报文发送给IPv4网络主机。
NAT-PT具有下列一些局限性:
· 属于同一会话的请求和响应都必须通过同一台NAT-PT设备,才能进行NAT-PT转换。
· 不能转换IPv4报文头的可选项部分。
· 缺少端到端的安全性。
因此,在一些场合不推荐使用NAT-PT,例如,IPv6网络中主机跨越IPv4网络与另一IPv6网络中主机通信时,推荐使用隧道技术。隧道技术的相关内容请参见“三层技术-IP业务配置指导”中的“隧道”。
目前,设备支持NAT-PT转换的协议包括ICMP、DNS、FTP以及与网络层协议相关但协议字段不涉及IP地址信息的协议。
与NAT-PT相关的协议规范有:
· RFC 2765:Stateless IP/ICMP Translation Algorithm
· RFC 2766:Network Address Translation - Protocol Translation (NAT-PT)
如表1-1所示,IPv6网络内的主机主动访问IPv4网络内的主机时,需要配置以下内容。
表1-1 IPv6侧发起会话时NAT-PT配置任务简介
配置任务 |
说明 |
详细配置 |
使能NAT-PT功能 |
必选 |
|
配置NAT-PT前缀 |
必选 |
|
配置IPv6侧报文的映射 |
必选 |
|
配置IPv4侧报文的静态映射 |
可选 如果未配置IPv4侧报文的静态映射,则目的IPv6的低32位将作为转换后的目的IPv4地址 |
|
配置NAT-PT转换后报文的ToS字段值 |
可选 |
如表1-2所示,IPv4网络内的主机主动访问IPv6网络内的主机时,需要配置以下内容。
表1-2 IPv4侧发起会话时NAT-PT配置任务简介
配置任务 |
说明 |
详细配置 |
使能NAT-PT功能 |
必选 |
|
配置NAT-PT前缀 |
必选 |
|
配置IPv4侧报文的映射 |
可选 如果未配置IPv4侧报文的映射,则在源IPv4地址前添加配置的第一个NAT-PT前缀,作为转换后的源IPv6地址 |
|
配置IPv6侧报文的静态映射 |
二者必选其一 |
|
配置IPv6服务器地址和端口的静态映射 |
||
配置NAT-PT转换后报文的Traffic Class字段值 |
可选 |
在配置NAT-PT之前,设备上需要:
· 使能IPv6转发功能,详细配置请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
· 根据实际情况在需要进行NAT-PT地址转换的接口上配置IPv4或IPv6地址。
在连接IPv4网络和IPv6网络的接口上都使能NAT-PT功能后,才能实现IPv4和IPv6地址之间的相互转换。
表1-3 使能NAT-PT功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能NAT-PT功能 |
natpt enable |
必选 缺省情况下,NAT-PT功能处于关闭状态 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入NAT业务接口视图 |
interface nat interface-number |
必选 |
配置NAT-PT前缀 |
natpt prefix natpt-prefix |
必选 |
· NAT-PT前缀必须不同于本设备接口上的IPv6地址前缀。否则,当某节点发送具有此前缀的IPv6报文到设备时,具有NAT-PT功能的设备在接收到这个报文后,将进行NAT-PT转换,从而导致该报文的丢失。
· 通过natpt v4bound dynamic和natpt v6bound dynamic命令引用的NAT-PT前缀不能直接删除,必须取消引用配置后才能删除。
IPv6侧报文映射分为静态映射和动态映射两种:
静态映射是指设置IPv6地址与IPv4地址的一一对应关系。
· 对于IPv6侧发起的会话,如果报文的源IPv6地址与配置的静态映射IPv6地址相同,则将源IPv6地址转换为相应的IPv4地址;
· 对于IPv4侧发起的会话,如果报文的目的IPv4地址与配置的静态映射IPv4地址相同,则将目的IPv4地址转换为相应的IPv6地址。
表1-5 配置IPv6侧报文的静态映射
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入NAT业务接口视图 |
interface nat interface-number |
必选 |
配置IPv6侧报文的静态映射 |
natpt v6bound static ipv6-address ipv4-address |
必选 |
动态映射是指对于IPv6侧发起的会话,如果报文的源IPv6地址符合指定的IPv6 ACL规则或者目的IPv6地址前缀与配置的NAT-PT前缀相同,则会把源IPv6地址转换为指定NAT-PT地址池中的IPv4地址或者指定接口的IPv4地址。
设备支持如下四种动态映射方式:
(1) 组合1:IPv6 ACL与地址池的组合
如果IPv6报文的源IPv6地址符合指定的IPv6 ACL规则,源IPv6地址就会转换为配置命令中指定地址池中的IPv4地址。
(2) 组合2:IPv6 ACL与接口地址的组合
如果IPv6报文的源IPv6地址符合指定的IPv6 ACL规则,源IPv6地址就会转换为配置命令中指定接口的IPv4地址。
(3) 组合3:NAT-PT前缀与地址池的组合
如果IPv6报文的目的IPv6地址包含NAT-PT前缀,源IPv6地址就会转换为配置命令中指定地址池中的IPv4地址。
(4) 组合4:NAT-PT前缀与接口地址的组合
如果IPv6报文的目的IPv6地址包含NAT-PT前缀,源IPv6地址就会转换为配置命令中指定接口的IPv4地址。
如果在配置IPv6侧报文的动态映射时采用组合1或者组合3,则首先需要配置NAT-PT地址池。
地址池是一组连续的IPv4地址,用于IPv6到IPv4报文的动态转换。当报文从IPv6网络发送到IPv4网络时,如果设置了组合1或者组合3的NAT-PT动态转换,则设备就会从地址池中选择一个IPv4地址作为IPv6报文转换后的源地址。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
配置NAT-PT地址池 |
natpt address-group group-number start-ipv4-address end-ipv4-address |
组合1和组合3中,源IPv6地址转换为指定地址池中的IPv4地址,此时本配置为必选,组合2和组合4中不需执行本配置 |
|
进入NAT业务接口视图 |
interface nat interface-number |
必选 |
|
定义IPv6侧报文源地址的动态映射为:如果IPv6报文的源IPv6地址符合指定的IPv6 ACL规则,源IPv6地址就会转换为指定地址池中的IPv4地址 |
natpt v6bound dynamic acl6 number acl-number address-group address-group [ no-pat ] |
四者必选其一 |
|
定义IPv6侧报文源地址的动态映射为:如果IPv6报文的源IPv6地址符合指定的IPv6 ACL规则,源IPv6地址就会转换为指定接口的IPv4地址 |
natpt v6bound dynamic acl6 number acl-number interface interface-type interface-number |
||
定义IPv6侧报文源地址的动态映射为:如果IPv6报文的目的IPv6地址包含NAT-PT前缀,源IPv6地址就会转换为指定地址池中的IPv4地址 |
natpt v6bound dynamic prefix natpt-prefix address-group address-group [ no-pat ] |
||
定义IPv6侧报文源地址的动态映射为:如果IPv6报文的目的IPv6地址包含NAT-PT前缀,源IPv6地址就会转换为指定接口的IPv4地址 |
natpt v6bound dynamic prefix natpt-prefix interface interface-type interface-number |
· 在配置IPv6侧报文的动态映射时,命令中natpt-prefix参数必须是通过natpt prefix命令配置。
· 如果在配置IPv6侧报文的动态映射时指定了no-pat关键字,则采用动态映射的NAT-PT机制实现IPv4地址和IPv6地址的转换;如果没有指定no-pat关键字,则采用NAPT-PT机制实现IPv4地址和IPv6地址的转换。
· 关于ACL规则的详细配置请参见“ACL和QoS配置指导”中的“ACL”。
IPv4侧报文的映射分为静态映射和动态映射两种。
静态映射是指设置IPv4地址与IPv6地址的一一对应关系。
· 对于IPv4侧发起的会话,如果报文的源IPv4地址与配置的静态映射IPv4地址相同,则将源IPv4地址转换为相应的IPv6地址;
· 对于IPv6侧发起的会话,如果报文的目的IPv6地址与配置的静态映射IPv6地址相同,则将目的IPv6地址转换为相应的IPv4地址。
表1-7 配置IPv4侧报文的静态映射
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入NAT业务接口视图 |
interface nat interface-number |
必选 |
配置IPv4侧报文的静态映射 |
natpt v4bound static ipv4-address ipv6-address |
必选 |
动态映射是指对于IPv4侧发起的会话,如果报文的IPv4源地址符合指定的ACL规则,则会在源IPv4地址前面添加NAT-PT前缀,转换为IPv6地址。
表1-8 配置IPv4侧报文的动态映射
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入NAT业务接口视图 |
interface nat interface-number |
必选 |
配置IPv4侧报文源地址的动态映射 |
natpt v4bound dynamic acl number acl-number prefix natpt-prefix |
必选 |
· 在配置IPv4侧报文的动态映射时,命令中natpt-prefix参数必须通过natpt prefix命令事先配置。
· 关于ACL规则的详细配置请参见“ACL和QoS配置指导”中的“ACL”。
用户可以设置在NAT-PT转换后,报文中ToS字段的取值:
· 为0:表示将转换后报文的服务优先级降为最低。
· 与转换前对应的Traffic Class字段取值相同:表示保持原有的服务优先级。
表1-9 配置NAT-PT转换后报文的ToS字段值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IPv6报文转换为IPv4报文后,IPv4报文中的ToS字段值为0 |
natpt turn-off tos |
必选 缺省情况下,当IPv6报文转换为IPv4报文后,IPv4报文中的ToS字段与转换前的IPv6报文的Traffic Class字段值相同 |
用户可以设置在NAT-PT转换后,报文中Traffic Class字段的取值:
· 为0:表示将转换后报文的服务优先级降为最低。
· 与转换前对应的ToS字段取值相同:表示保持原有的服务优先级。
表1-10 配置NAT-PT转换后报文的Traffic Class字段值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IPv4报文转换为IPv6报文后,IPv6报文中的Traffic Class字段值为0 |
natpt turn-off traffic-class |
必选 缺省情况下, 当IPv4报文转换为IPv6报文后,IPv6报文中的Traffic Class字段与转换前的IPv4报文的ToS字段值相同 |
通常情况下,IPv6网络内的服务器(如FTP服务器、Web服务器和Telnet服务器)只能为IPv6网络内的主机提供服务。通过配置IPv6服务器的静态NAPT-PT映射,可以静态指定IPv6网络内服务器的IPv6地址和端口与IPv4地址和端口的映射关系,从而使得IPv4主机可以访问IPv6网络内的服务器。
NAT-PT设备接收到IPv4主机访问IPv6服务器的请求报文后,如果报文的目的地址和端口号与配置的静态映射IPv4地址和端口号相同,则根据IPv4侧的配置将报文的源IPv4地址转换为IPv6地址,并根据配置的IPv6服务器地址和端口静态映射将请求报文的目的IPv4地址和端口号转换为IPv6地址和端口号。
配置IPv6服务器地址和端口的静态映射时,需要指定:
· 协议类型,即服务采用的传输层协议类型,取值为TCP或UDP;
· 服务器对应的IPv4地址及端口号,IPv4主机通过该地址和端口号访问服务器;
· IPv6网络内服务器的IPv6地址以及端口号。
表1-11 配置IPv6服务器的静态NAPT-PT映射
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入NAT业务接口视图 |
interface nat interface-number |
必选 |
配置IPv6服务器地址和端口的静态映射 |
natpt v4bound static v6server protocol protocol-type ipv4-address ipv4-port-number ipv6-address ipv6-port-number |
必选 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后NAT-PT的运行情况,用户可以通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除NAT-PT动态地址映射信息及统计信息。
表1-12 NAT-PT显示和维护
操作 |
命令 |
显示所有NAT-PT配置信息 |
display natpt all [ | { begin | exclude | include } regular-expression ] |
显示NAT-PT地址池配置信息 |
display natpt address-group [ | { begin | exclude | include } regular-expression ] |
显示NAT-PT的静态和动态映射信息 |
display natpt address-mapping [ | { begin | exclude | include } regular-expression ] |
显示NAT-PT的统计信息 |
display natpt statistics [ slot slot-number ] [ | { begin | exclude | include } regular-expression ] |
清除所有的NAT-PT统计信息 |
reset natpt statistics [ slot slot-number ] |
IPv6网络内地址为2001::2/64的Router C希望访问IPv4网络内地址为8.0.0.2/24的Router A,但是不允许Router A主动访问Router C。
为了满足上述需求:
· 在IPv4网络和IPv6网络之间部署NAT-PT设备Router B,在Router B上配置IPv6侧报文动态映射,使IPv6网络中的主机可以主动访问IPv4网络中的主机,而IPv4网络中的主机不能主动访问IPv6网络中的主机。
· Router B上1号槽位安装的单板为SPC单板或丝印为SPE-1010-II、SPE-1010-E-II、SPE-1020-II、SPE-1020-E-II的单板。
· 4号槽位安装的单板为以SPC单板或SPE单板。
图1-3 配置IPv6侧报文动态映射组网图
(1) 配置NAT-PT设备Router B
# 配置接口地址,使能接口NAT-PT功能。
<RouterB> system-view
[RouterB] ipv6
[RouterB] interface GigabitEthernet 4/1/2
[RouterB-GigabitEthernet4/1/2] ip address 8.0.0.1 255.255.255.0
[RouterB-GigabitEthernet4/1/2] natpt enable
[RouterB-GigabitEthernet4/1/2] quit
[RouterB] interface GigabitEthernet 4/1/3
[RouterB-GigabitEthernet4/1/3] ipv6 address 2001::1/64
[RouterB-GigabitEthernet4/1/3] natpt enable
[RouterB-GigabitEthernet4/1/3] quit
# 配置NAT-PT前缀。
[RouterB] interface NAT 1/0/1
[RouterB-NAT1/0/1] natpt prefix 3001::
[RouterB-NAT1/0/1] quit
# 配置NAT-PT地址池。
[RouterB] natpt address-group 1 9.0.0.10 9.0.0.19
# 配置IPv6侧报文的动态映射。
[RouterB] interface NAT 1/0/1
[RouterB-NAT1/0/1] natpt v6bound dynamic prefix 3001:: address-group 1
(2) 配置IPv4侧设备Router A
# 配置接口地址。
<RouterA> system-view
[RouterA] interface GigabitEthernet 4/1/2
[RouterA-GigabitEthernet4/1/2] ip address 8.0.0.2 255.255.255.0
[RouterA-GigabitEthernet4/1/2] quit
# 配置到达9.0.0.0/24网段的静态路由。
[RouterA] ip route-static 9.0.0.0 24 8.0.0.1
(3) 配置IPv6侧设备Router C
# 使能IPv6转发功能。
<RouterC> system-view
[RouterC] ipv6
# 配置接口地址。
[RouterC] interface GigabitEthernet 4/1/2
[RouterC-GigabitEthernet4/1/2] ipv6 address 2001::2/64
[RouterC-GigabitEthernet4/1/2] quit
# 配置到达NAT-PT前缀对应网段的静态路由。
[RouterC] ipv6 route-static 3001:: 16 2001::1
按以上配置完成后,在Router C上执行命令ping ipv6 3001::0800:0002应该可以收到响应报文。
IPv6网络内地址为2001::2/64的Router C希望与IPv4网络内地址为8.0.0.2/24的Router A互相通信。
为了满足上述需求:
· 在IPv4网络和IPv6网络之间部署NAT-PT设备Router B,在Router B上配置IPv4侧报文静态映射和IPv6侧报文静态映射,使IPv4网络和IPv6网络之间可以互相访问。
· Router B上1号槽位安装的单板为SPC单板或丝印为SPE-1010-II、SPE-1010-E-II、SPE-1020-II、SPE-1020-E-II的单板。
· 4号槽位安装的单板为SPC单板或SPE单板。
图1-4 NAT-PT组网图(IPv4/IPv6侧为静态映射)
(1) 配置NAT-PT设备Router B
# 配置接口地址,使能接口NAT-PT功能。
<RouterB> system-view
[RouterB] ipv6
[RouterB] interface GigabitEthernet 4/1/2
[RouterB-GigabitEthernet4/1/2] ip address 8.0.0.1 255.255.255.0
[RouterB-GigabitEthernet4/1/2] natpt enable
[RouterB-GigabitEthernet4/1/2] quit
[RouterB] interface GigabitEthernet 4/1/3
[RouterB-GigabitEthernet4/1/3] ipv6 address 2001::1/64
[RouterB-GigabitEthernet4/1/3] natpt enable
[RouterB-GigabitEthernet4/1/3] quit
# 配置NAT-PT前缀。
[RouterB] interface NAT 1/0/1
[RouterB-NAT1/0/1] natpt prefix 3001::
# 配置IPv4侧报文的静态映射。
[RouterB-NAT1/0/1] natpt v4bound static 8.0.0.2 3001::5
# 配置IPv6侧报文的静态映射。
[RouterB-NAT1/0/1] natpt v6bound static 2001::2 9.0.0.5
(2) 配置IPv4侧设备Router A
# 配置接口地址。
<RouterA> system-view
[RouterA] interface GigabitEthernet 4/1/2
[RouterA-GigabitEthernet4/1/2] ip address 8.0.0.2 255.255.255.0
[RouterA-GigabitEthernet4/1/2] quit
# 配置到达9.0.0.0/24网段的静态路由。
[RouterA] ip route-static 9.0.0.0 24 8.0.0.1
(3) 配置IPv6侧设备Router C
# 使能IPv6转发功能。
<RouterC> system-view
[RouterC] ipv6
# 配置接口地址。
[RouterC] interface GigabitEthernet 4/1/2
[RouterC-GigabitEthernet4/1/2] ipv6 address 2001::2/64
[RouterC-GigabitEthernet4/1/2] quit
# 配置到达NAT-PT前缀对应网段的静态路由。
[RouterC] ipv6 route-static 3001:: 16 2001::1
按以上配置完成后,在Router A上执行命令ping 9.0.0.5可以收到响应报文;在Router C上执行命令ping ipv6 3001::5命令也可以收到响应报文。
IPv6侧发起会话时,NAT-PT转换失败。
· 打开NAT-PT调试开关,根据设备的调试信息定位错误。
· 在调试过程中,检查源地址转换是否成功。如果源地址转换失败,则问题原因可能是地址池中没有足够的IP地址。可以通过增大地址池中IP地址范围,或采用NAPT-PT机制进行NAT-PT转换。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!