跳到主要内容

使用ipv6 hosts

· 阅读需 2 分钟

一些校园网能使用ipv6,而Google、Youtube等网站支持ipv6。但是,DNS服务器一般返回的是ipv4的地址,因此,可以通过修改hosts来直接使用ipv6地址访问这些网站。

可以先在IPv6 连接测试来测试是否接入了ipv6。

在GitHub上有ipv6-hosts,用这个替换系统默认的hosts文件即可直接使用ipv6地址来访问这些网站。

然而,在使用过程中发现stackoverflow.com不能正常使用了,因此,需要删除stackoverflow.com相关条目,用ipv4访问stackoverflow.com就正常了。

写这篇文章主要是因为,前一段时间Youtube视频看不了了,通过浏览器开发者工具发现是googlevideo.com访问不了的原因,于是设置了下googlevideo.com相关的hosts。然后今天Youtube直接不能访问了,于是想了想,还是写一个自动更新hosts的小脚本吧:

#!/bin/bash

echo "Download hosts"
curl -s https://raw.githubusercontent.com/lennylxx/ipv6-hosts/master/hosts > /tmp/hosts.tmp

cat /etc/hosts.bak > /etc/hosts
filters=(youtube.com googlevideo.com)
for url in ${filters[@]}
do
sed -n "/"$url"/p" /tmp/hosts.tmp >> /etc/hosts
done
//g' /etc/hosts

echo "Restart service"
systemctl restart NetworkManager

由于我自己设置了一些hosts,不想被覆盖,因此把这些hosts放在了/etc/hosts.bak。

这个脚本里比较特殊的一点是^M,这个其实是\r,脚本里的^M是通过CTRL+V CTRL+M来输入的。关于这个字符的移除参考: sed Delete / Remove ^M Carriage Return (Line Feed / CRLF) on Linux or Unix - nixCraft


后记:学校ipv6不给力了,上不了Youtube了,呜呜呜。。。