给没有ipv6的vps添加ipv6隧道并配置shadowsocks使其可以自由访问ipv4和ipv6资源 翻墙技巧

如题,给没有ipv6的vps添加ipv6隧道并配置shadowsocks使其可以自由访问ipv4和ipv6资源,写这篇文章,是因为给朋友配置的时候遇到的情况,再次小记,当作笔记或者以飨后人吧!

首先声明,这个方法这是用来方便学习研究,以下内容请自行斟酌阅读。

对于IPV4地址频繁出现验证码的可以用ipv6代替,但是由于是桥接的HE.NET的隧道,故,延迟,偶尔断流会不稳,不能游戏,没有UDP转发。但是日常Google搜索,看看YouTube,刷刷twitter,Facebook这些没问题的。大致原理如下:

7.jpg8.jpg

情况如下:

朋友的机器是47.52开头的阿里云HK的200M的小鸡,系统为debian8,他刚告诉我说他的小鸡不能看油管视频了,也不能打开Google了,我测试后,发现是谷歌封了该IP段。如果你的VPS确定不是IP段问题也看不了可以试试把chrome://flags下面的QUIC关闭。如果确定了IP被封就要麻烦点了,(以下都是在本机没有IPV6的情况下)一种是找其它VPS中转,一种是改hosts或自建DNS方法,另一种就是使用IPV6隧道。如果是自带IPV6的机器可以在shadowsocks/R的配置文件文件里把"dns_ipv6" 参数由"false" 改成"true",这样所有域名都会优先使用v6 解析(记得添加v6 的DNS)。如果像阿里云香港一样的没有IPV6的机器我们可以通过HE.NET的tunnelbroker功能来给VPS申请IPV6地址,通过IPV6来链接谷歌视频服务器。 

首先第一步,注册Tunnel broker,并且登录进去

点击前往注册:https://www.tunnelbroker.net/

第二步,在第一步完成的前提下,登陆后,创建通道“Create Regular Tunnel”

IPv4 Endpoint (Your side):后面的选择框里填写你阿里云的公网 IP 地址后,鼠标随便在空白地方点一下,方便系统确认你输入完毕,好检查可用性。如果出现向图中提示的“IP is a potential tunnel endpoint.”说明可以添加ipv6隧道,关于隧道节点的选择,大家可以在自己的VPS上分别ping一下提供的IP,选时延低的,目前亚洲HK的节点已经被用完。请大家根据自己的实际情况来确定,一般来说是选择亚洲(Asia)。

1.jpg

2.jpg

选择完隧道节点后,点击底部的Create Tunnel创建IPV6隧道即可。

第三步,创建IPv6隧道及路由

切换到Example configurations选项卡,下拉菜单选择(你自己的系统型号)比如我朋友的是Debian/Ubuntu,然后将里面的local处应改为你阿里云VPS的内网IP(这个在VPS上通过ifconfig查看),比如:172.x.x.x,然后复制里面的配置参数。

3.jpg

在VPS上的/etc/network/interfaces后面追加上面的配置,vi /etc/network/interfaces

4.jpg

第四步,启用ipv6并且添加IPV6DNS

由于阿里云的网络不支持IPv6,所以官方镜像默认是禁用了相关设置,需要修改一下才能用IPv6。

vi /etc/sysctl.conf将IPv6相关三个参数修改成0启用IPV6。同时在开启BBR的时候可以添加另外两个参数(非必要)。

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr 

然后添加IPV6DNS:vi /etc/resolv.conf 在文件末尾追加如下两行参数

nameserver 2001:4860:4860::8844
nameserver 2001:470:20::2

然后保存。(vim下保存,都会吧,ESC退出,然后冒号,wq回车。)重启。

最后一步测试ipv6是否可用:

可以在命令行直接是命令: ping6 ipv6.google.com

或者是专门的网站:

https://ipv6test.google.com/

http://ipv6-test.com/

https://ip.sb/

5.jpg

接下来说一下关于这种情形下的shadowsocks该如何配置,这里以秋水大大的最新版本脚本为例。他的脚本安装好shadowsocks后,我们可以看到其配置文件中大致如下:

{
"server":["[::0]","0.0.0.0"],
"server_port":8989,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"xxxxxxxxxx",
"timeout":600,
"method":"chacha20-ietf-poly1305"
}

注意看红色的部分,默认配置这样会导致ipv6不可用(至少在使用IPV6隧道这种情况下),我们需要修改一下,如下:


"server":"0.0.0.0",
"server_port":8989,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"xxxxxxxxxx",
"timeout":600,
"method":"chacha20-ietf-poly1305" 
}

即可完美使用。。。飞吧!

PS,最后补一点常识:

如何确定目前连接的方式为 IPv4 还是 IPv6 ?

打开https://www.google.com/search?hl=en&q=what+is+my+ip,如果显示的您的 IP 地址为 IPv6 格式说明您是以 IPv6 的形式接入的,否则为 IPv4 形式。

Hosts 如果需要指定域名通过IPv6 访问,修改Hosts文件即可。 vi /etc/hosts 刷新 DNS 缓存 /etc/init.d/nscd restart

下回见!


admin 发布于  2017-12-15 18:49