这篇文章图就不上了,图太多了影响服务器性能
使用Shadowsocks搭建ipv6 VPN,让ipv4上ipv6,下载速度提升到100M
基本效果
在本地有IPv6网络的情况下,使用IPv6网络访问互联网(对校园网来说,不产生IPv4流量)。
在本地有IPv6网络的情况下,设置迅雷等下载工具使用shadowsocks代理,下载速度达到100Mbps。
在本地只有IPv4网络的情况下,可以访问所有IPv6网站。
在本地只有IPv4网络的情况下,设置迅雷等下载工具使用shadowsocks代理,下载速度达到本地最大带宽。
前提条件
双栈(同时支持IPv4和IPv6)服务器。
若希望本地使用IPv6连上服务器,需确认本地具备IPv6网络。
配置服务器IPv6地址
配置
这里DigitalOcean的VPS为例:
对于新建Droplets:创建时记得勾选ipv6即可。
对于现有Droplets:参照DigitalOcean VPS打开IPv6,及解决IPv6地址Ping不通问题。
创建或修改好后在DigitalOcean此Droplet的控制面板Setting
中显示的Public IPv6 Address
即为此VPS的IPv6地址。这里还是要强调一下,IPv6地址后的/64一般情况下都不需要。
测试
如果本地有IPv6网络的话,ping
自己的IPv6地址应该就能ping
通了。如Windows下ping 2001:4860:0:2001::68
,macOS下ping6 2001:4860:0:2001::68
。
服务器端搭建shadowsocks
搭建shadowsocks服务器可以参考如下“Penguin”或“秋水逸冰”任一即可。
Penguin
参考Ubuntu 16.04下Shadowsocks服务器端安装及优化。
注意修改config.json中的必要参数,注意server
参数需要设定为"::"
才能使用IPv6。
启动shadowsocks:sudo systemctl start shadowsocks-server
;
设置开机启动Shadowsocks:sudo systemctl enable shadowsocks-server
。
秋水逸冰
秋水逸冰提供了一键安装shadowsocks的脚本,相对来说更方便,参考Shadowsocks Python版一键安装脚本。
注意修改config.json中的必要参数,注意server
参数需要设定为"::"
才能使用IPv6。
启动shadowsocks:/etc/init.d/shadowsocks start
。
示例config.json
json
{ "server":"::", "server_port":8388, "local_address": "127.0.0.1", "local_port":1080, "password":"mypassword", "timeout":300, "method":"aes-256-cfb", "fast_open": false }
本地使用shadowsocks客户端
下载客户端
Windows版本下载页:Releases · shadowsocks/shadowsocks-windows。
macOS版本下载页:Releases · shadowsocks/ShadowsocksX-NG。
客户端配置
客户端点选“添加服务器”,填写“地址”、“端口”、“加密方法”和“密码”即可。其中“端口”、“加密方法”和“密码”与前面设置的服务器配置相同。
因为服务器支持IPv4和IPv6双栈,所以客户端实际可以配置两个服务器参数,其仅有“地址”不相同。对于IPv4,填写服务器的IPv4地址;对于IPv6,填写服务器的IPv6地址(不需要[
和]
,末尾不需要/64
)。
测试
为了保险起见,客户端选择IPv4服务器。
Windows:选择“启用系统代理”;选择“PAC”,“从List更新本地PAC”。如果连接正常的话过几秒钟就会提示PAC更新成功。这时将“系统代理模式”设置为“PAC模式”。
macOS:选择“从GFW list更新PAC”。如果连接正常的话过几秒钟就会提示PAC更新成功。这时勾选“PAC自动模式”。
打开浏览器,访问www.google.com或www.youtube.com,正常情况下可以很快打开。
然后设置客户端中服务器为IPv6地址的,同样访问上述网站,若都能很快正常打开,则shadowsocks配置成功。
应用
浏览器翻墙
在PAC模式下,访问一般网站会直接访问,而访问被墙掉的网站则会走shadowsocks;如果需要全部走shadowsocks的话,只需要将shadowsocks客户端设置为全局模式即可。
如果你希望让浏览器(而非客户端)控制上网模式,请参考使用SwitchyOmega(Chrome)。
IPv4访问IPv6网站
因为服务器端开通了IPv6,所以即使shadowsocks使用的IPv4,即本地计算机通过IPv4连接服务器,仍然是可以访问IPv6网站的;这里可以试试访问http://bt.byr.cn/,应该能很快打开。
若不能打开,可尝试将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,则显然下载速度能够达到本地下载速度的最大值。
下载IPv6资源
想要下载北邮人的BT资源?这个也没问题。
设置下载工具,如UT的代理:“设置”->“连接”,代理类型选择Socks5,代理IP为127.0.0.1
,端口如1080
,注意一定要将“对于主机名查询使用代理”,“对于点对点连接使用代理”打钩!
这样下载北邮人上内容时就能够轻轻松松达到本地最大带宽,再也不用受限制于IPv4、IPv6了。
FAQ
PAC更新失败
出现这个问题一般是客户端当前设置的服务器连接不上,尝试使用IPv4地址的服务器,检查本地能否ping通服务器,检查端口号、加密方式和密码是否正确。
被墙的网站仍无法打开
在shadowsocks客户端中选择“显示日志”,查看具体错误信息:
- 显示诸如远程服务器未相应,考虑ping服务地址,若ping不通则需要排查错误。
- 显示诸如服务器积极拒绝,则考虑时服务器防火墙问题。对于Ubuntu而言,很有可能时UFW的问题,需要使用
ufw disable
关闭UFW。
IPv6无法访问六维空间
六维空间似乎对境外地址作了屏蔽,可以试试访问bt.byr.cn
。
IPv4网站可以访问,但IPv6网站不能访问
如果是六维空间不能访问,参考问题“IPv6无法访问六维空间”
首先需要确定本地使用的shadowsocks在访问网站,访问ip138.com查看显示的IP地址是否是服务器的地址,若为本地IP地址,说明当前的IPv4访问直接走的本地网络,当然也就不能访问IPv6网站了。
如果确实是使用的shadowsocks访问,则尝试ssh连上服务器,ping IPv6网站,判断服务器是否能够访问IPv6网络。
迅雷下载设置IPv6代理,下载速度慢
若下载的是P2P资源,则下载速度慢是正常情况(因P2P依赖上传者实时上传)。
尝试下载来自服务器的资源,如ted.com上的视频,一般情况下可以跑到12M/s。
迅雷下载提示资源出错
将迅雷代理设置中的“迅雷服务器连接”设置为“直接连接”即可。
本地不能通过IPv6连上服务器
首先确定本地有可用的IPv6网络,即本地有如2001开头的IPv6地址,浏览器可以访问[2001:da8:215:4078:250:56ff:fe97:654d]
(包含左右中括号)。
再确定服务器端配置文件中server
字段值为"::"
。
本地只能通过IPv6连上服务器(IPv4无法连接服务器)
这种问题一般出现在shadowsocks-libev中,这时需要将配置文件中的server
字段配置为["::0","0.0.0.0"]
。
使用shadowsocks后打开网站慢
若本地有IPv4网络,则考虑使用PAC模式,即没被墙的网站直接走本地IPv4网络,被墙的走shadowsocks。
或者尝试在服务器端优化网络连接,参考Ubuntu 16.04下Shadowsocks服务器端安装及优化。
有些IPv6网站可以连上,有些连不上
一种可能的原因是某些IPv6网站对IP作了限制,如拒绝境外IP访问。
另一种原因是某些IPv6网站实际是IPv4/IPv6双栈的,即IPv4也可访问,例如ipv6.baidu.com。
uTorrent设置代理后红种
在uTorrent的代理设置中将“对于主机名查询使用代理”,“对于点对点连接使用代理”打钩。
4G蜂窝网络代理打不开网站
蜂窝网络不支持IPv6,所以只能设置连接服务器的IPv4地址。
手机可以使用IPv6连上服务器吗
手机能否通过IPv6连上服务器取决于手机到服务器的整个连接过程是否全部支持IPv6。最主要的地方在一手机到路由器之间,和路由器到服务器之间。
首先路由器本身能够获得IPv6地址,简单来说,插在路由器上的网线直接查到电脑上,电脑要能够直接获得IPv6地址。
其次路由器要支持IPv6,即手机通过WiFi连上路由器后,手机能够自动获得一个如2001开头的IPv6地址。
在家里/使用蜂窝网络可以连上shadowsocks,但在公司/学校就用不了
这个一般是公司/学校封锁了端口(非常用端口或大数字端口),可以尝试将服务器shadowsocks端口修改为如80、443等常用端口号。
Windows下可以用,但到macOS下就不行了
请确认使用的客户端是ShadowsocksX-NG而非ShadowsocksX。
WiFi支持IPv6,但手机无法通过IPv6连上服务器
如果是Android设备的话,受限于设备制造商和Android版本,并不是所有的Android设备都支持IPv6。可以尝试直接访问某些IPv6网站,测试手机是否支持IPv6。
电脑有IPv6网络,可以通过WiFi分享给手机用吗?
电脑通过自身的无线网卡,或USB网卡发射WiFi信号,绝大部分情况都是不支持IPv6的,即手机连上后只有IPv4地址,所以手机并不能直接通过IPv6连上服务器。
本文作者为Mr.Bai,转载请注明。
大佬,请问一下,UT设置socks5代理以后,提示proxy connect error:离线(超时)是什么原因啊...浏览器访问PT正常
想问一下校园网能直接连上ipv6 ,怎么利用ss免流呢(v6不用钱,v4要)?
@nellIPV6就看校园网支不支持咯