ipv6.tsinghua.edu.cn
ipv6.tsinghua.edu.cn copied to clipboard
ISATAP 配置需要更新
如题
在OpenWRT上:
root@OpenWRT:~# cat /etc/init.d/isatap
#!/bin/sh /etc/rc.common
START=95
V4_REMOTE="166.111.21.1"
V6_REMOTE="2402:f000:1:1501:200:5efe"
V6_LOCAL="fe80::200:5efe"
IFACE6=sit1
start() {
sleep 1
. /lib/functions/network.sh; network_get_ipaddr IP4 wan;
ip tunnel add $IFACE6 mode sit remote $V4_REMOTE local $IP4
ip link set dev $IFACE6 up
ip -6 addr add $V6_LOCAL:$IP4/64 dev $IFACE6
ip -6 addr add $V6_REMOTE:$IP4/64 dev $IFACE6
ip -6 addr del fe80::$IP4/64 dev $IFACE6
ip -6 route add default via $V6_REMOTE:$V4_REMOTE
}
stop() {
ip tunnel del $IFACE6
}
root@OpenWRT:~# cat /etc/hotplug.d/iface/95-isatap
#!/bin/sh
[ ifup = "$ACTION" ] && {
[ wan = "$INTERFACE" ] && {
/etc/init.d/isatap start
}
}
[ ifdown = "$ACTION" ] && {
[ wan = "$INTERFACE" ] && {
/etc/init.d/isatap stop
}
}
另外需要
chmod +x /etc/init.d/isatap
chmod +x /etc/hotplug.d/iface/95-isatap
/etc/init.d/isatap enable
在Arch Linux上源里的isatapd自动配置有时候会抽风。
blaok@arch ~%cat /usr/local/bin/isatapd
#!/bin/sh
IFACE4=eth0
IFACE6=sit1
V4_REMOTE="166.111.21.1"
V6_REMOTE="2402:f000:1:1501:200:5efe"
V6_LOCAL="fe80::200:5efe"
case $1 in
stop)
if [ -e "$2" ]
then
kill `cat $2`
rm $2
else
killall `basename $0`
fi
ip -6 route del default via $V6_REMOTE:$V4_REMOTE
ip tunnel del $IFACE6
;;
start)
while true
do
IP4=`ip addr show dev $IFACE4 | sed -e's/^.*inet \([^ ]*\)\/.*$/\1/;t;d'`
IP4_TMP=`echo $IP4|sed -e 's/\./ /g'`
CURR_IP4_HEX=`printf '%02x%02x:%02x%02x' $IP4_TMP`
PREV_IP4_HEX=`ip -6 addr show dev $IFACE6 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d' | egrep -o '[0-9a-f]{4}:[0-9a-f]{4}$' -m 1`
if [ "$CURR_IP4_HEX" != "$PREV_IP4_HEX" ] && [ ! -e "$CURR_IP4_HEX" ]
then
ip -6 route del default via $V6_REMOTE:$V4_REMOTE
ip tunnel del $IFACE6
sleep 1s
ip tunnel add $IFACE6 mode sit remote $V4_REMOTE local $IP4
ip link set dev $IFACE6 up
ip -6 addr add $V6_LOCAL:$IP4/64 dev $IFACE6
ip -6 addr add $V6_REMOTE:$IP4/64 dev $IFACE6
ip -6 addr del fe80::$IP4/64 dev $IFACE6
ip -6 route add default via $V6_REMOTE:$V4_REMOTE dev $IFACE6
else
sleep 1s
fi
done &
if [ ! -e "$2" ]
then
echo $!|tee $2>/dev/null
fi
;;
*)
echo "Usage:"
echo " $0 start [pidfile]"
echo " $0 stop [pidfile]"
esac
blaok@arch ~%cat /etc/systemd/system/isatapd.service
[Unit]
Description=ISATAP Tunnel Daemon
After=network.target
[Service]
Type=forking
User=root
PIDFile=/run/isatapd.pid
ExecStart=/usr/local/bin/isatapd start /run/isatapd.pid
ExecStop=/usr/local/bin/isatapd stop /run/isatapd.pid
[Install]
WantedBy=multi-user.target
当然
sudo chmod +x /usr/local/bin/isatapd
sudo systemctl daemon-reload
sudo systemctl enable isatapd
sudo systemctl start isatapd
OS X 参考方法
#!/bin/sh
#清除IPV6路由表
sudo route delete -inet6 default
sudo 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
sudo ifconfig gif0 create
ifconfig gif0 tunnel $LOCAL_IP 166.111.21.1
ifconfig gif0 inet6 2402:f000:1:1501:200:5efe:$LOCAL_IP prefixlen 64
route add -inet6 default 2402:f000:1:1501::1
fi
用 safari 开 ipv6.tsinghua.edu.cn 一定会返回 IPv4 的。Mac OS X Lion 之后使用 RFC 6555 的双栈快速 Fallback 进行链路选择,实际实现的时候是选择延迟小的那条线路,显然到 ipv6.tsinghua.edu.cn 直接用 IPv4 延迟比较小,所以 safari 无论如何都会选择 IPv4 连接清华的 IPv6 站。
并不全是这样。
如果系统标准的网络连接中,没有v6的连接,那么 safari 会直接使用 v4,这意味着,safari根本不会去查询 AAAA 记录。
例如,假设我在系统设置中关掉了所有的 v6 ,然后用命令行开启了一个 interface 名字是 gif0 。但是这个 gif0 不会出现在系统的网络连接的列表中,因此 safari 不会去查询 AAAA 记录。
本邮件具有数字签名,敬请核对。 王邈 清华大学计算机科学与技术系 电话:+86 130-5186-7712 通信地址:北京市海淀区清华大学紫荆公寓2号楼307A 100084
Please check the digital signature attached with the e-mail. Miao Wang Department of Computer Science and Technology, Tsinghua University Tel.: +86 130-5186-7712 Add.: Room 307A, No.2 Zijing Building, Tsinghua University, Peking. P.R.C. 100084
在 2016年3月11日,19:46,bigeagle [email protected] 写道:
OS X 参考方法
#!/bin/sh #清除IPV6路由表 sudo route delete -inet6 default
sudo 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 sudo ifconfig gif0 create ifconfig gif0 tunnel $LOCAL_IP 166.111.21.1 ifconfig gif0 inet6 2402:f000:1:1501:200:5efe:$LOCAL_IP prefixlen 64 route add -inet6 default 2402:f000:1:1501::1 fi 用 safari 开 ipv6.tsinghua.edu.cn 一定会返回 IPv4 的。Mac OS X Lion 之后使用 RFC 6555 的双栈快速 Fallback 进行链路选择,实际实现的时候是选择延迟小的那条线路,显然到 ipv6.tsinghua.edu.cn 直接用 IPv4 延迟比较小,所以 safari 无论如何都会选择 IPv4 连接清华的 IPv6 站。— Reply to this email directly or view it on GitHub https://github.com/tuna/ipv6.tsinghua.edu.cn/issues/1#issuecomment-195334931.
下面两个命令可以解决 OS X 下 GUI 程序不使用 IPv6 的问题:
sudo ipconfig set gif0 MANUAL-V6 2402:f000:1:1501:200:5efe:$LOCAL_IP 64
sudo route add -inet6 ::/0 -interface gif0
不得不说 OS X 的网络太 buggy 了
@XiaoxiaoPu 应该是 ifconfig
?
@bigeagle 没打错哦,就是 ipconfig
,OS X 里才有的
这么牛!那它和 ifconfig gif0 inet6 2402:f000:1:1501:200:5efe:$LOCAL_IP prefixlen 64
冲突吗?
没了解过 ipconfig
本邮件具有数字签名,敬请核对。 王邈 清华大学计算机科学与技术系 电话:+86 130-5186-7712 通信地址:北京市海淀区清华大学紫荆公寓2号楼307A 100084
Please check the digital signature attached with the e-mail. Miao Wang Department of Computer Science and Technology, Tsinghua University Tel.: +86 130-5186-7712 Add.: Room 307A, No.2 Zijing Building, Tsinghua University, Peking. P.R.C. 100084
在 2016年3月24日,21:32,bigeagle [email protected] 写道:
这么牛!那它和 ifconfig gif0 inet6 2402:f000:1:1501:200:5efe:$LOCAL_IP prefixlen 64 冲突吗?
— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/tuna/ipv6.tsinghua.edu.cn/issues/1#issuecomment-200835197
@bigeagle 它会覆盖 ifconfig
的修改,根据我的经验 ifconfig
虽然给 NIC 设置了 IPv6 地址,OS X 下的 GUI 程序并不吃这一套,但是 ipconfig
设置的就可以。不懂 OS X 的网络到底怎么弄的,各种 dirty hack。
@XiaoxiaoPu 蒽,试试这个脚本对不对?对的话我就更新内容了。
#!/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
@bigeagle ifconfig gif0 tunnel $LOCAL_IP 166.111.21.1
这一行可以去掉,别的没问题了。
@XiaoxiaoPu 这行去掉怎么知道 ISATAP server 在哪儿?
@bigeagle 哎,脑残了,忽略忽略🌚。 那就没啥问题了。
233
求助一下,最近的ISATAP的路由不能用了(两人的同时不能用应该不是路由器的锅),但是PC直接连网线可以,是学校的服务器出什么问题了么?还是说配置需要更新了?
一直没在路由器背后用过 ISATAP,学校动没动配置我还真不清楚
@xiadaorobinhood 这个问题可能找 [email protected] 更靠谱些。
ISATAP 本质上是 IPv6 over IPv4,过不了 NAT
@XiaoxiaoPu 经验上有人成功过 https://wiki.tuna.tsinghua.edu.cn/IsatapBehindNat
改了一下参数现在可以用了 新的ipv6前缀:2402:f000:1:1501:: ipv4网关:166.111.21.1 原来的59.66的那个网关貌似跪了。。。
@bigeagle 查到肥猫的博客 http://blog.felixc.at/2011/07/isatap-behind-nat-windows-xp-auto-config-python-script/ ,看起来是路由器自动转发 IPPROTO_IPV6 的包,使得局域网内有一个机器可以使用 ISATAP 隧道,但是 ISATAP 只有三元组 <IPPROTO_IPV6, SRC, DST>,没有端口的概念,不算 NAT
@xiadaorobinhood 啊,这是好久以前的事情了…… 你看帮助里写的都是这个……
@bigeagle 但是我更早之前搜到的不是这个,而且还能用。。。知道昨天才突然不能用了
@xiadaorobinhood 恩,估计是更新了好久了,学校就给停了吧。我记得13年就更新了。
@bigeagle 不管怎样,还是谢谢啦!
你们要是能把那台机器找到就好了
我之前不知道有 isatapd,所以自己造了个轮子:https://gist.github.com/alick/e22e2bf49c4ea457d16df2959720aa75
看下里面有没有什么有价值的吧。
OS X 下的 ipv6.tsinghua.edu.cn 上的 isatap 工具无法使用……但这个可以使用 https://github.com/wyq10/mac-isatap 改一下参数即可
@tonygaosh 是哪个方面无法使用? wyq10/mac-isatap 看起来是能用的,但是没有使用 ipconfig
来设置,据说桌面程序就不能用了……