好久前就想着把DigitalOcean的ipv6用起来,前几天折腾了好久总算成功了。

基本效果:

  • 在自己有ipv6网络的情况下,使用shadowsocks代理,使用迅雷下载时大多数资源都可以达到100Mbps。
  • 在自己只有ipv4网络的情况下,使用shadowsocks代理,下载速度基本上能够达到本地最大带宽,而且可以访问所有ipv6网站。

配置ipv6地址:

创建或修改好后在DigitalOcean此Droplet的控制面板Setting中显示的Public IPv6 Address即为此VPS的IPv6地址

这里还是要强调一下,IPv6地址后的/64一般情况下都不需要。

如果本地有IPv6网络的话,ping自己的IPv6地址应该就能ping通了。

服务器端搭建shadowsocks:

这里使用的是来自teddysun.com的shadowsocks python版一键安装脚本root下执行以下命令:

wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
chmod +x shadowsocks.sh
./shadowsocks.sh 2>&1 | tee shadowsocks.log

下载编译之类的需要一段时间,中间会输入密码之类的,最后会显示:

Congratulations, shadowsocks install completed!
Your Server IP:your_server_ip
Your Server Port:8989
Your Password:your_password
Your Local IP:127.0.0.1
Your Local Port:1080
Your Encryption Method:aes-256-cfb

Welcome to visit:http://teddysun.com/342.html
Enjoy it!

shadowsocks配置文件的路径为:/etc/shadowsocks.json,内容为:

{
    "server":"your_server_ip",
    "server_port":8989,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"yourpassword",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

使用命令:

nano /etc/shadowsocks.json

编辑配置文件,将

"server":"your_server_ip"

修改为

"server":"::"

这样在ipv6环境下也能使用shadowsocks了。

shadowsocks使用命令:

  • 启动:/etc/init.d/shadowsocks start
  • 停止:/etc/init.d/shadowsocks stop
  • 重启:/etc/init.d/shadowsocks restart
  • 状态:/etc/init.d/shadowsocks status

本地使用shadowsocks代理:

shadowsocks客户端下载地址:http://sourceforge.net/projects/shadowsocksgui/files/dist/
shadowsocks介绍页:https://github.com/shadowsocks/shadowsocks-csharp

注意:
虽然文档中说windows 8及以上使用dontnet4.0版本,但如果你的windows 7安装有.NET 4.0 framework或以上,还是推荐下载dotnet4.0版本的,这个版本的全局代理可以正常使用。

客户端编辑服务器参数很容易,和服务器上配置文件一样即可,注意这里可以配置两个服务器代理:

  • ipv4:服务器IP填写VPS的ipv4地址
  • ipv6:服务器IP填写VPS的ipv6地址(地址由[]括起来,注意不要有/64)

先使用ipv4代理:

  1. shadowsocks托盘中右键选择服务器为ipv4的
  2. 选择“启用系统代理”
  3. 选择“PAC”,“从List更新本地PAC”

如果连接正常的话过几秒钟就会提示PAC更新成功

  1. 将“系统代理模式”设置为“PAC模式”

打开浏览器,访问www.google.com或www.youtube.com,正常情况下可以很快打开。

然后将“服务器”更改为ipv6的,同样访问上述网站,若都能很快正常打开,则shadowsocks配置成功。

注意:

  • 如果打开网站出现问题,可以在shadowsocks中选择“显示日志”,查看具体错误信息。
  • 显示诸如远程服务器未相应,考虑ping服务器的ipv6地址,若ping不通则需要排查错误
  • 显示诸如服务器积极拒绝,则考虑时服务器防火墙问题,对于Ubuntu而言,很有可能时UFW的问题,需要使用
ufw disable

关闭UFW。

  • 如果还是不能排除错误,考虑在服务器端重启shadowsocks服务:
/etc/init.d/shadowsocks restart

应用:

翻墙:

在PAC模式下,访问一般网站会直接访问,而访问被墙掉的网站则会走shadowsocks;如果需要全部走shadowsocks的话,只需要将shadowsocks设置为全局模式即可。

迅雷加速:

注意:将shadowsocks设置为全局模式,然后开始迅雷下载,效果并不太好。

正确的方法是在迅雷的“系统设置” “高级设置” “代理设置”中添加代理

代理名称随便填,服务器填写本地地址,如127.0.0.1,端口填写本地端口,如1080,类型选择Socks5;然后点击测试,测试成功点击确定。
需要使用代理的话选中此代理然后“应用代理”,注意设置完后最好还是将“迅雷服务器连接”修改回“直接连接”,其他的使用代理。

这时就可以随便下个大点的文件测试速度了,当然下载资源来自国外最好了,在shadowsocks配置为ipv6时,下载速度一般在10M/s以上。

原理很简单,现在IPv6一般是各大高校免费使用,而IPv6的带宽就是100M,即理论下载速度为12.8M/s;而本地计算机与服务器通过IPv6连接时,一般都是达到最大带宽,服务器再访问IPv4资源时,可以认为带宽是无限大的,所以瓶颈在于教育网IPv6的100M宽带。
使用shadowsocks时,代理和直接访问是可以同时工作的,所以理论最大值并不是100M,而是叠加IPv4带宽,如可能达到110M。

同理,如果shadowsocks使用的是ipv4,则显然下载速度能够达到本地下载速度的最大值。

ipv4访问ipv6网站:

因为服务器端开通了IPv6,所以即使shadowsocks使用的IPv4,即本地计算机通过IPv4连接服务器,仍然是可以访问IPv6网站的;这里可以试试访问http://bt.byr.cn/,应该能很快打开。

这里要说的是如北邮人之类的基于IPv6的BT分享网站,使用IPv4的shadowsocks也是可以正常下载的,只是需要设置下载工具,如UT的代理:
UT代理设置在“设置” “连接”中
类似于迅雷的设置,代理类型选择Socks5,代理即本地IP,如127.0.0.1,端口如1080,注意一定要将“对于主机名查询使用代理”,“对于点对点连接使用代理”打钩!
这样下载北邮人上内容时就能够轻轻松松达到本地最大带宽,再也不用受限制于IPv4、IPv6了。

注意:如果IPv4不能访问IPv6网站,则考虑在服务器端手动设置hosts