页面

2011年11月6日星期日

IPv6心法第三层:IPv6组网

关键词:IPv6, tunnelbroker, networking, 组网, Windows 7, IPv6 路由器

本文副标题:将一台 Windows 7 电脑配置成 IPv6 路由器

  本文乃 IPv6 心法(互联网通信协议第六版穿墙心法,以下简称心法)第三层要义。标题有些不太严肃,但是用在中国还是比较贴切的。要看懂心法第三层,需要有第一层和第二层的基础。

心法第一层:Teredo,见 Windows 7,中国电信ADSL的环境下配置IPv6
心法第二层:TunnelBroker,见 windows 7 下使用tunnelbroker 服务配置IPv6
心法第三层:Networking,即本文 IPv6心法第三层:IPv6组网

  对于打通了心法第二层的人来说,Hurricane Electric 旗下的 tunnelbroker.net 提供的一个 /64 全球可路由网段还是非常诱人的,只用一个 endpoint 未免太浪费了。另外,在同一个 IPv4 局域网中,只能有一个 tunnelbroker.net 的通道。所以,要让局域网的每台设备都能有一个全球 IPv6 地址,就必须使用这个 /64 网段了。

  在 tunnelbroker.net 的通道的详细信息页,点击 Routed /64 旁边的 i 状图标,会有一个提示层曰:
We automatically assign a /64 to your account and route it via:
ipv6 route [routed64] [clientV6Endpoint] 
This allows your endpoint device to operate as the router for this netblock and allows you to utilize DHCPv6 or RADVD to hand out IP's from this allocation to your internal network. 
If you have more than one network segment please consider utilizing the /48 above.
提示我们可以用该网段配置自己的内部网络。但是,中文网络中有关这个网段的用法的文章非常少,最后还是在官方论坛中找到了解决方案。大家可以去官方论坛里的 Windows 板块看看,有很多有用的信息:http://www.tunnelbroker.net/forums/index.php?board=5.0。详见文章最后的参考。我实践了一下这个方案,有了一些经验,写下供大家参考。


  我们要建立一个 IPv6 网络,需要配置 IPv6 路由器。有三种方式:
1,将一台路由器配置为 IPv6 路由器
2,将一台 Linux 机器配置为 IPv6 路由器
3,将一台 Windows 机器配置为 IPv6 路由器

  第一种方式需要路由器支持 IPv6,或者自己给路由器刷入自定义固件令其支持 IPv6。这个方式动作比较大,需要折腾的地方比较多,可以参考该文:

Tomato Toastman完美支持he.net的IPV6

  这是一个独立博客作者写的。据我观察,一般独立域名的博客寿命都比较短。还好我们有许多垃圾站。如果原始链接失效了,通过标题还可以搜到一批垃圾站的转载。

  第二种方式和第一种类似,毕竟路由器上跑的大都是 Linux 内核。这一类的文章相对较多,我也贴一个链接:

he.net的TunnelBroker

  我只介绍第三种方式的操作步骤。对于大部分人来说,这种方式是最容易实现的。先说明一下我的网络结构。一个普通的 ADSL 拨号上网的路由器后面带几台电脑。有 Linux 也有 Windows。我自己用的是一台 Windows 7。以下就把这台 Windows 7 配置成 IPv6 路由器,且不影响原来的正常使用。当然,要让整个网络的 IPv6 连接一直有效的话,需要让这台电脑一直开着。

  以下以这三个参数值为例,你需要修改为自己的参数,注意粗体部分:

Server IPv6 Address: 2001:470:a:76f::1
Client IPv6 Address: 2001:470:a:76f::2
Routed /64: 2001:470:b:76f::/64

  所有操作均在心法第二层操作成功后的基础之上。首先运行 cmd 进入命令行。然后,只需三条命令,即可将该 Windows 7 配置成一台 IPv6 路由器:


将通道设置为允许转发:
netsh interface ipv6 set interface IP6Tunnel forwarding=enabled
将本地连接的网卡也设置为允许转发:
netsh interface ipv6 set interface "本地连接" forwarding=enabled
给网卡添加一个 IPv6 地址,这个地址就是 IPv6 网关了:
netsh interface ipv6 add address "本地连接" 2001:470:b:76f::1


  这就设置好了,这个是不用重启,立即生效的。其他局域网的电脑只需在"本地连接"中指定一个空闲的 2001:470:b:76f::/64 段的 IPv6 地址,设置好正确的网关即可,如下图。之后也可以设置让电脑自动获取 IPv6 地址,本文后面会有介绍。



  局域网中有 ubuntu 机器的话,也可以配置一个 IPv6 的地址:


  需要断开 ubuntu 的网络连接再重新连上,IPv6 地址就生效了。我们还是到 http://[2001:4810::110]/ 验证一下:



  为了让其他电脑可以自动配置 IPv6 地址,需要在 Windows 7 路由器上再运行几个命令:


开启本地连接的路由广播,向局域网内通知 IPv6 路由器的地址:
netsh interface ipv6 set interface "本地连接" advertise=enabled
下面这条路由是给网卡添加地址时自动加上的,现在需要广播该路由信息:
netsh interface ipv6 set route 2001:470:b:76f::/64 "本地连接" publish=yes
下面这条路由是早就有了的,现在也需要广播这条路由信息:
netsh interface ipv6 set route ::/0 IP6Tunnel 2001:470:a:76f::1 publish=yes


  设置完成之后,可能需要稍等片刻,待路由广播了一段时间,其他电脑设置为“自动获取 IPv6 地址”,就能获得一个 IPv6 地址了。


  现在网络中就有四台电脑连入 IPv6 网络了。除了本机,另外三台如果访问了 IPv6 网络,本机(也是 IPv6 网关、路由器)上就可以通过命令 netsh interface ipv6 show neighbors 查询到一个地址列表:



  其中 2001:470:b:76f::3 是 ubuntu,另外两个 2001:470:b:76f::/64 的地址都是设置成自动获取 IPv6 地址的 Windows。


  我们从外面 ping 一下第二台电脑看能不能连通:



  完全正常。虽然延迟较高,也是受网络条件所限,但至少说明这台电脑已经是一台全球可路由的 IPv6 节点了。


参考:
1,http://www.tunnelbroker.net/forums/index.php?topic=918.0
2,http://www.dezzanet.co.uk/articles/26/2010/05/12/Sharing-an-IPv6-tunnel-from-a-Windows-machine/
3,http://www.tunnelbroker.net/forums/index.php?topic=1439.msg9375#msg9375 的第10楼的回复


使用Facebook社交插件参与评论: