周海汉 /文
2010.4.2
http://blog.csdn.net/ablo_zhou
ablozhou # gmail.com
IPv6杂谈
话说IPv4地址不够用了,只有2的32次方个,尤其是中国这样的发展中的人口大国,所分到的IP地址非常少,以至于中国公司里最常见的都是内部网 址,公网IP非常稀缺。而美国的大学,人手一个公网地址,还有大把IP不知怎么用出去。既然不够用,分配又不均,那么扩展一下吧,将IP地址由32位扩展 到128位,据说 等价于地球上每平方毫米6.7×1017 个地址。这下大家都不用争了。不仅电源插头可以分一个IP,连地球上的蚂蚁都可以分一个IP,让他们也沾一下信息技术的光。
不过,IPv6虽然唱了很多年,除了研究机构在提,并不见平民百姓应用。其实呢,像我等并不具备IPv6网络条件的,也可以借助 linux,mac, win7等系统,采用曲线救国的方式,率先尝鲜IPv6. 甚至还可以代表技术的先进性,突破GFW,访问一些无端被封的又支持IPv6的网络,如youtube,用的人多了,GFW也得升级,让做GFW的孙子们 免于失业(此语并非骂人,出处:未来是我们的,也是儿子们的,但最终是孙子们的),也算是为促进中国的高新技术发展和拉升GDP做了贡献。
linux对ipv6的支持情况概述
linux内核2.2.1以上的版本就支持IPv6,只不过不同的linux发行版由于对IPv6态度不同,有的发行版已经带有,有的需要额外加入[1 ]。由于网络等原因,大多数人没有用上IPv6,国内实验性的IPv6网络在一些高校有部署。ubuntu9.10也是支持IPv6的。
-
zhouhh@zhh64:~$ ifconfig
-
eth0 Link encap:以太网 硬件地址 00:1f:c6:f3:ed:99
-
inet 地址:192.168.11.116 广播:192.168.11.255 掩码:255.255.255.0
-
inet6 地址: fe80::21f:c6ff:fef3:ed99/64 Scope:Link
-
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
-
接收数据包:2675133 错误:0 丢弃:0 过载:0 帧数:0
-
发送数据包:2067074 错误:0 丢弃:0 过载:0 载波:0
-
碰撞:0 发送队列长度:1000
-
接收字节:456461801 (456.4 MB) 发送字节:166684495 (166.6 MB)
-
中断:19 基本地址:0xcc00
-
lo Link encap:本地环回
-
inet 地址:127.0.0.1 掩码:255.0.0.0
-
inet6 地址: ::1/128 Scope:Host
-
UP LOOPBACK RUNNING MTU:16436 跃点数:1
-
接收数据包:62110 错误:0 丢弃:0 过载:0 帧数:0
-
发送数据包:62110 错误:0 丢弃:0 过载:0 载波:0
-
碰撞:0 发送队列长度:0
-
接收字节:11457430 (11.4 MB) 发送字节:11457430 (11.4 MB)
可以看到eth0和lo的ipv6地址。
然而由于网络不支持ipv6的原因,一般我们是无法访问到ipv6的地址的。
下面是几个测试用的网站:
-
http://www.kame.net/ 如果看到乌龟在动,说明你支持ipv6
-
http://www.sixxs.net/tools/ipv6calc/ 如果看到你的ip地址不是ipv4的地址,说明支持ipv6
-
http://ipv6.beijing2008.cn/ 如果能看到页面支持ipv6
-
http://ipv6.google.com/ 如果能看到页面,说明ipv6支持
那么在命令行下,linux也提供一系列工具进行测试,如ping6, tracert6:
zhouhh@zhh64:~$ ping6 ipv6.google.com PING ipv6.google.com(pv-in-x6a.1e100.net) 56 data bytes 64 bytes from pv-in-x6a.1e100.net: icmp_seq=1 ttl=52 time=389 ms 64 bytes from pv-in-x6a.1e100.net: icmp_seq=2 ttl=52 time=383 ms ^C64 bytes from pv-in-x6a.1e100.net: icmp_seq=3 ttl=52 time=375 ms
— ipv6.google.com ping statistics — 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 375.472/382.975/389.489/5.764 ms zhouhh@zhh64:~$ zhouhh@zhh64:~$ tracert6 ipv6.beijing2008.cn 程序“tracert6”尚未安装。 您可以使用以下命令安装: sudo apt-get install ndisc6 tracert6: command not found
需要net-tools版本大于1.5.1,ubuntu9.10的net-tools版本是 1.6
IPv4网络下使用IPv6原理
有点类似于VPN,采用tunnel模式,向ipv6服务器获取一个ipv6的地址,然后通过隧道访问ipv6网络。
ubuntu9.10下使用ipv6
1.下载隧道客户端软件gw6c (gateway6 client)
sudo apt-get install gw6c
该版本是6.0.1dfsg.1-4.
其原理是采用TSP协议,建立和维护静态隧道。gw6c运行后,连接到隧道代理(tunnel broker)。
**2.解决该版本gw6c的bug **
本版本没有生成gw6c.conf到/etc/gw6c.
我们必须手工修复。
zhouhh@zhh64:/etc/gw6c$ cd /usr/share/doc/gw6c/
zhouhh@zhh64:/usr/share/doc/gw6c/examples$ ls gw6c.conf.sample.gz zhouhh@zhh64:/usr/share/doc/gw6c/examples$ sudo gzip -d gw6c.conf.sample.gz zhouhh@zhh64:/usr/share/doc/gw6c/examples$ ls gw6c.conf.sample zhouhh@zhh64:/usr/share/doc/gw6c/examples$ sudo vi gw6c.conf.sample
修改:
if_tunnel_v6v4=sit1
if_tunnel_v6udpv4=tun0 if_tunnel_v4v6=sit0 template=linux
可以看到
server=anonymous.freenet6.net
也可以设置为台湾的:
server=tb.ipv6.apol.com.tw
另存为~/gw6c.conf
zhouhh@zhh64:~$ sudo cp gw6c.conf /etc/gw6c/.
3. 启动gw6c
此前还不支持ipv6
zhouhh@zhh64:~$ ifconfig eth0 Link encap:以太网 硬件地址 00:1f:c6:f3:ed:99 inet 地址:192.168.11.116 广播:192.168.11.255 掩码:255.255.255.0 inet6 地址: fe80::21f:c6ff:fef3:ed99/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1 接收数据包:2600649 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:2012937 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:1000 接收字节:437236207 (437.2 MB) 发送字节:161545732 (161.5 MB) 中断:19 基本地址:0xcc00
lo Link encap:本地环回 inet 地址:127.0.0.1 掩码:255.0.0.0 inet6 地址: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 跃点数:1 接收数据包:61335 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:61335 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:0 接收字节:11332448 (11.3 MB) 发送字节:11332448 (11.3 MB)
zhouhh@zhh64:~$ ping6 ipv6.google.com connect: Network is unreachable
访问http://www.sixxs.net/tools/ipv6calc/
看到的是ipv4的地址:
-
http://www.sixxs.net/tools/ipv6calc/
-
IPv4 address
-
218.249.75.164
-
Registry of IPv4 address
-
APNIC
-
Reverse DNS resolution
-
3(NXDOMAIN)
-
Generated by ipv6calcweb.cgi, (P) & (C) 2002 by Peter Bieringer
-
Powered by ipv6calc, (P) & (C) 2001-2007 by Peter Bieringer <pb (at) bieringer.de>
-
Modified to SixXS-style by Jeroen Massar
- Your Browser: Mozilla/5.0 X11 U Linux x8664 zh-CN rv1.9.1.8) Gecko/20100214 Ubuntu/9.10 karmic) Firefox/3.5.8
编辑系统->首选项->网络连接,编辑eth0,IPv6设置标签的方法,有忽略设为自动,应用。
用超级用户权限执行gw6c。
再测试ipv6:
zhouhh@zhh64:~$ sudo gw6c zhouhh@zhh64:~$ ps -ef | grep gw6c root 17980 1 0 10:03 ? 00:00:00 gw6c zhouhh 18007 8593 0 10:03 pts/1 00:00:00 grep –color=auto gw6c
4.测试使用ipv6
-
zhouhh@zhh64:~$ ifconfig
-
eth0 Link encap:以太网 硬件地址 00:1f:c6:f3:ed:99
-
inet 地址:192.168.11.116 广播:192.168.11.255 掩码:255.255.255.0
-
inet6 地址: fe80::21f:c6ff:fef3:ed99/64 Scope:Link
-
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
-
接收数据包:2625933 错误:0 丢弃:0 过载:0 帧数:0
-
发送数据包:2032156 错误:0 丢弃:0 过载:0 载波:0
-
碰撞:0 发送队列长度:1000
-
接收字节:443452120 (443.4 MB) 发送字节:163293807 (163.2 MB)
-
中断:19 基本地址:0xcc00
-
lo Link encap:本地环回
-
inet 地址:127.0.0.1 掩码:255.0.0.0
-
inet6 地址: ::1/128 Scope:Host
-
UP LOOPBACK RUNNING MTU:16436 跃点数:1
-
接收数据包:61521 错误:0 丢弃:0 过载:0 帧数:0
-
发送数据包:61521 错误:0 丢弃:0 过载:0 载波:0
-
碰撞:0 发送队列长度:0
-
接收字节:11363324 (11.3 MB) 发送字节:11363324 (11.3 MB)
-
tun0 Link encap:未指定 硬件地址 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
-
inet6 地址: 2001:5c0:1000:b::5a13/128 Scope:Global
-
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 跃点数:1
-
接收数据包:571 错误:0 丢弃:0 过载:0 帧数:0
-
发送数据包:537 错误:0 丢弃:0 过载:0 载波:0
-
碰撞:0 发送队列长度:500
-
接收字节:500599 (500.5 KB) 发送字节:87274 (87.2 KB)
可以看到,多了一个tun0,其inet6 地址: 2001:5c0:1000:b::5a13/128 Scope:Global以2001打头,正是隧道用ipv6地址。
zhouhh@zhh64:~$ ping6 ipv6.google.com PING ipv6.google.com(pv-in-x63.1e100.net) 56 data bytes 64 bytes from pv-in-x63.1e100.net: icmp_seq=1 ttl=52 time=378 ms 64 bytes from pv-in-x63.1e100.net: icmp_seq=2 ttl=52 time=384 ms 64 bytes from pv-in-x63.1e100.net: icmp_seq=3 ttl=52 time=382 ms
打开firefox浏览器,浏览如下网页:
http://www.kame.net/ 终于看到乌龟动起来了。
http://www.sixxs.net/tools/ipv6calc/ 看到地址如下:
-
Your client
-
EUI-64 scope
-
local
-
Interface identifier
-
0000:0000:0000:5a13
-
IPv6 address
-
2001:05c0:1000:000b:0000:0000:0000:5a13
-
Registry of IPv6 address
-
ARIN
-
Reverse DNS resolution
-
3.1.a.5.0.0.0.0.0.0.0.0.0.0.0.0.b.0.0.0.0.0.0.1.0.c.5.0.1.0.0.2.ip6.arpa.
-
Site Level Aggregator (subnet)
-
000b
-
Address type
-
unicast,global-unicast
访问http://ipv6.beijing2008.cn/ 和 http://ipv6.google.com 可以正常浏览网页。
5.翻墙浏览被禁ipv6网站
由于目前GFW只针对IPv4的网页进行封禁和reset,IPv6可以免疫。
不过,未经设置,并不能直接通过域名访问到被禁网站,如youtube.com.
因为系统首先会采用IPv4去访问。
此时访问http://www.youtube.com会被屏蔽。
参考下面的网页文档,在/etc/hosts内设置支持IPv6网站的IPv6地址:
http://docs.google.com/View?docID=0ARhAbsvps1PlZGZrZG14bnRfNjFkOWNrOWZmcQ&revision=_latest&hgd=1
测试访问
http://www.youtube.com已经没有障碍,速度挺快。
参考资料
http://www.kame.net/
http://www.sixxs.net/tools/ipv6calc/
http://ipv6.beijing2008.cn/
http://ipv6.google.com/
http://zh.wikipedia.org/wiki/IPv6
http://www.moonv6.org/
http://www.apol.com.tw/ipv6/ipv6-tb-1.html
http://forum.ubuntu.org.cn/viewtopic.php?f=73&t=124378
http://www.jijiao.com.cn/Networking/prosect/ipv6/00000021.htm
http://blog.csdn.net/ablo_zhou/archive/2010/04/01/5441840.aspx
注释
============
[1]http://www.jijiao.com.cn/Networking/prosect/ipv6/00000021.htm linux支持IPv6么?
如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源