AFT技术白皮书
Copyright © 2023 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
AFT(Address Family Translation,地址族转换)是一种网络地址转换技术,主要用于实现IPv4网络和IPv6网络之间的直接通信。其机制是将IPv6格式的地址转换成IPv4格式的地址或反之,从而实现网络协议的转换和数据的传输。
AFT可以解决互联网技术大规模应用过程中对IP地址的需求增加所带来的问题。由于IPv4地址只有32位,面临着地址空间的枯竭,IPv6网络协议采用128位的地址格式,地址空间更为巨大,可以有效地解决IPv4地址不足的问题。在IPv4网络完全过渡到IPv6网络之前,使用AFT可以实现IPv4网络中的主机直接访问IPv6网络中的FTP服务器等应用,同时也可以实现IPv6网络中的主机直接访问IPv4网络中的应用。综上,AFT提供了一个临时的解决方案,在IPv4网络和IPv6网络的过渡过程中起到十分重要的作用。
AFT技术作为一种在不同地址族之间进行地址转换的技术,主要用于实现IPv4和IPv6网络之间的通信。AFT技术具有以下优势:
· 兼容性:AFT技术确保了IPv4和IPv6网络之间的兼容性,使得在过渡期间,两种网络协议可以同时工作,互相支持。
· 平滑过渡:借助AFT,IPv4网络可以逐步过渡到IPv6网络,过程中不会出现网络中断或通信不畅等问题。这有助于缓解IPv4地址不足的问题,同时为IPv6的全面普及做好铺垫。
· 降低成本:通过AFT技术,企业和组织可以在不更换现有IPv4网络设备的情况下实现IPv4和IPv6网络间的通信。这样可以降低升级成本,减轻企业和组织的负担。
· 用户无感知:AFT作用于IPv4和IPv6网络边缘设备上,所有的地址转换过程都在该设备上实现,用户对地址转换过程是无感知的。
AFT的地址转换方式包括:静态转换、前缀转换、动态转换、内部服务器方式。具体如表1所示。
表1 AFT各转换方式及其特点
转换方式 |
特点 |
静态转换方式,包括: · IPv4到IPv6源地址静态转换策略 · IPv6到IPv4源地址静态转换策略 · IPv6到IPv4端口块方式的静态源地址转换策略 |
通过手工配置IPv6地址与IPv4地址的一一对应关系来实现IPv6地址与IPv4地址的转换 |
前缀转换方式,包括: · NAT64前缀转换 · IVI前缀转换方式 · General前缀转换方式 |
通过将IPv4地址嵌入IPv6地址中来实现IPv6地址与IPv4地址的转换 |
动态转换方式,包括: · IPv6到IPv4的源地址动态转换策略,支持PAT和NO-PAT模式 · 引用NAT64前缀或General前缀的IPv4到IPv6源地址转换策略 · 引用IVI前缀或General前缀的IPv4到IPv6目的地址转换策略 |
动态地创建IPv6地址与IPv4地址的对应关系来实现IPv6地址与IPv4地址的转换,IPv6和IPv4地址之间不存在固定的一一对应关系 |
内部服务器方式,包括: · IPv6内部服务器 |
IPv4网络中的主机通过访问映射后的IPv4地址和端口访问IPv6网络中的服务器 |
对于IPv4侧主动发起对IPv6网络的访问,AFT设备分别将源IPv4地址和目的IPv4地址转换为IPv6地址的方式如表2所示。
表2 IPv4侧主动发起对IPv6网络访问的地址转换方式
IPv4地址转换为IPv6地址 |
转换方式(按照匹配优先级从高到低的顺序排列) |
源IPv4地址转换为IPv6地址的方式 |
IPv4到IPv6源地址静态转换策略 |
引用NAT64前缀或General前缀的IPv4到IPv6源地址转换策略 |
|
NAT64前缀 |
|
目的IPv4地址转换为IPv6地址的方式 |
IPv6内部服务器 |
IPv6到IPv4源地址静态转换策略 |
|
引用IVI前缀或General前缀的IPv4到IPv6目的地址转换策略 |
对于IPv6侧主动发起对IPv4网络的访问,AFT设备分别将源IPv6地址和目的IPv6地址转换为IPv4地址的方式如表3所示。
表3 IPv6侧主动发起对IPv4网络访问的地址转换方式
IPv6地址转换为IPv4地址 |
转换方式(按照匹配优先级从高到低的顺序排列) |
源IPv6地址转换为IPv4地址的方式 |
IPv6到IPv4源地址静态转换策略 |
General前缀 |
|
IVI前缀 |
|
IPv6到IPv4的源地址动态转换策略 |
|
目的IPv6地址转换为IPv4地址的方式 |
IPv4到IPv6源地址静态转换策略 |
General前缀 |
|
NAT64前缀 |
IPv6侧发起访问和IPv4侧发起访问的报文转换过程有所不同,下面将分别介绍。
图1 IPv6侧发起访问的AFT报文转换过程
如图1所示,IPv6侧发起访问时AFT设备对报文的转换过程为:
(1) 判断是否需要进行AFT转换。
当AFT设备接收到IPv6网络主机(IPv6 host)发送给IPv4网络主机(IPv4 host)的报文后,进行如下判断:
¡ 如果报文的目的IPv6地址能够匹配到如表4所示的转换配置,则该报文需要进行AFT转换。接下来AFT设备执行步骤(2)。
表4 目的IPv6地址转换为IPv4地址的转换配置
转换配置(按照匹配优先级从高到低的顺序排列) |
IPv4到IPv6源地址静态转换策略 |
General前缀 |
NAT64前缀 |
¡ 如果未匹配到IPv6目的地址转换配置,则表示该报文不需要进行AFT转换,设备直接转发该IPv6报文。
AFT设备根据报文匹配到的IPv6目的地址转换配置将报文目的IPv6地址转换为IPv4地址。
(3) 根据目的地址预查路由。
AFT设备根据转换后的IPv4目的地址查找路由表,确定报文的出接口。
¡ 如果查找成功,则AFT设备执行步骤(4)。
¡ 如果查找失败,则丢弃报文。
预查路由时不会查找策略路由。如果在预查路由过程中未找到转换后的目的IPv4地址的路由条目,即使通过策略路由设置了到达该目的IPv4地址的路由,AFT仍不会继续执行后续步骤。
AFT设备根据表5中的源IPv6地址转换配置将报文源IPv6地址转换为IPv4地址。如果报文未匹配到源IPv6地址转换配置,则AFT设备丢弃报文。
表5 源IPv6地址转换为IPv4地址的转换配置
转换配置(按照匹配优先级从高到低的顺序排列) |
IPv6到IPv4源地址静态转换策略 |
General前缀 |
IVI前缀 |
IPv6到IPv4的源地址动态转换策略 |
(5) 转发报文并记录映射关系。
AFT设备将报文的源IPv6地址和目的IPv6地址都转换为IPv4地址后,按照正常的转发流程将报文转发到IPv4网络中的主机。同时,将IPv6地址与IPv4地址的映射关系保存在设备中。
(6) 根据记录的映射关系转发应答报文。
AFT设备收到IPv4网络主机发送给IPv6网络主机的应答报文后,根据已保存的映射关系进行相反的转换,然后将转换后的报文发送给IPv6网络主机。
图2 IPv4侧发起访问的AFT报文转换过程
如图2所示,IPv4侧发起访问时AFT设备对报文的转换过程为:
(1) 判断是否需要进行AFT转换。
当AFT设备接收到IPv4网络主机(IPv4 host)发送给IPv6网络主机(IPv6 host)的报文后,进行如下判断。
¡ 如果报文的目的IPv4地址能够匹配到表6的目的IPv4地址转换配置,则该报文需要转发到IPv6网络,需要进行AFT转换。接下来AFT设备执行步骤(2)。
表6 目的IPv4地址转换为IPv6地址的转换配置
转换配置(按照匹配优先级从高到低的顺序排列) |
IPv6内部服务器 |
IPv6到IPv4源地址静态转换策略 |
引用IVI前缀或General前缀的IPv4到IPv6目的地址转换策略 |
¡ 如果未匹配到IPv4目的地址转换配置,则表示该报文不需要进行AFT地址转换,设备直接转发该IPv6报文。
AFT设备根据报文匹配到的目的IPv4地址转换配置将报文目的IPv4地址转换为IPv6地址。
(3) 根据目的地址预查路由。
AFT设备根据转换后的目的IPv6地址查找路由表,确定报文的出接口。
¡ 如果查找成功,则AFT设备执行步骤(4)。
¡ 如果查找失败,则丢弃报文。
预查路由时不会查找策略路由。如果在预查路由过程中未找到转换后的目的IPv6地址的路由条目,即使通过策略路由设置了到达该目的IPv6地址的路由,AFT仍不会继续执行后续步骤。
AFT设备根据表7的源IPv4地址转换配置将报文源IPv4地址转换为IPv6地址。如果报文未匹配到源IPv4地址转换配置,则AFT设备丢弃报文。
表7 源IPv4地址转换为IPv6地址的转换配置
转换配置(按照匹配优先级从高到低的顺序排列) |
IPv4到IPv6源地址静态转换策略 |
引用NAT64前缀或General前缀的IPv4到IPv6源地址转换策略 |
NAT64前缀 |
(5) 转发报文并记录映射关系。
AFT设备将报文的源IPv4地址和目的IPv4地址都转换为IPv6地址后,按照正常的转发流程将报文转发到IPv6网络中的主机。同时,将IPv4地址与IPv6地址的映射关系保存在设备中。
(6) 根据记录的映射关系转发应答报文。
AFT设备收到IPv6网络主机发送给IPv4网络主机的应答报文后,根据已保存的映射关系进行相反的转换,然后将转换后的报文发送给IPv4网络主机。
静态转换方式是指采用手工配置的IPv6地址与IPv4地址的一一对应关系来实现IPv6地址与IPv4地址的转换。静态转换方式包括IPv4到IPv6源地址静态转换策略和IPv6到IPv4源地址静态转换策略。
IPv4到IPv6源地址静态转换策略可用于如下地址转换场景:
· 对于从IPv4侧发起的访问,提供源IPv4地址转换功能。
· 对于从IPv6侧发起的访问,提供目的IPv6地址转换功能。
IPv6到IPv4源地址静态转换策略可用于如下地址转换场景:
· 对于从IPv6侧发起的访问,提供源IPv6地址转换功能。
· 对于从IPv4侧发起的访问,提供目的IPv4地址转换功能。
NAT64前缀转换是IPv6和IPv4互联互通技术中的一种,它是一种网络地址转换技术,用于IPv6-only网络与IPv4-only网络的互访。
NAT64前缀转换主要适用于IPv6过渡的后期阶段,在IPv6占主流的网络中,便于网络新增的IPv6单栈接入的终端用户可以穿越IPv6网络访问IPv4业务。
NAT64前缀是一种将IPv4地址嵌入到IPv6前缀的前缀,其长度为32、40、48、56、64或96位。NAT64前缀用来构造IPv4节点在IPv6网络中的地址,以便IPv4主机与IPv6主机通信。网络中的主机不会使用带有NAT64前缀的IPv6地址。
由NAT64前缀构成的IPv6地址的格式如图3所示。地址的64位到71位保留,必须设置为0。
NAT64前缀可以是NSP(Network-specific prefix,网络特定前缀)或WKP(Well-known prefix,公认前缀):
· NSP由组织分配,通常是该组织IPv6前缀的一个子网。
· WKP为64:ff9b::/96。可以看出WKP的前缀长度固定为96位,只能使用图3的最后一种IPv6地址格式。
图3 由NAT64前缀构成的IPv6地址的格式
AFT使用NSP前缀构造IPv6地址的示例如表4所示。
表8 使用NSP前缀构成IPv6地址示例
IPv6前缀 |
IPv4地址 |
嵌入IPv4地址的IPv6地址 |
2001:db8::/32 |
192.0.2.33 |
2001:db8:c000:221:: |
2001:db8:100::/40 |
192.0.2.33 |
2001:db8:1c0:2:21:: |
2001:db8:122::/48 |
192.0.2.33 |
2001:db8:122:c000:2:2100:: |
2001:db8:122:300::/56 |
192.0.2.33 |
2001:db8:122:3c0:0:221:: |
2001:db8:122:344::/64 |
192.0.2.33 |
2001:db8:122:344:c0:2:2100:: |
2001:db8:122:344::/96 |
192.0.2.33 |
2001:db8:122:344::192.0.2.33 |
位于IPv6 Network中的IPv6单栈用户,它要与位于IPv4 Internet中的IPv4节点进行通信。NAT64转换过程如图4所示。
图4 NAT64转换原理示意图(IPv6 Network to IPv4 Internet)
(1) IPv6单栈用户通过IPv6网络向DNS服务器发送对于网站www.example.com的AAAA请求。
(2) DNS服务器发现没有www.example.com的AAAA记录,然后查询www.example.com的A记录。
(3) DNS服务器获得包含IPv4地址的A记录,然后在该IPv4地址前面增加NAT64前缀,形成AAAA解析结果发给终端。
(4) IPv6单栈用户向AAAA解析结果中的IPv6地址发送报文。
(5) AFT设备收到报文后,由于报文目的地址中的IPv6前缀与本地设置的NAT64前缀相同,则对收到的报文进行NAT64转换。
AFT设备会将NAT64前缀路由发布出去,所有去往该网段的流量都会被转发到AFT设备。
(6) AFT设备将转换后的IPv4报文转发到IPv4网络。
如果IPv6单栈用户直接使用IPv4 Internet中的IPv4节点的IPv6地址与其通信,则不需要发送DNS请求报文。NAT64转换过程为:
(1) IPv6单栈用户通过IPv6网络向IPv4 Internet中的IPv4节点发送报文。
(2) AFT设备收到报文后,由于报文目的地址中的IPv6前缀与本地设置的NAT64前缀相同,则对收到的报文进行NAT64转换。
在罗马数字中,“IV”代表4,“VI”代表6,因此“IVI”代表着IPv4/IPv6转换。IVI前缀转换技术是一种将IPv6报文转换为IPv4报文的技术,使得IPv6网络和IPv4网络能够互操作。
IVI前缀是长度为32位的IPv6地址前缀,用于IPv4地址和IPv6地址之间的映射。IVI地址是IPv6主机实际使用的IPv6地址,这个IPv6地址中内嵌了一个IPv4地址,可以用于与IPv4主机通信。由IVI前缀构成的IVI地址格式如图6所示。其中Suffix固定为全0。
图5 IVI地址格式
IVI前缀用于IPv6侧主动发起向IPv4侧访问的场景,AFT设备使用IVI前缀将报文的源IPv6地址转换为IPv4地址。例如,IVI前缀为2001:250::/32,嵌入到IVI前缀的IPv4地址为202.38.114.1,则IVI地址为2001:250:ff<202.38.114.1>,转换为正确的IPv6地址为:2001:250:ffca:2672:0100::。
IPv6侧主动发起对IPv4侧访问的场景中,源IPv6地址的转换过程如下:
(1) IPv6主机首先发起对IPv4主机的访问请求,源IPv6地址为IPv6主机的IVI地址。
(2) AFT设备收到IPv6主机发送的IPv6报文后,检查报文的目的IPv6地址是否能够匹配到IPv6目的地址转换配置(例如NAT64前缀转换配置)。
¡ 如果能匹配到IPv6目的地址转换配置,说明该报文需要进行AFT转换。接下来AFT设备执行步骤(3)。
¡ 如果匹配不到IPv6目的地址转换配置,则AFT设备进入报文转发流程,不再执行后续步骤。
AFT设备根据报文匹配到的IPv6目的地址转换配置将报文目的IPv6地址转换为IPv4地址。
(4) 根据目的地址预查路由。
AFT设备根据转换后的IPv4目的地址查找路由表,确定报文的出接口。
¡ 如果查找成功,则AFT设备执行步骤(5)。
¡ 如果查找失败,则丢弃报文。
AFT设备将源IPv6地址去除前32位前缀和“FF”后,再取32位并转换为正确的IPv4地址,该地址即为转换后的源IPv4地址。
General前缀与NAT64前缀类似,都是长度为32、40、48、56、64或96位的IPv6地址前缀,用来构造IPv4节点在IPv6网络中的地址。
如图7所示,General前缀与NAT64前缀的区别在于,General前缀没有64到71位的8位保留位,而是将IPv4地址作为一个整体添加到IPv6地址中,该IPv6地址是IPv6主机实际使用的IPv6地址。
图6 对应IPv4地址带有General前缀的IPv6地址格式
General前缀用于IPv6侧主动发起向IPv4侧访问的场景,AFT设备使用General前缀能够将报文的源IPv6地址以及目的IPv6地址转换为IPv4地址。
IPv6侧主动发起对IPv4侧访问的场景中,源IPv6地址、目的IPv6地址的转换过程如下:
(1) IPv6主机首先发起对IPv4主机的访问请求,源IPv6地址、目的IPv6地址分别为IPv6主机的General地址、IPv4主机的General地址。
(2) AFT设备收到IPv6主机发送的IPv6报文后,检查报文的目的IPv6地址是否能够匹配到General前缀转换配置。
¡ 如果能匹配到General前缀转换配置,说明该报文需要进行AFT转换。接下来AFT设备执行步骤(3)。
¡ 如果匹配不到General前缀转换配置,则AFT设备进入报文转发流程,不再执行后续步骤。
AFT设备将目的IPv6地址去除General前缀后,再取32位并转换为正确的IPv4地址,该地址即为转换后的目的IPv4地址。
(4) 根据目的地址预查路由。
AFT设备根据转换后的IPv4目的地址查找路由表,确定报文的出接口。
¡ 如果查找成功,则AFT设备执行步骤(5)。
¡ 如果查找失败,则丢弃报文。
AFT设备将源IPv6地址去除General前缀后,再取32位并转换为正确的IPv4地址,该地址即为转换后的源IPv4地址。
IPv4到IPv6地址转换策略用于IPv4侧主动发起向IPv6侧访问的场景。IPv4到IPv6地址转换策略包括:
· 引用NAT64前缀或General前缀的IPv4到IPv6源地址转换策略
对于需要进行AFT转换的报文,AFT设备使用引用NAT64前缀或General前缀的IPv4到IPv6源地址转换策略将报文的源IPv4地址转换为IPv6地址。
· 引用IVI前缀或General前缀的IPv4到IPv6目的地址转换策略
对于需要进行AFT转换的报文,AFT设备使用引用IVI前缀或General前缀的IPv4到IPv6目的地址转换策略将报文的目的IPv4地址转换为IPv6地址。
直接使用前缀转换,无法使用ACL对地址转换的范围进行控制,也不支持跨VPN互访。
例如,使用引用NAT64前缀的IPv4到IPv6源地址转换策略和引用IVI前缀的IPv4到IPv6目的地址转换策略将报文的源IPv4地址和目的IPv4地址转换为IPv6地址,AFT转换过程如图10所示。
图7 IPv4到IPv6地址转换策略示例
动态转换方式是指动态地创建IPv6地址与IPv4地址的对应关系来实现IPv6地址与IPv4地址的转换。和静态转换方式不同,动态转换方式中IPv6和IPv4地址之间不存在固定的一一对应关系。
IPv6到IPv4的源地址动态转换策略用于IPv6侧主动发起向IPv4侧访问的场景。
IPv6到IPv4的源地址动态转换策略支持PAT(Port Address Translation,端口地址转换)方式和NO-PAT(Not Port Address Translation,非端口地址转换)方式。两者的对比如表5所示。
表9 PAT和NO-PAT模式的对比
方式 |
特点 |
支持的报文类型 |
PAT |
同时对报文的IP地址和传输层端口进行转换 |
· TCP · UDP · ICMPv6(Internet Control Message Protocol for IPv6,IPv6互联网控制消息协议)查询报文 |
NO-PAT |
仅对报文的IP地址进行转换 |
所有IP协议的报文 |
PAT方式下,一个IPv4地址可以同时被多个IPv6地址共用。该模式下,AFT设备需要对报文的IP地址和传输层端口同时进行转换,且只支持TCP、UDP和ICMPv6查询报文。
PAT模式的IPv6到IPv4的源地址动态转换策略支持端口块方式的地址转换,支持用户数限制和溯源。IPv6主机首次发起连接时,AFT设备为该主机分配一个用于转换的IPv4地址,以及该IPv4地址的一个端口块。后续从该IPv6主机发起的连接都使用这个IPv4地址和端口块里面的端口进行转换,直到端口块里面的端口用尽。
PAT方式动态地址转换支持两种模式:Endpoint-Independent Mapping(不关心对端地址和端口的转换模式)和Address and Port-Dependent Mapping(关心对端地址和端口的转换模式)。
· Endpoint-Independent Mapping模式
Endpoint-Independent Mapping模式下,地址转换后的结果与IPv6侧发往IPv4侧的报文的目的IP和端口号无关。只要是来自相同源IPv6地址和源端口号的报文,不论其目的地址是否相同,通过PAT映射后,其源IPv6地址和源端口号都被转换为同一个外部地址和端口号,该映射关系会被记录下来并生成一个EIM三元组(源地址、源端口号、协议类型)表项。并且AFT设备允许IPv4网络侧的主机通过转换后的地址和端口来访问这些IPv6网络侧的主机。这种模式可以很好地支持IPv4网络中的主机主动访问IPv6网络中的主机。
如图8所示,所有从同一个私网IPv6地址和端口(IPv6 address 1:Port1)发送过来的报文,都会被AFT设备映射成同一个公网IPv4地址和端口(IPv4:Port)。
当IPv6网络侧主机之前已经向任意IPv4网络侧主机发送过报文后,任何IPv4网络侧主机均可以向(IPv4:Port)发送报文。
图8 Endpoint-Independent Mapping模式工作机制示意图
· Address and Port-Dependent Mapping模式
Address and Port-Dependent Mapping模式下,地址转换后的结果与IPv6侧发往IPv4侧的报文的目的IP和端口号有关。对于来自相同源IPv6地址和源端口号的报文,若其目的地址和目的端口号不同,通过PAT映射后,相同的源IPv6地址和源端口号通常会被转换成不同的外部地址和端口号。并且AFT设备只允许IPv6侧访问过的IPv4侧的主机通过转换后的地址和端口来访问这些IPv6网络的主机。这种模式安全性好,但是不便于IPv4网络中的主机主动访问IPv6网络中的主机。
如图9所示,只有从同一个IPv6地址和端口发送到同一个IPv4地址和端口的报文,才会被AFT设备映射成同一个IPv4地址和端口号。
只有IPv6网络侧主机向某个IPv4网络侧主机发送过报文后,该IPv4网络侧主机才能主动访问IPv6网络侧主机。
图9 Address and Port-Dependent Mapping模式工作机制示意图
NO-PAT方式下,一个IPv4地址同一时间只能对应一个IPv6地址进行转换,不能同时被多个IPv6地址共用。当使用某IPv4地址的IPv6网络用户停止访问IPv4网络时,AFT会将其占用的IPv4地址释放并分配给其他IPv6网络用户使用。
NO-PAT模式下,AFT设备只对报文的IP地址进行AFT转换,同时会建立一个NO-PAT表项用于记录IPv6地址和IPv4地址的映射关系,并不涉及端口转换,可支持所有IP协议的报文。
IPv6内部服务器是指向IPv4网络主机提供服务的IPv6网络中的服务器。通过配置IPv6内部服务器,可以将IPv6服务器的地址和端口映射到IPv4网络,IPv4网络中的主机通过访问映射后的IPv4地址和端口就可以访问IPv6网络中的服务器。
如图11所示,IPv6内部服务器方式的处理过程如下:
(1) AFT设备收到IPv4网络主机发送给IPv6网络内部服务器的报文。
(2) AFT设备根据“目的IPv4地址+目的端口号”查找表10所示的目的IPv4地址转换配置,并根据AFT配置转换报文的目的IPv4地址和端口号。然后根据IPv4源地址转换配置将报文源IPv4地址转换为IPv6地址,并记录IPv4地址和IPv6地址的映射关系。
表10 目的IPv4地址转换为IPv6地址的转换配置
转换配置(按照匹配优先级从高到低的顺序排列) |
IPv6内部服务器 |
IPv6到IPv4源地址静态转换策略 |
引用IVI前缀或General前缀的IPv4到IPv6目的地址转换策略 |
(3) AFT设备收到IPv6内部服务器的回应报文后,根据已保存的映射关系进行相反的转换,然后将转换后的报文发送给IPv4网络主机。
图10 IPv6内部服务器方式原理图
AFT只对报文头中的IP地址和端口信息进行转换,不对应用层数据载荷中的字段进行分析。然而对于一些特殊协议,它们的报文的数据载荷中可能包含IP地址或端口信息。例如,FTP应用由数据连接和控制连接共同完成,而数据连接使用的地址和端口由控制连接报文中的载荷信息决定。这些载荷信息也必须进行有效的转换,否则可能导致功能问题。ALG(Application Level Gateway,应用层网关)主要完成对应用层报文的处理,利用ALG可以完成载荷信息的转换。
下面介绍AFT对FTP报文、DNS报文、ICMP差错报文的ALG处理机制。
在FTP工作过程中,客户端与服务器之间将建立两条TCP连接:一条为控制连接,负责传输诸如用户指令和参数等控制信息,其中包括发起数据连接时要用到的端口信息;另一条为数据连接,负责在服务器与客户端之间建立数据通道以传送文件。
FTP有两种工作方式:
· 主动方式(PORT):建立数据连接时由FTP服务器发起连接请求,当FTP客户端处于防火墙后时不适用(如FTP客户端处于私网内)。
· 被动方式(PASV):建立数据连接时由FTP客户端发起连接请求,当FTP服务器限制客户端连接其高位端口(一般情况下大于1024)时不适用。
是否使用被动方式由FTP客户端程序决定,不同FTP客户端软件对FTP工作方式的支持情况可能不同,请在使用时以软件的实际情况为准。
主动方式下,在由客户端发起的控制连接中,客户端将指定的端口通过PORT指令发送给服务器,然后由服务器向该端口发起数据连接。
如图12所示,位于IPv4 Internet的客户端以PORT方式访问位于IPv6网络的FTP服务器,AFT设备上配置了IPv6内部服务器和NAT64前缀,分别用于进行目的IPv4地址和源IPv4地址转换。
地址转换过程如下:
(1) 客户端向服务器发送PORT指令,以向服务器通知发起数据连接所应使用的IPv4地址和端口(IPv4 address,Port)。
(2) AFT设备收到该指令后,将其中载荷所携带的IPv4地址替换为IPv6地址,此过程即为ALG处理。
(3) 服务器收到该指令后,主动向IPv6地址和端口(IPv6 address,Port)发起数据连接,并在通过AFT设备时被转化为IPv4地址。
被动方式下,在由客户端发起的控制连接中,客户端向服务器发送PASV请求来通知服务器它将以被动方式建立数据连接,服务器再将指定的端口通过PASV响应发送给客户端,然后由客户端向该端口发起数据连接。
如图13所示,位于IPv4 Internet的FTP客户端以PASV方式访问位于IPv6网络的FTP服务器,AFT设备上配置了IPv6内部服务器和NAT64前缀,分别用于进行目的IPv4地址和源IPv4地址转换。地址转换过程如下:
(1) 客户端向服务器发送PASV请求。
(2) 服务器收到该请求后,选择并打开服务器端数据通道的地址和端口(IPv6 address,Port),并通过PASV响应向客户端返回该地址和端口。
(3) AFT设备收到该响应后,将其中载荷所携带的IPv6地址替换为IPv4地址,此过程即为ALG处理。
(4) 客户端收到该响应后,向IPv4地址和端口(IPv4 address,Port)发起数据连接,并在通过AFT设备时被转换为IPv6地址。
如图14所示,IPv4 Internet主机要使用域名访问IPv4 Internet的WWW服务器(域名为www.example.com,公网地址为20.1.1.200),但它查询的DNS服务器位于IPv6网络,DNS服务器的响应报文中包含的是WWW服务器的IPv6地址,导致收到响应报文的IPv4 Internet主机无法利用域名访问WWW服务器。此时,需要AFT设备对DNS响应报文进行ALG处理,将DNS响应报文中携带的IPv6地址转换为WWW服务器的IPv4地址。
图13 DNS报文载荷的ALG处理示意图
DNS报文载荷的NAT ALG处理机制如下:
(1) IPv4 Internet主机向IPv6网络的DNS服务器发起DNS查询。
(2) AFT设备收到DNS查询报文后,转换报文的源、目的IPv4地址,并修改DNS请求报文中的查询类型字段,由A类型改为AAAA类型。
(3) DNS服务器收到查询报文后进行AAAA查询处理,并将查询到的结果(域名www.example.com对应IPv6地址2023::200)放在DNS响应报文(DNS Answer)中发送给IPv4 Internet主机对应的IPv6地址。
(4) DNS响应报文在到达具有ALG特性的AFT设备时,报文载荷中的IPv6地址会被映射成为WWW服务器的IPv4地址。即,AFT设备将收到的DNS响应报文数据载荷中的IPv6地址2023::200替换为20.1.1.200后,将DNS响应报文转发给IPv4 Internet主机。
这样,IPv4 Internet主机收到的DNS响应报文中就携带了www example.com的IPv4地址,从而实现IPv4 Internet主机通过AFT设备获取到ALG处理后的DNS服务器的IPv4地址,并访问IPv4 Internet中WWW服务器。
如图15所示,IPv4 Internet的主机要访问IPv6网络中的FTP服务器,该内部服务器在IPv4 Internet中的公网地址为10.1.1.1。若FTP服务器的21端口未打开,那么它会向主机发送一个ICMPv6差错报文,该差错报文的数据载荷中的源地址为Host经过AFT转换后的IPv6地址201::1401:164,目的地址FTP服务器的IPv6地址2023::100。
在上述情况下,如果ICMPv6差错报文未经ALG处理从IPv6网络发送到IPv4 Internet,那么IPv4 Internet中的主机就无法识别该差错报文属于哪个应用程序。因此,需要AFT设备对ICMPv6差错报文进行ALG处理。
ALG会根据原始FTP会话的地址转换信息记录,将其数据载荷中的IPv6地址转换为IPv4地址,再将该ICMP差错报文发送到IPv4 Internet。这样,IPv4 Internet中的主机就可以正确识别出错的应用程序。
图14 ICMPv6差错报文载荷的ALG处理示意图
AFT多实例主要针对IPv4 VPN用户访问IPv6公网服务、以及IPv6 VPN用户访问IPv4公网服务而提出。AFT多实例在转换过程中增加了对VPN的识别和处理,把VPN作为区分会话的参数之一,以此实现了IPv4多实例同时访问IPv6公网服务、以及IPv6多实例同时访问IPv4公网服务的功能。
IPv6到IPv4的源地址动态转换策略支持PAT(Port Address Translation,端口地址转换)方式和NO-PAT(Not Port Address Translation,非端口地址转换)方式。
多实例PAT和NO-PAT的特点如下:
· 与单实例相比,多实例的PAT在原有IP地址和端口号转换的基础上,增加了对VPN的识别和处理,即在PAT转换表项中增加了VPN信息,并将其作为转换依据之一。
· 与单实例一样,多实例的NO-PAT只对私网的IP地址进行转换,但不同的是多实例NO-PAT在原有IP地址转换的基础上增加了对VPN的识别和处理,即在AFT转换表项中增加了VPN信息,并将其作为转换依据之一。
例如,如图15所示,IPv4私网VPN用户希望通过AFT设备访问IPv6 Internet中的FTP服务器。
图15 IPv4私网VPN用户访问IPv6 Internet中的FTP服务器组网示例
假设该FTP服务器在IPv4私网VPN中的IPv4地址为192.168.1.100,则IPv4私网VPN用户访问IPv6 Internet中的FTP服务器的流程如下:
(1) IPv4私网VPN用户发起FTP控制连接,向FTP服务器发送PASV请求,该请求的目的IPv4地址为192.168.1.100。
(2) AFT设备收到PASV报文后,匹配到AFT设备上的配置:aft v6tov4 source 2023::1 192.168.1.100 vpn-instance vpn1,则AFT设备转换将报文的目的IPv4地址转换为IPv6地址2023::1。
(3) AFT设备根据目的IPv6地址2023::1预查路由,能够查找到该目的地址对应的路由条目,则AFT设备根据配置aft v4tov6 source 192.168.1.1 vpn-instance vpn1 2023::200将PASV报文的源IPv4地址转换为2023::200。
(4) AFT设备根据目的IPv6地址查找IPv6路由表转发报文,并记录映射关系。
AFT设备将报文的源IPv4地址和目的IPv4地址都转换为IPv6地址后,按照正常的转发流程将报文转发到IPv6网络中的FTP服务器。同时将如下地址映射关系保存在设备中:
192.168.1.1/23176 - 192.168.1.100/21(VPN:vpn1) ------>
2023::200/23176 - 2023::1/21(VPN:0)
(5) AFT设备根据记录的映射关系转发应答报文。
AFT设备收到FTP服务器发送给IPv4私网VPN用户的应答报文后,根据已保存的映射关系进行相反的转换,并将载荷中的IPv6地址转换为IPv4地址,然后查找VPN1路由表将转换后的报文发送给IPv4私网VPN用户。
与单实例相比,多实例的IPv6内部服务器增加了对VPN的支持,即在AFT转换表项中增加了VPN信息,并将其作为转换依据之一,以确保将访问不同VPN的报文送达正确的VPN,其处理流程与单实例相同。
多实例的ALG处理流程与单实例基本相同,不同的是AFT设备在创建IPv4地址与IPv6地址、端口映射表项时,AFT多实例在地址和端口基础上增加了对VPN的识别与处理,即在映射表项中增加了VPN信息,譬如将IPv4侧的(VPN A,IPv4,Port 1)映射为(VPN A,IPv6,Port 2)。
如图16所示,某公司内部同时部署了IPv4网络和IPv6网络,并且希望IPv4网络和IPv6网络能够互相访问。通过在Device上配置AFT IPv6源地址转换、以及AFT IPv6目的地址转换功能即可实现。
图16 IPv4网络和IPv6网络互访配置组网图
如图17所示,某公司将网络升级到了IPv6,此时Internet仍然是IPv4网络。该公司希望内部的FTP服务器能够继续为IPv4 Internet的用户提供服务。通过在Device上配置IPv6内部服务器功能、以及IPv4源地址转换功能即可实现。
图17 IPv4网络访问IPv6网络内部服务器配置组网图
· RFC 6146:Stateful NAT64 Network Address and Protocol Translation
· RFC 6147:DNS64 DNS Extensions for Network Address Translation
· RFC 6219:The China Education and Research Network (CERNET) IVI Translation
· RFC 6384:An FTP Application Layer Gateway (ALG) for IPv6-to-IPv4 Translation