IPV6 ISATAP 隧道配置

或许是不知梦的缘故,流离之人追逐幻影;

生人无能相惜者,曰悲;

再无可许之誓言,曰哀。

孤独是与生俱来的种子,萌发于爱上一个人的瞬间;

但既然相逢,纵无携手,总好过一生陌路。

死亡就像是酒后的别辞,从此置身事外,

我可以看透这光阴,但光阴的尽头没有你,又有什么好?

你将沉睡在一泓湖泊里,等待多年之后的访客;

还要一些年,等我席卷这一天下;

我们将重逢在水清沙幼白鸟飞翔的岸边。

那时的我会死在席卷天下的战场上,你教我种的那些花,都已枯萎。

江南 <<龙族>>

什么是ISATAP隧道?

ISATAP 全名是 Intra-Site Automatic Tunnel Addressing Protocol,是一种 IPv6 隧道技术,使用户可以在 IPv4 网络上访问 IPv6 资源。它将 IPv4 地址夹入 IPv6 地址中,当两台 ISATAP 主机通讯时,可自动抽取出 IPv4 地址建立 Tunnel 进行通讯,且并不需透过其它特殊网络设备,只要彼此间 IPv4 网络通畅即可。

双栈主机支持 isatap 后会自动在该隧道接口上生成本地链路的前缀(fe80:: 开头)和64位的接口标识符 ::0:5EFE:X.X.X.X(这里的 X.X.X.X 是双栈主机的 IPv4 单播地址),这样就可以和同一子网内其他 isatap 客户机进行 ipv6 通讯了;如果需要和其他网络的 isatap 客户机或者 IPv6 网络通信,必须通过 ISATAP 路由器拿到全球单播地址前缀(2001:, 2002:, 3ffe: 开头),通过路由器与其他 IPv6 主机和网络通信。

ISATAP过渡技术不要求隧道端节点必须具有全球惟一的 IPv4 地址,只要双栈主机具有 IPv4 单播地址即可,不管该地址公有的还是私有的都可以。 具体技术原理参见(draft-ietf-ngtrans-isatap-24.txt)。

清华大学ISATAP隧道信息

  • 清华大学 ISATAP 隧道路由器的IPv4地址为:isatap.tsinghua.edu.cn
  • 用户设置 ISATAP 隧道的接入点为:isatap.tsinghua.edu.cn
  • 清华大学 ISATAP 隧道 IPv6 地址前缀为:2402:f000:1:1501::/64

清华大学ISATAP隧道配置方法

Windows 环境(Windows 7及以上系统适用)

以管理员身份运行 powershell 命令,进入命令行,输入如下命令

1
2
netsh int ipv6 isatap set router isatap.tsinghua.edu.cn
netsh int ipv6 isatap set state enable

以上两条命令分别为设定ISATAP路由器和启用ISATAP隧道。

此后,通过 ipconfig 应该可以看到一个 2402:f000:1:1501: 为前缀的v6地址,hostid 为 200:5efe:x.x.x.x, 其中 x.x.x.x 为真实的 IPv4 地址,即可访问 IPv6 资源。

以下操作为非必须。如果按照上述提示操作以后仍无法正常访问 IPv6 站点,可以尝试:

  • 右键点击桌面计算机图标,选择管理,展开服务和应用程序,选择服务,确认 IP Helper 服务已开启;
  • 确认 Teredo隧道 已经关闭(管理员模式在命令行运行 netsh int teredo set state disable);
  • 确认 原生IPv6 已经关闭(Internet 协议版本 6 (TCP/IPv6) 前的对勾取消);
  • 尝试重启系统。

Linux 环境

Linux 内核版本在 2.2.0 以后通常支持 IPv6,请查看是否存在 /proc/net/if_inet6 文件,以确定您的系统是否支持 IPv6,如果该文件不存在,可尝试如下命令加载 IPv6 模块:

1
sudo modprobe ipv6

成功加载后就可以配置 IPv6 了:

编辑 /usr/local/bin/thu6tunnel.sh,并加入以下内容:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
REMOTE_IP6="2402:f000:1:1501:200:5efe"
REMOTE_IP4="166.111.21.1"
IFACE4=`ip route show|grep default|sed -e 's/^default.*dev \([^ ]\+\).*$/\1/'`
IP4=`ip addr show dev $IFACE4 | grep -m 1 'inet\ ' | sed -e 's/^.*inet \([^ \\]\+\)\/.*$/\1/'`
sudo ip tunnel del sit1 # 删除已经创建的设备,若没有则忽略
sudo ip tunnel add sit1 mode sit remote $REMOTE_IP4 local $IP4
sudo ip link set dev sit1 up
sudo ip -6 addr add $REMOTE_IP6:$IP4/64 dev sit1
sudo ip -6 route add default via $REMOTE_IP6:$REMOTE_IP4 dev sit1

更改权限

1
sudo chmod +x /usr/local/bin/thu6tunnel.sh

之后执行 thu6tunnel.sh 即可。

也可以单独执行以下命令:

1
2
3
4
5
6
7
8
REMOTE_IP6="2402:f000:1:1501:200:5efe"
REMOTE_IP4="166.111.21.1"
IP4="你的IPv4地址" # 前三行不能有空格
sudo ip tunnel del sit1 # 删除已经创建的设备,若没有则忽略
sudo ip tunnel add sit1 mode sit remote $REMOTE_IP4 local $IP4
sudo ip link set dev sit1 up
sudo ip -6 addr add $REMOTE_IP6:$IP4/64 dev sit1
sudo ip -6 route add default via $REMOTE_IP6:$REMOTE_IP4 dev sit1

关闭 IPv6

1
2
sudo ip link set sit1 down
sudo ip tunnel del sit1

Mac OS X 环境

编写脚本 /usr/local/bin/thu6tunnel.sh,加入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh 
#清除IPV6路由表
route delete -inet6 default
ifconfig gif0 destroy
EN0_IP=`ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}'`
EN1_IP=`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
ifconfig gif0 create
ifconfig gif0 tunnel $LOCAL_IP 166.111.21.1
ipconfig set gif0 MANUAL-V6 2402:f000:1:1501:200:5efe:$LOCAL_IP 64
route add -inet6 ::/0 -interface gif0
fi

设置权限

1
sudo chmod +x /usr/local/bin/thu6tunnel.sh

用 root 权限运行脚本

1
sudo /usr/local/bin/thu6tunnel.sh

或者,打开终端,单独输入以下命令:

1
2
3
4
5
IP4="我的IPv4地址"  # 这里不能有空格
sudo ifconfig gif0 create
sudo ifconfig gif0 tunnel $IP4 166.111.21.1
sudo ipconfig set gif0 MANUAL-V6 2402:f000:1:1501:200:5efe:$IP4 64
sudo route add -inet6 ::/0 -interface gif0

这样 ISATAP 就配置好了!

关闭IPv6

1
sudo ifconfig gif0 destroy

注意,OS X 中 safari 对于 ISATAP 的 IPv6 接入不友好,仍然会打开 IPv4 地址。

请通过 ping6 ipv6.tsinghua.edu.cn 验证接入。

Enjoy !


Writing Enriches Life.