热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux下IPV4和IPV6的互操作性研究

Linux下IPV4和IPV6的互操作性研究--Linux企业应用-Linux服务器应用信息,下面是详情阅读。
  作为向下一代互联网络协议过渡的重要步骤,国际的IPv6试验网--6bone在1996年成立
了。现在,6bone已经扩展到全球50多个国家和地区,成为IPv6研究者、开发者和实践者的
主要平台。CERNET国家网络中心于1998年6月加入6bone,同年11月成为其骨干网成员。电
子科大作为教育网的西南主节点,在得到Nokia的IPv6路由器之后,积极参与IPv6技术研究
,我们先查阅研究了大多数与IPv6有关的RFC文档和相关技术资料,并且在此基础上进行了
很多网络实验。该文先简单阐述了IPV6的必要性和IPV4到IPV6升级转换的机制,然后详细
阐明了在Linux操作系统下进行的IPv6网络实验及其结论,并附有相关参考文献书目。

一、使用IPv6的必要性

  现在运行的因特网协议IPv4存在其固有的局限性,一是地址问题,IPv4的地址只有32
位,这意味着总的地址数大约是40亿,并且还有许多地址是不可用的。按照目前网络的发
展趋势,到2005和2015年之间IPv4的地址就会耗尽,必须用另一种地址方案来替代它,二
是IPv4提供的服务局限性,IPv4尽它的最大努力来传送信息包,但是它不会保证提供给上
层的服务是可靠的,没有QoS(服务质量)的概念。这些问题都是IPv4的薄弱环节,致命弱
点,另外因特网不断提出对移动性、安全性以及多媒体业务的支持等问题,IPv4都无法解
决,这样就迫使我们必须引入下一带因特网协议--IPv6。

二、IPv4和IPv6的互操作

  要将现在的IPV4网络升级到IPV6网络,不可能所有的机器在同时启用IPV6协议栈,配
置好IPV6地址,安装好IPV6应用程序,所以必须实现IPV4网络与IPV6网络之间的互操作及
平滑升级机制。IPv4到IPv6的升级转换机制的首要条件是允许IPv6和IPv4主机互操作;其
次是在相互依赖性很小的情况下使IPv6的主机和路由器能在因特网中快速发展;第三是转
换对端用户,系统管理员和网络实施者来说易于理解和执行。IPv6转换机制是一套主机和
路由器执行的协议机制,有一套定址和配置的操作指导方案,尽可能减少转换过程中造成
的破坏。IPv6转换机制的主要目标如下:
  · 可增加的升级和扩展性:单个IPv4的主机和路由器可在不需要其它的主机和路由器
同时升级的情况下单独升级成IPv6,新的IPv6主机和路由器可以后再一台台的安装成IPv6

  ·最小的升级依赖性。将主机升级成IPv6的唯一先决条件是域名服务器必须先升级以
处理IPv6地址记录。
  ·方便的寻址。当IPv4的主机和路由器升级到IPv6后,他们必须继续用原来的地址。
他们不需要指定新的地址。管理者不需制定新的地址分配方案。
  ·很低的启动开销。将IPv4系统升级成IPv6很少或几乎不需要准备工作。
  IPv6转换机制确保IPv6主机能和任何因特网上的IPv4通信,直到IPv4被淘汰,并在那
时允许在小范围内互相通信。这个特征保护了用户已经在IPv4上的巨大投入并使得IPv6不
会将IPv4孤立。
  基于以上原因,IPv4主机和路由器上与Ipv6主机和路由器现在广泛采用了如下两种互
操作的机制:隧道技术和双IP协议栈技术。
  
A.隧道技术:

  隧道提供了一种利用IPv4路由基础上传输IPv6包的方法。隧道应用于下面几种应用中
:路由器到路由器、主机到路由器、主机到主机和路由器到主机。
  路由器到路由器和主机到路由器隧道技术都是将IPv6包传到路由器,隧道的终点是中
间路由器,必须将IPv6包解出,并且转发到它的目的地。隧道终点的地址必须由配置隧道
节点的配置信息获得,这种类型的隧道称作人工配置隧道。
  当利用隧道到达IPv6的主干网时,如果一个在IPv4网络和IPv6网络边界的IPv4/IPv6路
由器的IPv4地址已知时,那么隧道的端点可以配置为这个路由器。这个隧道的配置可以被
写进路由表中作为"缺省路由"。这就是说所有IPv6目的地址符合此路由的都可以使用这条
隧道,这种隧道就是默认配置的隧道。
  主机到主机和路由器到主机隧道技术都是将IPv6包传到主机的,可以用IPv6包的信息
获得终点地址。隧道入口创建一个IPv4封装头并传送包,隧道出口解包,去掉IPv4头,更
新IPv6头,处理IPv6包。隧道入口节点需要保存隧道信息如MTU等。如果用于目的节点的I
Pv6地址是与IPv4兼容的地址,隧道的IPv4地址可以自动从IPv6地址继承下来,因此也就不
需要人工配置。这种隧道也就称为自动隧道。
  IPv4兼容的IPv6地址格式如下:
      

B.双IP协议栈方式

  双协议栈方式包括提供IPv6和IPv4协议栈的主机和路由器。双协议栈工作方式的简单
描述如下:
  ·如果应用程序使用的目的地址是IPv4地址,那么将使用IPv4协议栈;
  ·如果应用程序使用的目的地址是兼容IPv4的IPv6地址,那么IPv6就封装到IPv4中;

  ·如果目的地址是另一种类型的IPv6地址,那么就使用IPv6地址,可能封装在默认配
置的隧道中。
  双协议栈的缺省IP包发送算法为:
a. 如果IP包的目的地址是IPv4地址:
  如果目的站点在可达链路上,直接发送;
  如果目的站点不可达,要么送往在线路由器,要么不可达。
b. 如果IP包的目的地址是IPv4兼容的IPv6地址:
  如果目的站点在可达链路上,直接发送IPv6包;
  如果目的站点处于off-link,(1)如果有可达IPv4路由器,则封装在IPv4包中发往I
Pv4路由器;(2)如果有可达IPv6路由器,则不封装,直接发送;(3)如果没有可达路由
器,则不可达。
c. 如果IP包的目的地址是纯IPv6地址:
  如果目的站点在 可达链路上,直接发送IPv6包;
  如果目的站点处于off-link,(1)如果有可达IPv6路由器,则直接发送到路由器;(
2如果目的地通过手动隧道可达,并且链路上有可达IPv4路由器,则封装成IPv4包,目的I
P地址为隧道终点地址,链路地址为可达路由器的链路地址。(3)否则为不可达。
d. 在线/离线的确定
  IPv4使用子网掩码确定,IPv6使用邻居发现协议。两者共同使用的是:如果目的地址
是IPv4地址,则使用  RFC1122比较两者的掩码;如果目的地址是IPv4兼容的IPv6地址,
则使用低32位目的地址的子网掩码比较;如果是  IPv6纯地址,则使用邻居发现协议。

三、Linux下IPv6网络研究实验

  我们在研究了大量IPv6协议(主要的IPv6 RFC文档)之后,进行了一系列的IPv6研究
实验。现详细叙述如下:

1.Pv6研究实验平台的选择

  在国内有几所大学已经或正在进行IPv6实验研究,并且建立了CERNET IPv6实验床,我
们在与CERNET IPv6实验床的老师和同学取得联系并进行了交流,实验床网络中心最初的组
网是通过主机配置FreeBSD来完成的,1998年开始用的是FreeBSD2.2.8,现在是FreeBSD3.
2,3.4,4.0都有,此外有些科研人员也开始采用linux进行实验,路由器现在采用的是No
kia的IP650,还有FreeBSD+Mrtd的主机。电子科大作为教育网西南地区的主节点,也得到
了Nokia捐赠的IPv6路由器。在此基础之上,我们通过分析比较研究各种操作系统,最后选
定用linux作为IPv6主机和路由器研究实验平台。具体原因如下:
A. Linux作为开放的操作系统,其原代码完全公开,具有很强的灵活性,现在有很多自由
软件联盟为Linux免费开发如件,故Linux具有很强的生命力和活力,而其他大部分由个别
公司开发的操作系统,一方面原代码不公开,无法根据自己的要求修改内核,其公司的发
展的兴衰,很大程度上影响该操作系统的发展。
B. Linux操作系统很先进,一直跟踪关注网络的发展,用Linux组建Internet网络,建立
网站,进行网络开发研究,都是很好的选择。并且其内核从2.2.0开始,就已经开始支持I
Pv6技术了,这等于就为我们提供了IPv6协议栈原代码,  我们可以利用其共享代码做I
Pv6的研究开发。

2.Linux主机IPv6协议支持技术研究

  在选定了实验平台之后,我们就着手进行一系列的IPv6实验,主要针对在已大量安装
了IPv4的主机和路由器情况下,如何成功地兼容地升级到IPv6,如何运用在IPv6主机和路
由器上,与Ipv4主机和路由器成功互操作,以及如何建立配置IPv6主机和路由器。在进行
IPv6实验之前,我们根据网上查询资料及对Linux内核分析,研究了如何建立IPv6主机,包
括安装协议栈,网络工具及网络程序,现以Redhat 6.1 Linux为例,详细说明其具体步骤
如下:

A.支持IPv6协议的新内核的编译

  要让操作系统支持IPv6,就要安装IPv6协议栈,Redhat6.1的内核为2.2.12版本,可支
持IPv6,但是安装缺省不支持,由于协议栈在操作系统中是处于核心地位的,必须重新编
译新的内核才能安装上新的协议栈,其具体步骤如下:
  1)以root身份登陆,进入源码所在的目录:cd /usr/src/linux
  2)运行 make clean,清除一些可能过期的中间代码。
  3) 然后配置内核选项:make menuconfig 或者 make xmenuconfig运行make menucon
fig后,将下面的支持IPv6的选项选上,其他内核选项请根据系统的具体情况作出符合系统
的选择。
   Code maturity level options
     Prompt for development and/or incomplete code/drivers Yes.
   Networking options
     Packet socket               yes
     Unix domain sockets            yes
     TCP/IP networking             yes
     The IPv6 protocol             yes
     IPv6: enable EUI-64 token format      yes
     IPv6: disable provider based address    yes
   File systems
     / procfilesystem support yes
  4)然后运行make dep; make clean; make bzImage
  5)没有错误,现在已经编译成功了支持IPv6协议的内核了。将该内核拷贝到Linux的启
动目录下。
   cp arch/i386/boot/zImage /boot/vmlinuz-IPv6
  6)编辑etc/lilo.conf使新的内核成为boot的选择。
  7) 重启系统: reboot
  在重启系统之后,在登陆之前会发现有支持IPv6的内核信息出现,这下该主机就是纯
IPv6主机啦,但是现在的主机只是安装的IPv6协议栈,并没有IPv6网络配置工具如hostna
me, netstat, arp, ifconfig, rarp, route等,还不能配置网络,不能检测调试发
送IPv6包,因此我们必须进行如下操作。

B.编译net-tools

  Linux的网络配置,基本上是通过ifconfig和route等命令实现的,需要安装编译新版
本的支持IPv6的net-tools,我们采用了net-tools-1.52。其安装过程如下:
  1)解开软件包:tar xzf your-path/net-tools-1.52.tar.gz -C /usr/src
  2)进入源码所在目录:cd /usr/src/net-tools
  3)make config时选择下面的内容,其他选项内容请根据自己系统情况选择:
   编译主选项          子选项          选择
   GNU gettext                      Yes( 如果使用的是g
libc2)
   Protocol Families      UNIX protocol family    Yes
              INET (TCP/IP) protocol family  Yes
              INET6 (IPv6) protocol family   Yes
             Device hardware types SIT (IPv6-inIPv4) support Yes

  4)然后编译:make;安装:make install。再重启。
  现在我们就可以使用ifconfig和route等命令配置查看网络了。运行ifconfig,我们可
以看到在每个网络接口,都生成了一个IPv6地址,这是它的本地链路地址,我们还需要配
置其相应的全球地址和路由信息。最后我们的IPv6主机就建立起来了。两台机器均如此操
作,通过绞线相连的最简单的纯IPv6网络就搭建好啦。
  但是我们没有IPv6的应用程序来检测我们的IPv6网络,但是怎么知道我们的主机在网
络中是否能够与其他主机通信呢,这还得需要有IPv6的应用程序检测我们的网络。

C.编译Inet6-applications

  编译新版本的支持IPv6的网络应用程序我们采用的是inet6-apps-0.36,其编译过程如
下:
  1) 解开软件包:tar xzf your-path/inet6-apps-0.36.tar.gz -C /usr/src
  2) 为编译程序建立必要的链接:
   ln -sf /usr/src/inet6-apps-0.36 /usr/src/inet6-apps
  3) 进入源码所在目录: cd /usr/src/inet6-apps
  4)这个版本的inet6工具的icmp.c有个小Bug,编译时需要一个补丁(inet6-apps-0.3
6-glibc21-rh60-patch.txt.gz)。将补丁程序加上然后编译:make clean; make ; make
install。重启系统。
现在我们就有了如finger[d], ftp[d], inetd, ping, tftp, libinet6等网络应用程
序就可以进行主机间的IPv6测试了。

3.Linux下IPv6主机和路由器配置技术研究

  在研究了Linux IPv6主机建立技术之后,我们在Linux主机上进行了如下的进行IPv6主
机和路由网络实验研究:

A.IPv6主机通信实验

  为了了解如何建立IPv6主机,如何在Linux操作系统中,建立IPv6协议栈,收发纯的I
Pv6数据包,我们最开始建立了如图1所示的一个最简单的IPv6网络实验环境:
          
  我们安装了两台以Redhat6.1 Linux为操作系统的主机,并且通过绞线相连。对于每台
主机,编译新的内核支持IPv6,由于缺省支持IPv4,故该主机为IPv6/IPv4双协议栈主机。
为了研究纯IPv6主机通信,我们只配置主机的IPv6网络信息,未配置其IPv4地址和网络。
作为西南地区,网络中心分配的IPv6地址前缀是3ffe:3203:1001::/48,故利用ifconfig配
置Host1和Host2的全球IPv6地址分别为3ffe:3203:1001::218/52和3ffe:3203:1001::218/
52,命令格式为:ifconfig interface add IPv6-address,用route添加缺省网关分别为
对方IPv6地址,然后利用IPv6的应用程序ping对方的IPv6地址,得到连续的对方主机返回
ICMPv6响应报文,安装成功了。

B.IPv6/IPv4主机隧道通信实验

  因为现在的IPv6主机在整个IPv4网络中,象一个孤岛,许多路由器不支持IPv6,故在
IPv4网络中经过了纯IPv4路由器相连的两个IPv6主机是不能直接通信的,要采用RFC1933所
说的隧道技术(tunnel)。在Linux下的IPv6协议栈是支持隧道技术的。为研究IPv6主机如
何在IPv4网络中通信的,我们建立了图2所示的实验环境。
     
  与实验1一样,配置好Host1和Host2的IPv6地址,并且按照实际IPv4网络情况,配置好
网络接口的IPv4地址。之后,我们需要分别为Host1和Host2配置隧道,两隧道的端地址分
别为Host1和Host2的IPv4地址。具体配置命令格式如下:
   ifconfig sit0 up ?
   ifconfig sit0 inet6 tunnel ::202.115.12.218 ?
   ifconfig sit1 up ?
   route -inet6 add 3ffe:3203:1001::/48 dev sit1 ?
  其中第二步中的tunnel地址是与对方主机的IPv4兼容的IPv6地址,最后一步添加的网
络为对方主机网络接口所在网络,这样,相互的隧道就连通了。隧道0(sit0)为自动隧道
(Automatic Tunneling),隧道1(sit1)为手动隧道(Configured Tunneling),在启
动了sit0之后,可以直接ping通对方主机的IPv4兼容IPv6地址,但是不能ping通对方的全
球IPv6地址,因为IPv4 Router不负责转发IPv6报文,只有在手动配置了sit1之后,跨越了
IPv4网络的IPv6主机之间才能进行通信。

C.IPv6/IPv4主机接入6bone网络

  我们在完成以上实验的基础上,具有了IPv6主机和网络配置基本理论和实践经验,就
准备接入IPv6实验网6bone,首先通过主机与电子科大网络中心的IPv6路由器相接,连入C
ERNET IPv6实验床,再通过该网络与世界IPv6实验网6bone相接。根据网络分析,我们制定
了如图3所示的网络接入方案:
   
  首先配置好Host1和Host2的IPv4网络信息,再向电子科大网络中心申请分配全球IPv6
地址,申请隧道,网络中心按照Host1和Host2的IPv4地址,手动配置分配两隧道,并设置
了静态路由信息。按照实验2的配置步骤,分别为Host1和Host2配置好IPv6地址,并且与网
络中心的Nokia IPv6路由器建立好隧道,基本操作与实验2相似。完成如上所述配置操作之
后,我们首先ping电子科大网络中心IPv6路由器的IPv6地址,实验成功,IPv6网络连通了
,然后ping CERNET IPv6实验网的主机,利用finger6,FTP6浏览6bone网络中其他网络资
源,实验成功,我们与CRENET IPv6实验床和国际IPv6实验网6bone实现了连网。

D.Pv6/IPv4路由器研究

  在成功配置了IPv6主机并且接入了国际IPv6之后,我们尝试组建自己的IPv6网络,具
体组网如图4所示:
    
  由于没有现成的IPv6路由器,就尝试利用Linux操作系统,配置成IPv6路由器,具体工
作如下:我们就在支持IPv6的Linux主机上,配置多个网卡,为每个网卡设置好IPv6地址,
在操作系统中编辑新的配置文件和Script文件,主要为network-ip6、 network-ip6.conf
、network-ip6.init、tunnels-ip6.init和radvd.init几个文件。具体编辑细节参看Pet
er Bieringer 2000-05-19所著的IPv6 & Linux - HowTo 3.14版。之中较为关键的是  
 /etc/sysconfig/network-ip6文件,需要设置IP6FORWARDING=yes,IP6GATEWAYCOnFIG=
yes,IP6ROUTEFILE=/etc/sysconfig/network-ip6.conf,这样设置之后,从一个网络接口
发送来的IPv6报文就可以转发到另外的网络接口,完成路由转发功能,完成路由器基本功
能,再启动其他路由协议,完成相关工作,到此,我们的IPv6路由器就安装成功了,如果
还要安装其他的IPv6路由协议,可以参照相应的文档。
推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 无线认证设置故障排除方法及注意事项
    本文介绍了解决无线认证设置故障的方法和注意事项,包括检查无线路由器工作状态、关闭手机休眠状态下的网络设置、重启路由器、更改认证类型、恢复出厂设置和手机网络设置等。通过这些方法,可以解决无线认证设置可能出现的问题,确保无线网络正常连接和上网。同时,还提供了一些注意事项,以便用户在进行无线认证设置时能够正确操作。 ... [详细]
  • 本文详细介绍了相机防抖的设置方法和使用技巧,包括索尼防抖设置、VR和Stabilizer档位的选择、机身菜单设置等。同时解释了相机防抖的原理,包括电子防抖和光学防抖的区别,以及它们对画质细节的影响。此外,还提到了一些运动相机的防抖方法,如大疆的Osmo Action的Rock Steady技术。通过本文,你将更好地理解相机防抖的重要性和使用技巧,提高拍摄体验。 ... [详细]
author-avatar
mobiledu2502909131
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有