【转】非教育网中IPv4网络访问IPv6资源

时间:2024-03-02 14:34:24

1. 背景知识

随着个人电脑、移动终端、乃至物联网的不断发展,有很大的IP地址需求。由于IPv4协议设计时没有料到日后网络会如此发达,IPv4网络中的IP数量相对今天的需求来说,显得捉襟见肘。加上IPv4地址资源分配得不平均,造成部分国家的IP地址资源非常紧张,将压抑需求旺盛的互联网的发展。虽然NAT技术的出现在较大程度上缓解了IPv4资源紧张的问题,但使用地址资源更为丰富的IPv6网络仍是大势所趋。由于IPv6协议与IPv4协议的数据包头不一致,使得原有的能解析IPv4数据包的设备不能很好地解析IPv6数据包,从而造成IPv4网络与IPv6网络不能互通。IPv6网络与IPv4网络的不可兼容,给IPv6网络的推进,造成了极大的阻碍。一方面,用户因为IPv6网络中没有足够丰富的网络资源而没有动力使用IPv6;另一方面,网络内容提供商因为大部分用户都使用IPv4网络,而仅在IPv4网络中提供服务。目前,国家、科研机构以及网络服务提供商正在积极推进IPv4网络向IPv6网络的演进。

2. IPv4网络访问IPv6网络

因为本人不在教育网,无法使用教育网中的IPv6资源。所以试验了以下三种方式来访问IPv6网络。在win7下尝试了2.1和2.2中的方法,都访问成功;2.3方法暂时未成功,可能与网络速度和hosts有关。在ubuntu下尝试了2.4方法,可以访问IPv6网络。

2.1 借助ipv4.sixxs.org访问IPv6网络

这个方法非常简单。只用在需要访问的IPv6网站名加上.ipv4.sixxs.org即可访问该IPv6网站。即使在没有安装IPv6协议的XP系统上,该方法也仍然有效。例如:访问ipv6.baidu.com。如果从IPv4网络访问,则网页返回错误;如果访问http://ipv6.baidu.com.ipv4.sixxs.org/,则可正确显示网页内容。

2.2 windows系统中使用第三方软件访问IPv6互联网

由于没有公网的IPv4地址,所以无法使用ISATAP、6to4访问IPv6;而Teredo方式因为找不到可用的hosts资源,所以也无法访问IPv6。于是,只剩下最后一种方法:使用第三方软件。

目前可用的第三方软件有:六飞Venogogo6等。 我试用了以上3个软件,发现就六飞还能用,不过访问速度较慢。六飞和Veno都是国内公司开发的,有免费的使用时间,过了时间后就需要收费了。有网友提 到,六飞交费后的网络还可以接受。瞄了下,似乎也不太贵。本人目前未试验,有机会再来试试。试用了gogo6,由于总是连不上IPv6的gateway, 所以也没有成功访问IPv6网络。

如何知道自己已经成功访问了IPv6网站呢?有一个有意思的测试网站:http://www.kame.net/  如果访问其IPv6的网页,则网页上的小龟会动;如果访问其IPv4网页,则网页上的小龟不会动。呵呵,还挺有意思的。

三款软件具体如何使用,还请大家自寻。

(以下内容主要来自:http://kms.lenovots.com/kb/article.php?id=13397)

2.3 Win7上使用Teredo隧道协议访问IPv6资源

Teredo的原理请见:http://www.ipv6bbs.cn/thread-144-1-1.html 。理论上讲,使用私有IPv4地址的主机是可以通过Teredo隧道协议访问IPv6资源的,但在我的实践中没有成功,有可能是由于网速不好的原因。只要不是太老的windows系统中应都可能使用Teredo隧道协议访问IPv6资源。winXP中默认未安装IPv6协议,网络中都说可以使用命令安装IPv6。但非常遗憾,我的winXP未能成功安装,不知原因为何……以下仅详细介绍win7上如何使用teredo隧道协议。

2.3.1确认操作系统已安装IPv6协议

使用ipconfig /all命令可以查看系统是否已安装IPv6协议。Windows Vista与Windows 7、2008则默认已经安装了IPv6协议,无需再次安装。winXP系统需要安装IPv6协议。Windows XP与Windows 2003操作系统默认是没有安装IPv6协议,需要手工安装IPv6协议族。 可通过如下命令进行安装:netsh interface ipv6 install

2.3.2 确认已分配到可用的全球单播IPv6地址

可使用命令ipconfig /all 或 netsh interface ipv6 show address来查看自己的IPv6地址。如果IPv6地址以2001::,则此IPv6地址可用来访问IPv6互联网。若只有以fe80::开头的地址,则仅表示已接入IPv6网络,但这只是系统安装IPv6协议后自动产生的链路本地地址,无法访问IPv6互联网。

本地网卡无法自动获取到可用的2001::开头的全球单播IPv6地址时,只能通过隧道或第三方软件来接入IPv6,请参考本站其他帖子。 一般高校教育网的用户可以直接通过DHCPv6协议或IPv6无状态地址自动配置、ISATAP、隧道等方式接入,来自动获取2001::开头的IPv6地址。

通过Teredo隧道接入的用户在ipconfig /all信息中是没有默认网关的,是通过IPv4网络进行来传输IPv6数据,需要修改hosts文件。

2.3.3 确认可以ping通IPv6网站

使用命令:

ping -6 ipv6.google.com
ping -6 www.kame.net
ping -6 www.6rank.edu.cn

 来测试是否可以连接这些纯IPv6网站。如果返回结果中至少有一行显示reply from 200XXX::XXX...的信息,则表明可以访问IPv6网络。如果全都是request time out则是请求超时,代表IPv6网络不通,可能存在其它故障。

2.3.4 通过隧道方式接入IPv6

请首先明确采用何种隧道接入IPv6网络,仅需开启一种隧道服务即可。 

其次请确认多种隧道服务没有同时开启,确认ipconfig /all信息中的不同网卡(或隧道接口)只有一个网卡存在全球单播的IPv6地址存在,如果多个网卡均存在2001::开头的地址(比如本地网卡直接获取IPv6地址、Teredo、ISATAP、6to4等隧道均同时开启了)或多个网卡同时存在2001::开头的地址与2002::开头的地址,此时请关闭不必要的隧道服务,或直接将三种隧道全部禁用,重新配置。 

另外仅有Teredo隧道可以使用私网IP地址穿越NAT(路由器共享上网)设备,ISATAP、6to4等隧道均必须使用全球唯一的公网IPv4地址,如隧道接入不成功请尝试清除所有IPv6和隧道相关配置,并再次参考站内各种隧道接入的具体教程。

运行如下命令可以清除所有IPv6及隧道相关的配置,恢复系统默认值,建议IPv6网络故障时使用此命令恢复默认值,然后再次重新配置IPv6接入。可使用命令:netsh interface ipv6 reset来恢复默认值。Win 7及Vista用户需要管理员权限执行此命令。

当多种隧道或多个IPv6地址存在时,采用如下命令将不使用的隧道服务单独禁用: 

1. netsh  interface [ipv6] 6to4     set state disable
2. netsh  interface [ipv6] isatap  set state disable
3. netsh  interface [ipv6] teredo  set state disable

2.3.5 使用Teredo隧道接入方式访问IPv6互联网

使用Teredo方式时,必须修改本机的hosts文件,将常用的IPv6网站地址已添加到本机hosts文件中,然后才可以通过浏览器直接访问该类hosts中指定的网站。无hosts的IPv6网站也将无法访问,请务必注意。hosts文件地址: C:\Windows\System32\drivers\etc\hosts。

我在互联网上搜索了很多有IPv6网络地址的host文件,但试用之后发现大多数还是不可连接。具体原因不明,但可能原因有:1. 网络太慢,连接不上。2. 网站被墙,无法连接。

2.4 Ubuntu上使用Teredo隧道协议访问IPv6资源 (实践证明,使用miredo不能访问ipv6网络中的中国教育网的ipv6网络,但可访问ipv6网络中非中国的教育网)

转自:http://blog.felixc.at/2010/04/install-teredo-ipv6/

使用如下命令安装miredo:

sudo apt-get install miredo

安装完后,使用ifconfig命令可查看到ubuntu系统中多了一个网络接口:teredo。其中一个inet6 addr以2001打头,说明系统得到了一个可以访问IPv6网络资源的IP。此时可使用以下命令测试是否可访问IPv6资源:

ping6 ipv6.google.com
ping6 2001:470:20::2

  如果返回结果显示的IP地址为IPv6地址,则说明可访问IPv6资源。如果仅能ping6通IPv6网络地址,说明设置的dns无法解析IPv6域名。因为我使用的ubuntu12.10,所以看到了的dns地址是127.0.0.1,暂无法确知解析时使用的是哪一个dns服务器。

2.5 centos上使用Teredo隧道协议访问IPv6资源(实践证明,使用miredo不能访问ipv6网络中的中国教育网的ipv6网络,但可访问ipv6网络中非中国的教育网)

我使用的是centos5.5系统。使用命令:yum install miredo时,系统告诉我,没有可能用的安装包……我就自己下载了一个miredo的rpm安装包,结果安装的时候,提示有libJudy.so.1/libcap.so.2/rpmlib(FileDigests)/rpmlib(PayloadIsXz)这些基础包都没有,所以我又使用yum去安装这些包,结果都提示找不到可用的安装包。很无奈……于是我继续找如何能在centos5.5上安装miredo。终于被我发现了:使用epel。(以下内容来自:http://blog.51yip.com/linux/1337.html)epel是什么? 如果既想获得 RHEL 的高质量、高性能、高可靠性,又需要方便易用(关键是免费)的软件包更新功能,那么 Fedora Project 推出的 EPEL(Extra Packages for Enterprise Linux)正好适合你。EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。

首先,安装epel。

32位系统选择:
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm (centos6适用)
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm (centos5适用)

64位系统选择: 
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  (centos6适用)
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm (centos5适用)

  

 然后,安装yum-priorities。

yum install yum-priorities

 最后,可以安装并使用miredo了。

yum install miredo
service miredo-client start
ping6 ipv6.google.com