文章

使用IPV6以避免使用google时频繁出现验证码

  最近更新时间:2019-10-02
文章目录

前言

前段时间入手了阿里云国际的小鸡,但是在访问谷歌的时候总是出现验证码,本人对此不胜其烦,于是决定使用IPV6来访问谷歌,这样可以避免平时正常使用时出现的大量验证码。由于阿里云的小鸡本身没有IPV6地址,这里采用HE.NET旗下https://www.tunnelbroker.net提供的隧道。

获取IPV6地址

阿里云小鸡本身是没有IPV6地址的,这里需要在https://www.tunnelbroker.net/注册帐号,然后申请IPV6的地址。
注册帐号之后选择左侧的Create Regular Tunnel
在IPv4 Endpoint (Your side):当中输入你的小鸡的IP地址。在下面选择一个和你小鸡最近的节点,可用ping命令进行测速。
点击下方Creater Tunnel即可成功申请IPV6地址,建立隧道(此步骤可能会需要较长的等待时间,不要着急,耐心等待)。

设置IPV6隧道

阿里云等支持直接设置的小鸡

在阿里云配置开启IPV6,修改 /etc/sysctl.conf ,添加(修改)如下参数

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

之后使用sysctl -p启用这些设置。
现在很多发行版都有iproute2工具,所以一般我们直接用iproute2的命令即可,将下文存为一个sh文件,如vi /root/ipv6.sh

modprobe ipv6
ip tunnel add he-ipv6 mode sit remote 216.218.221.6 local 你的IP ttl 255
ip link set he-ipv6 up
ip addr add 你的IPV6地址::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6

执行

bash /root/ipv6.sh

此时ipv6隧道应该可以用了,用ping6 google.com命令测试。
现在需要把这个脚本加入开机执行,以便每次重启之后都有V6的网络执行corntab -e
加入以下内容

@reboot bash /root/ipv6.sh

此时配置就完成了。
请注意,阿里云国际需要修改IPV4地址为内网IP,否则没有网络。

更多配置文件和方法查看Example Configureations,选择你的操作系统就可以看到相应的配置方法了。

示例

不支持直接修改,或直接修改无效的小鸡

有一些OVZ的小鸡无法直接采用上面的办法来启用IPV6,这里可以使用tb-tun工具来启用。
此方法需要开通tun/tap,通过

cat /dev/net/tun

进行检测,如果返回File descriptor in bad state,则说明tun/tap设备已经打开。如果该设备没有打开,则可以通过服务器的操作面板来打开,如果您的操作面板不支持直接开通,可以发送工单让客服人员协助开通,或者以下脚本“可能”有帮助

if ! [ -c /dev/net/tun ]; then
mkdir -p /dev/net
mknod -m 666 /dev/net/tun c 10 200
fi

保存为.sh后尝试执行一下再cat tun,如果正常则可以继续。
接着,安装tb-tun。

git clone https://github.com/acgrid/tb-tun.git   #如果没有安装GIT,则使用 wget "https://codeload.github.com/acgrid/tb-tun/zip/master" -O /root/tb-tun.zip && unzip tb-tun.zip && mv tb-tun-master tb-tun
cd tb-tun
gcc tb_userspace.c -l pthread -o tb_userspace

设置开机启动,将下列代码放到 /etc/init.d/ipv6tb 中

#! /bin/sh

### BEGIN INIT INFO
# Provides: ipv6
# Required-Start: $local_fs $all
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the ipv6 tunnel
# Description: ipv6 tunnel start-stop-daemon
### END INIT INFO

# /etc/init.d/ipv6tb

touch /var/lock/ipv6tb

case $1 in
start)
echo "Starting ipv6tb"
setsid /root/tb-tun/tb_userspace tb HE的节点IPV4 服务器IPV4 sit > /dev/null 2>&1 &
sleep 3s #ugly, but doesn't seem to work at startup otherwise
ifconfig tb up
ifconfig tb inet6 add HE的Client IPv6 Address
ifconfig tb mtu 1480
/sbin/route -A inet6 add ::/0 dev tb
/sbin/ip -6 route add default dev tb
ip -6 route del default dev venet0
;;
stop)
echo "Stopping ipv6tb"
ifconfig tb down
route -A inet6 del ::/0 dev tb
killall tb_userspace
;;
*)
echo "Usage: /etc/init.d/ipv6tb {start|stop}"
exit 1
;;
esac

exit 0

添加执行权限

chmod +x /etc/init.d/ipv6tb

设置开机自启
CentOS

chkconfig –add ipv6tb
chkconfig ipv6tb on

Ubuntu/debian

update-rc.d ipv6tb defaults

启动服务

/etc/init.d/ipv6tb start

测试IPV6

ping6 google.com

修改Hosts

这里使用一个位于github的开源项目。
这儿直接用现成的 ipv6-hosts
需要注意的是其中有很多其他网站的hosts,按需删除。
当然愿意自己修改也成,看wiki就好。
如果不修改的话。
直接

mv /etc/hosts /etc/hosts.bak
wget "https://raw.githubusercontent.com/lennylxx/ipv6-hosts/master/hosts" -O /etc/hosts

更新:我发现有的时候修改了HOSTS也不能默认使用IPV6连上GOOGLE,这个时候可以用 ipv6.google.com 来解决问题。

参考链接:
https://xulog.com/2017/02/06/hkb_use_ipv6_to_avoid_google_recaptcha.html
https://www.itengli.com/openvz_ipv6/
https://blog.myxnova.com/archives/549
https://blog.foxsar.black/?p=277

发表评论