当前位置: 首页 > news >正文

《深入解析IPv6(第3版)》——11.3 隧道配置

本节书摘来自异步社区《深入解析IPv6(第3版)》一书中的第11章,第11.3节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。

11.3 隧道配置

RFC 4213定义了如下可以穿越纯IPv4架构在IPv6/IPv4节点之间建立隧道IPv6流量的隧道配置环境:

  • 路由器到路由器;
  • 主机到路由器和路由器到主机;
  • 主机到主机。

11.3.1 路由器到路由器
在路由器到路由器的隧道配置环境中,两个IPv6/IPv4路由器穿越纯IPv4架构连接到了两个支持IPv6的架构中。隧道端点在源和目的地址间相隔一跳。每个支持IPv6架构的路由都指向其边缘的IPv6/IPv4路由器。对于每个IPv6/IPv4路由器,都存在代表IPv6-over-IPv4隧道的隧道接口和使用隧道接口的路由。

注释

支持IPv6的架构中包含有IPv6连接,这个连接既可以是本地的,也可以是基于隧道的连接。而具有IPv6功能的架构会含有本地的IPv6连接。
图11-6所示为路由器到路由器的隧道。


<a href=https://yqfile.alicdn.com/bf858e9333d4ace867ff44479dc900594173d9b5.png" >

这个隧道配置环境的示例包括如下内容。

  • 一个纯IPv6的测试实验室,穿过某机构的纯IPv4架构到达IPv6 Internet。
  • 一个机构中两个支持IPv6的站点,穿越IPv4 Internet建立隧道。
  • 6to4路由器穿越IPv4 Internet并与另一个6to4路由器建立隧道,或与一台6to4中继路由器建立隧道。如需进一步了解有关6to4的内容,请参阅第13章。

11.3.2 主机到路由器和路由器到主机
在主机到路由器的隧道配置环境中,一台位于纯IPv4架构中的IPv6/IPv4主机使用IPv6-over-IPv4的隧道到达一台IPv6/IPv4路由器。隧道端点为源和目的地址间的第一跳。

在IPv6/IPv4节点上,有一个隧道接口代表IPv6-over-IPv4隧道的隧道接口和一条或多条使用该隧道接口的路由(通常是默认路由)。IPv6/IPv4节点会根据匹配的路由、隧道接口和IPv6/IPv4路由器的下一跳IPv6地址,来将IPv6数据包通过隧道进行传送。

在路由器到主机的隧道配置环境中,IPv6/IPv4路由器会创建一条IPv6-over-IPv4隧道以穿越IPv4架构并到达IPv6/IPv4节点。隧道端点为源和目的地址间的最后一跳。

在IPv6/IPv4路由器上,有一个隧道接口代表IPv6-over-IPv4隧道的隧道接口和使用该隧道接口的路由(通常是子网路由)。IPv6/IPv4路由器会根据匹配的子网路由、隧道接口和IPv6/IPv4节点的目的IPv6地址,来将IPv6数据包通过隧道进行传送。

图11-7所示为主机到路由器的隧道(对于纯IPv4架构中节点A到节点B的流量量)和路由器到主机的隧道(对于节点B到节点A传输的流量)。


df06a99cb93d6b2226b933fe0fb4e883b450483f

主机到路由器和路由器到主机的示例包括如下内容。

  • 一台IPv6/IPv4主机通过某个机构的纯IPv4架构并建立通往IPv6 Internet的隧道(主机到路由器的隧道)。
  • 一台ISATAP主机通过内联网中只支持IPv4的部分,与一台ISATAP路由器建立隧道,以到达内联网中支持IPv6的那一部分(主机到路由器的隧道)。
  • 一台ISATAP路由器通过内联网中只支持IPv4的部分,与目的ISATAP主机建立隧道(路由器到主机的隧道)。

11.3.3 主机到主机
在主机到主机的隧道配置环境中,位于纯IPv4架构中的IPv6/IPv4主机会使用IPv6-over-IPv4隧道,到达位于同一个纯IPv4架构中的另一个IPv6/IPv4节点。隧道端点位于整条路径的两端,源和目的节点相隔一跳。

每个IPv6/IPv4节点都有一个代表IPv6-over-IPv4隧道的接口。有一条路由用来表示目的节点位于由纯IPv4架构定义的同一个逻辑子网中。发送方主机会根据发送接口、链路中的子网路由以及目的地址,将IPv6流量通过隧道发送到目的。

图11-8所示为主机到主机的隧道。


14bdfae136fbf4f48d993f61be456e295367d12b

主机到主机的隧道示例包括如下内容。

ISATAP主机之间跨越某机构的纯IPv4架构建立隧道。
6to4主机/路由器之间穿越IPv4 Internet通过隧道互相传送流量。
11.3.4 隧道类型
RFC 4213定义了如下隧道类型。

  • 手动配置的隧道。
  • 自动生成的隧道。

手动配置的隧道

手动配置的隧道需要人工配置本地和远程的隧道端点。在手动配置的隧道中,远程隧道端点的IPv4地址并不会内嵌或编码在目的IPv6地址的下一跳IPv6地址中。手动配置的隧道通常用于路由器到路由器的隧道。配置隧道接口的任务包括配置本地和远程隧道端点的IPv4地址,这些地址必须按照使用隧道接口的路由来人工指定。例如,使用手动配置的隧道,可以在不使用IPv6过渡技术(如ISATAP)的情况下,穿越纯IPv4内联网连接两个支持IPv6的测试实验室网络。

为了给Windows中的IPv6协议人工创建手动配置的隧道,需要使用如下命令:

netsh interface ipv6 add v6v4tunnel [interface=]Name[localaddress=] LocalIPv4Address [remoteaddress=]RemoteIPv4address
  • Name是新隧道接口的名称。
  • LocalIPv4Address是分配给正在执行命令的计算机的IPv4地址,该地址对应本地隧道端点。
  • RemoteIPv4address是远程隧道端点的IPv4地址。

必须在隧道两端的路由器上都创建隧道接口并且添加使用隧道接口的路由。

例如,有两个测试实验室子网分别位于内联网的不同部分。路由器1连接到IPv6子网2001:db8:0:1::/64,并且IPv4地址是131.107.47.121。路由器2连接到IPv6子网2001:db8:0:2::/64,并且IPv4地址是157.54.9.211。图11-9所示为这个配置。

  1. <a href=https://yqfile.alicdn.com/1b0cc2b01005215cfa106364a5b8fd25ae034447.png" >

    为了在路由器1和路由器2之间配置一个隧道,要在路由器1上运行下列命令:

    netsh interface ipv6 add v6v4tunnel TunnelTo2 131.107.47.121 157.54.9.211
    netsh interface ipv6 add route 2001:db8:0:2::/64 TunnelTo2
    

    同样,还要在路由器2上运行下列命令:

    netsh interface ipv6 add v6v4tunnel TunnelTo1 157.54.9.211 131.107.47.121
    netsh interface ipv6 add route 2001:db8:0:1::/64 TunnelTo1
    

    自动隧道

    自动隧道不需要手动配置。自动隧道的隧道端点由目的IPv6地址所使用的路由、隧道接口和下一跳地址决定。Windows的IPv6协议支持下列自动隧道技术。

    • ISATAP:用于纯IPv4内联网中的IPv6/IPv4主机之间的单播通信。如需进一步了解相关内容,请参阅第12章。
    • 6to4:用于IPv4 Internet中的IPv6/IPv4主机之间和支持IPv6的站点之间的单播通信,需要6to4路由器或6to4主机/路由器拥有公网的IPv4地址。如需进一步了解相关内容,请参阅第13章。
    • Teredo:用于IPv4 Internet中的IPv6/IPv4主机之间的单播通信。即使主机只有IPv4私有地址,而且位于NAT之后,通信也可以实现。如需进一步了解相关内容,请参阅第14章。

    在 Windows的自动隧道技术中,发送或转发节点会从下述内容中判断出IPv6-over-IPv4隧道的端点。

    远程隧道端点的IPv4地址嵌入或编码在下一跳IPv6地址中(该地址对应目的IPv6地址的匹配路由)。
    本地隧道端点的IPv4地址会通过到达目的IPv4地址(即远程隧道端点)的最佳源IPv4地址来进行判断。

相关文章:

  • 基于时间点的不完全恢复的例子
  • 《Android游戏开发详解》一2.19 使用字符串
  • PHP AJAX JSONP实现跨域请求使用实例
  • 《Windows Server 2012 Hyper-V虚拟化管理实践》一导读
  • js判断访问终端
  • 《iOS 6核心开发手册(第4版)》——2.18节小结
  • JavaScript_判断浏览器种类IE、FF、Opera、Safari、chrome及版本
  • HeartBeat+DRBD+NFS 高可用
  • 九大绝招让你在老机器上加速运行 Ubuntu Linux
  • XP本地用户配置文件转为域用户配置文件
  • 《Swift入门经典(第2版)》——2.2 Swift中的变量
  • 【性格心理学】为什么我总是难以拒绝别人?
  • JS-制作留言提交系统(支持ctrl+回车)
  • 赛门铁克ssl证书   仲裁证书
  • js 选择控件 picker
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【个人向】《HTTP图解》阅后小结
  • android图片蒙层
  • iOS小技巧之UIImagePickerController实现头像选择
  • JS字符串转数字方法总结
  • Python学习之路13-记分
  • tab.js分享及浏览器兼容性问题汇总
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 人脸识别最新开发经验demo
  • 如何利用MongoDB打造TOP榜小程序
  • 线上 python http server profile 实践
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 正则表达式-基础知识Review
  • #includecmath
  • (¥1011)-(一千零一拾一元整)输出
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (接口自动化)Python3操作MySQL数据库
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (小白学Java)Java简介和基本配置
  • (转) ns2/nam与nam实现相关的文件
  • (转)shell中括号的特殊用法 linux if多条件判断
  • ./configure,make,make install的作用
  • .NET 4.0中的泛型协变和反变
  • .Net 应用中使用dot trace进行性能诊断
  • .Net 知识杂记
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .net2005怎么读string形的xml,不是xml文件。
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [.net]官方水晶报表的使用以演示下载
  • [@Controller]4 详解@ModelAttribute
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [20160807][系统设计的三次迭代]
  • [AutoSar]BSW_Com02 PDU详解
  • [BeginCTF]真龙之力
  • [C++]18:set和map的使用
  • [C++]——带你学习类和对象
  • [C++进阶篇]STL中vector的使用