版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、NAT64介绍及实现,Seven 2018/10/10,前言,考虑到IPv4地址的耗尽,将来可能出现IPv6-only的主机需要与IPv4-only的主机通信,为了IPv4到IPv6的过渡与共存,IEFT制定了RFC6146 NAT64规范; 本胶片描述RFC6146定义的IPv6 Clients和IPv4 Server之间的NAT64协议,NAT64规范允许IPv6-only Clients和IPv4 Servers之间通过单播的UDP/TCP/ICMP进行通讯; 文主要参考RFC 6146,主要描述NAT64的核心过程,可作为该协议的导读材料;,目录,一、Nat64协议 1.1 协议关系
2、1.2 网络拓扑 1.3 H1H2的通信-域名解析过程 1.4 H1H2的通信-NAT64过程 1.5 H2H1的通信 二、Jool工具 三、Nat64封包,1.1 协议关系,NAT64依赖于或者说需要如下协议配合: RFC6145定义的IPv4头部和IPv6头部转换规范 RFC6147定义的DNS64规范,用于为IPv6-only的客户端获取IPv4 Server的IPv6地址时,根据RFC6052定义的规范,从IPv4 Server的IPv4地址合成IPv6地址 RFC6052定义的IPv4地址和IPv6地址转换规范,并定义了知名前缀64:ff9b:/96用户在IPv6地址空间表示IPv4
3、地址(IPv4-Embedded IPv6 Address),1.2 网络拓扑,拓扑说明 H2:域名, IPv4地址:; NAT64:IPv4地址:, IPv6地址:2001:db8:100,并且采用知名前缀64:ff9b:/96将IPv4地址转换为IPv6地址(真实组网可以采用其他前缀,但是不能与自身连接的IPv6前缀相同,即本例中不能采用2001:db8:/32) H1:IPv6-only 主机,IP地址: 2001:db8:1 DNS64:可以和NAT64分离,可以内嵌于NAT64,但是他们必须采用相同的前缀去转换IPv4地址为IPv6地址,本例假
4、设其内嵌于NAT64设备中,1.3 H1H2的通信-域名解析过程,域名解析(DNS64) 1. H1发起DNS解析请求,请求获取域名:的type 4A地址(参考DNS规范) 2. DNS64向真实DNS Server解析该域名后发现,该域名只有type A地址(即IPv4地址),没有获取到type 4A地址(即IPv6地址) 3. DNS64根据RFC6052定义的算法,从IPv4地址合成出IPv6地址: 64:ff9b: 4. DNS64将包含type 4A地址的DNS响应,返回给H1主机; 5. H1主机构造IP/TCP封包向H2发起TCP SYN连接建立请求 参考RFC
5、6147 DNS64规范第7节,DNS64功能在网络中部署的位置主要有三种(靠近IPv6侧;在IPV6主机中;靠近IPv4侧),本例采用7.1中组网。,1.4 H1H2的通信-NAT64过程,说明: 对于IPv6侧发出的封包,源IPv6地址会被NAT64设备SNAT成NAT64设备的一个IPv4地址,端口也会变化;对于目的IPv6地址,直接根据RFC6052定义的算法从IPv6地址提取出IPv4地址; IPv4侧对应返回的封包,NAT设备会遍历映射关系,做出相反的处理; 具体流程参见下页文字描述,1.4 H1H2的通信-NAT64过程,NAT64过程 H1发送IPv6 TCP SYN封包,源传
6、输地址:2001:db8:1:1500,目的传输地址:64:ff9b::80; 封包到达NAT64,NAT64做如下处理: NAT64根据端口选择算法选择一个port(假定为2000),为H1的源IPv6传输地址做SNAT,即建立了如下映射: (2001:db8:1,1500) (,2000) NAT64根据RFC6145做IPv6和IPv4头部的转换,从封包的目的传输地址中根据RFC6052提取出IPv4地址,端口不变,仍然为80;并完成IPv4头部其他字段到IPv6头部对应字段的转换,发出封包; 封包到达H2,H2返回TCP SYN
7、+ACK封包,源传输地址: :80,目的传输地址: ,2000 响应封包到达NAT64,NAT64做如下处理: 搜索到TCP syn封包建立的SNAT映射:(2001:db8:1,1500) (,2000); 根据RFC6052做IPv4头部IPv6头部的转换,发往H1封包的源IP地址根据RFC6052直接通过响应封包的源地址映射出其IPv6地址: 64:ff9b:,端口不变,根据SNAT映射,目的IPv6传输地址变换为: 2001:db8:1,1500,1.5 H2H1的通信,RFC6164规定
8、,H2无法主动与H1连接,除非: 在NAT64有预先配置PORT Forwarding的映射规则:(WAN IP,WAN port) (LAN IP, LAN port) H1曾经与H2(使能Address-Dependent过滤规则时)或其他主机(使能Endpoint-Independent过滤规则时)建立过通信; Address-Dependent映射是对于给定的IPv6侧的主机和端口,在NAT64采用固定IPv4 IP和端口建立映射; Endpoint-Independent映射是给定的IPv6侧主机和端口,必须与固定的IPv4 IP和端口,以及固定的对端IPv4地址建议映射。参考RFC
9、4787,目录,一、Nat64协议 二、Jool工具 2.1 介绍 2.2 用户层命令jool -g 2.3用户层命令jool -6 2.4用户层命令jool -4 2.5用户层命令jool -b 2.6用户层命令jool -s 三、Nat64封包,Jool是实现SIIT和NAT64 的Linux的开源软件。(http:/www.jool.mx/en/index.html) Jool的实现分两部分,一个是内核模块,与Netfilter模块类似;一个是用户模块,与iptables命令类似。 内核加载: /sbin/modprobe jool 内核卸载: /sbin/modprobe -r joo
10、l,2.1 Jool工具介绍,jool -global(jool -g):显示所有Jool选项的当前值,即/etc/jool.conf 里面配置的选项。 # jool -g Status: Enabled Manually enabled (-enable, -disable): ON /开启或暂停数据包的转换。 -zeroize-traffic-class: OFF /默认值OFF. IPv4到IPv6方向 。 IPv6报头的Traffic Class字段与IPv4的“服务类型(TOS)非常相似。如果将其设置为OFF,则TOS值将直接复制到Traffic Class字段。如果将其设置为ON,
11、Jool将Traffic Class设置为零。 -override-tos: OFF /默认为OFF, ipv6到ipv4方向 。如果将其设置为OFF,则在IPv6到IPv4转换期间,Traffic Class值将直接复制到TOS字段。如果设置为ON,Jool将设置TOS为-tos字段的值。 -tos: 0 (0 x0) /这仅适用于 override-tos为ON时。 -mtu-plateaus: 65535,32000,17914,8166,4352,2002,1492,1006,508,296,68 /当数据包不适合它的链路时,Jool会猜测其可能的mtu,然后重启发 送数据包。(详解)
12、 -maximum-simultaneous-opens: 10 / 是Jool一次存储的最大数据包量。当外部(IPv4)节点首次尝试打开连接并且没有BIB条目时,对于TCP, jool会存储数据包6s , 默认值意味着您最多可以同时打开10个session;如果有第11个session的时候,Jool将立即回答其ICMP错误消息。 -source-icmpv6-errors-better: OFF /默认OFF。 OFF将使Jool服从RFC 6146(打破traceroutes)规范。 ON将直接转换外部源地址,只需将前缀附加到原始数据包的源地址。 (详解),2.2 用户层命令jool -
13、g,-handle-rst-during-fin-rcv: OFF /默认值OFF。有些端点有一种不合理地结束TCP连接的恶习。它们不是执行标准FIN握手(FIN,FIN-ACK,ACK),而是突然终止半成品数据包流(FIN,RST)。当前的NAT64规范似乎没有考虑到这一点,因此它们各自的NAT64映射可以保持-tcp-est-timeout时间。如果-handle-rst-during-fin-rcv设置为ON,Jool会将-tcp-trans-timeout分配给以(FIN,RST)结尾的连接,注意这是非标准行为。 -f-args: 0 (0b0000) /方向ipv6到ipv4.选择I
14、Pv4传输地址以屏蔽IPv6源地址时,建议该地址应尽可能随机。(CPE只 有一个WAN IP,故此选项暂时用不上。) SrcAddr:OFF SrcPort:OFF DstAddr:OFF DstPort:OFF Additional Logging: -logging-bib: ON /创建或删除bib的时候记录Log。 -logging-session: ON /创建或删除session的时候记录Log。 Filtering: -address-dependent-filtering: OFF /默认OFF。 ON表示Jool是(地址)限制锥形NAT,OFF表示全锥形NAT. (详解) -
15、drop-icmpv6-info: OFF /默认OFF. 当设置为ON时,ping(请求和响应)将在从ICMPv6转换为ICMPv4时被阻止。 -drop-externally-initiated-tcp: OFF /默认OFF. 如果-drop-externally-initiated-tcp设置为ON,将破坏IPv4节点尝试启动到IPv6节点的TCP通信的任何尝试。,Timeouts: -udp-timeout: 5 minutes, 0 seconds / UDP session timeout -tcp-est-timeout: 2 hours, 0 minutes / establ
16、ished TCP CONNECTED session timeout -tcp-trans-timeout: 4 minutes, 0 seconds / unhealthy TCP session timeout -icmp-timeout: 1 minutes, 0 seconds /icmp timeout -fragment-arrival-timeout: 2 seconds /从jool 3.2已经无用。 Synchronization: (暂时不用) (详解) -ss-enabled: OFF /在内核模块上启用/禁用会话同步(SS)。 -ss-flush-asap: ON -
17、ss-flush-deadline: 2 seconds -ss-capacity: 512 -ss-max-payload: 1452,附: -mtu-plateaus: 65535,32000,17914,8166,4352,2002,1492,1006,508,296,68 /当数据包不适合它的链路时,Jool会猜测其可能的mtu,然后重启发 送数据包。(返回) 例子网络环境:链路n6 - J和J - r4的每个分组的最大字节数(MTU)是1500。链路r4 - n4其数据包最长可达815996位(1007字节)。,1. n6想要将一个1500字节的IPv6数据包写入n4。J将其转换为1
18、500字节的IPv4数据包并将其发送到r4。r4无法转发它,因为它对于r4-n4网络的1007字节限制而言太大,因此它将ICMP错误返回到n6。 但J没有办法知道r4-n4网络的MTU,所以它必须猜测。它确实知道被拒绝的数据包长度为1500字节,因此需要查看-mtu-plateaus并选择第一个拒绝1500大小数据包的平台。于是找到了1492.所以下一步尝试1492.,2. n6对其消息进行切片,现在尝试发送一个1492长数据包。r4再次拒绝该尝试,因为1492数据包仍然不适合1007-MTU网络。 3. n6再次将其数据分成片成1006数据包。最终发送成功。,附: -source-icmpv
19、6-errors-better : OFF /默认OFF。 OFF将使Jool服从RFC 6146(打破traceroutes)规范。 ON将直接转换外部源地址,只需将前缀附加到原始数据包的源地址。 (返回) 网络环境:R和n4之间的链接故障. 1. n6向n4发送TCP封包: 2001:db8:1 - 64:ff9b:3. 2. T进行翻译和转换: - 3 3. R回复 ICMPv4 error “主机不可达”. 这个错误封包的地址是 - . 4. 当-source-icmpv6-errors
20、-better = OFF 时,T翻译成IPV6的封包,地址是 64:ff9b:3 - 2001:db8:1 (打破traceroutes.). 当 -source-icmpv6-errors-better = ON 时, T翻译成 64:ff9b:- 2001:db8:1 .,附: -address-dependent-filtering: OFF /默认OFF。 ON表示Jool是(地址)限制锥形NAT,OFF表示全锥形NAT. (返回) 如果-address-dependent-filtering是OFF,J将允许n4b的数据包通过。如果-addr
21、ess-dependent-filtering为ON,J将丢弃n4b的数据包,并响应“通信管理禁止”ICMP错误。这有效地破坏了任何IPv4启动的通信尝试,即使存在BIB条目(静态或其他)。,附: Session Synchronization: (返回) NAT64的状态事实上是很复杂的,你不能简单地配置两个独立的NAT64,并期望主NAT64故障时,另一个NAT64立即作为备用。从版本3.5开始,Jool附带一个守护进程,允许跨Jool实例的会话持续同步,因此可以解决此限制。 节点J,K,L是有状态NAT64s。它们的配置只会略有不同。 网络/24是一个专用网络,会话将在N
22、AT64通过其他接口在此专用网络上广播。,jool -pool6 (jool -6):显示ipv6地址池中存储的前缀。 jool -6 -count(jool -6 -c):统计ipv6地址池中前缀的个数。 jool -6 -add 64:ff9b:/96 (jool -6 -a 64:ff9b:/96):往ipv6地址池中添加前缀。(只有此地址池中有ipv6前缀时,才能进行NAT64) jool -6 -remove 64:ff9b:/96 (jool -6 -r 64:ff9b:/96):删除ipv6地址池中的前缀。 jool -6 -flush(jool -6 -f):清空ipv6地址池
23、中的前缀。,2.3 用户层命令jool -6,jool -pool4(jool -4):显示ipv4地址中的信息。(Jool将ipv6#port转成ipv4#port时,ipv4#port便是从此地址池中进行选择。在使用的时候会发现,当地址池为空的时候,也能正常进行Nat64,是因为jool工具在看到此表为空时,会默认使用 wanip#61001-65535 作为地址池。),2.4 用户层命令jool -4,jool -4 -a proto address port-range:添加条目。 jool -4 -r proto address port-range:删除条目。 jool -4 -u proto address port-range:更新条目。 jool -4 -f: 清空ipv4地址中的信息。,jool -bib(jool -b):显示绑定信息库。() 当从ipv6网络主动访问ip
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47189-2026油井水泥浆体弹性模量试验方法
- 宫腔镜下子宫内膜息肉摘除术后护理查房
- 肱骨内固定装置去除术后护理查房
- 根治性颈淋巴结清扫术后护理查房
- 风险评估与应对措施规划手册
- 餐饮服务业食品安全操作指导书
- 供应链环节责任管理品质保障承诺书范文3篇
- 行业文档归档与检索管理工具
- 辽宁省铁岭市达标名校2026届初三下学期月考二英语试题含解析
- 浙江省仙居县2025-2026学年初三零模语文试题含解析
- 《医学影像检查技术学》课件-足X线摄影
- 黄金冶炼项目可行性研究报告
- 第15课《十月革命与苏联社会主义建设》中职高一下学期高教版(2023)世界历史全一册
- GB/T 11981-2024建筑用轻钢龙骨
- 2024年高等教育文学类自考-06216中外建筑史考试近5年真题集锦(频考类试题)带答案
- 《AutoCAD 2023基础与应用》 课件全套 劳动 项目1-8 AutoCAD 2023 入门、绘制简单平面图形-综合实训
- 缠论-简单就是美
- 教师读书分享《做温暖的教育者》
- QCT1177-2022汽车空调用冷凝器
- 2.1科学探究感应电流的方向课件-高二物理(2019选择性)
- 2024陆上风电场安全生产标准化实施规范
评论
0/150
提交评论