Mac OS X下通过ISATAP连接清华的IPv6的方法

2012/9/8 posted in  技术 comments

紫荆15#这边的网络是v4/v6双栈,可以自动获取到v4和v6的地址,但是鉴于网络中心的某一个项目强行给全校绝大部分ipv6加上了一个前无古人后无来者充分彰显世界一流大学地位巨烂无比经常崩溃的认证系统,并且在可以预见的未来,该认证系统并不会被拿掉,因此我毅然放弃了使用原生的ipv6,而改用没有认证系统的isatap隧道。

具体操作步骤如下:

1、首先需要获得自己电脑的IP地址,可以使用终端命令查看,也可以在系统偏好设置-网络中查看。在这里,我的IP假设为59.66.x.y

2、打开终端,依次执行下列命令:

$ sudo ifconfig gif0 tunnel 59.66.x.y 59.66.4.50
$ sudo ifconfig gif0 inet6 2001:da8:200:900e:0:5efe:59.66.x.y prefixlen 64
$ sudo route delete -inet6 default
$ sudo route add -inet6 default 2001:da8:200:900e::1

其中59.66.x.y为示例IP需要换成你自己的IP。59.66.4.50是网络中心的isatap隧道服务器的地址。配置好之后,可以在终端中ping6 ipv6.google.com,如果能够ping通,那么就请尽情的使用ipv6来爽吧。

3、如果不想每次开机都敲命令的话,可以sudo nano /etc/rc.local将第2步中的三行命令粘贴到这个文件中,然后Ctrl+XY保存即可实现开机自动实现启动。

4、该方法不需要下载额外的软件包。在Mountain Lion 10.8.1下测试通过。

下面是一个简单的小脚本文件,可以自动取得有线或者无线的IP,不需要自己敲命令写了。注意:本脚本不适合NAT的情形。

#!/bin/sh 
EN0_IP=`/sbin/ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}'` 
EN1_IP=`/sbin/ifconfig en1 | grep inet | grep -v inet6 | awk '{print $2}'` 

if [ -n "$EN0_IP" ]; then
    LOCAL_IP=$EN0_IP 
else
    LOCAL_IP=$EN1_IP 
fi 

if [ -n "$LOCAL_IP" ]; then 
    /sbin/ifconfig gif0 tunnel $LOCAL_IP 59.66.4.50 
    /sbin/ifconfig gif0 inet6 2001:da8:200:900e:0:5efe:$LOCAL_IP prefixlen 64 
    /sbin/route delete -inet6 default
    /sbin/route add -inet6 default 2001:da8:200:900e::1 
fi