shadowsocks-libev 是一个 shadowsocks 协议的轻量级实现,是 shadowsocks-android, shadowsocks-ios 以及 shadowsocks-openwrt 的上游项目。其具有以下特点:
shadowsocks-libev 包括服务端和客户端两部分,一共三个模块。
官网地址:
https://github.com/shadowsocks/shadowsocks-libev
要利用 shadowsocks-libev翻墙,首先要有一台国外的服务器安装并运行shadowsocks 服务端。如果还没有服务器,可以到 digitalocean 购买一台SSD虚拟服务器VPS。
#Add GPG public key: wget -O- http://shadowsocks.org/debian/1D27208A.gpg | sudo apt-key add -
# Ubuntu 14.04 or above sudo add-apt-repository "deb http://shadowsocks.org/ubuntu trusty main"
# Debian Wheezy, Ubuntu 12.04 or any distribution with libssl > 1.0.1 sudo add-apt-repository "deb http://shadowsocks.org/debian wheezy main"
sudo apt-get update sudo apt-get install shadowsocks-libev上述命令的效果:
sudo vi /etc/shadowsocks-libev/config.json改成类似如下:
{ "server":"1.0.9.8", "server_port":1098, "password":"killgfw", "method":"aes-256-cfb" }必须把server 1.0.9.8 改成你自己的,或者改成 0.0.0.0 表示监听本机,其他可以不改。如果访问变慢,时断时续,这可能是受到干扰了,可以尝试改变加密方式,如改成bf-cfb。
sudo service shadowsocks-libev start sudo service shadowsocks-libev stop
#设置随机启动 Shadowsocks-libev. 新版已经不需要手动设置随机启动 #sudo update-rc.d shadowsocks-libev defaults 99
#取消shadowsocks-libev随机启动 #sudo update-rc.d -f shadowsocks-libev remove ps ax | grep ss-server如果启动正常,返回结果类似如下:
/usr/bin/ss-server -c /etc/shadowsocks-libev/config.json -a root -u -f /var/run/shadowsocks-libev/shadowsocks-libev.pid注意其中有-u。如果shadowsocks客户端启用了udp relay, 而服务端启动时不带-u参数,翻墙自然就失败了。
sudo service shadowsocks-libev startshadowsocks-libev for OpenWrt要和OpenWrt一致,否则可能无法安装,或者安装了不能启动。
下面地址可以下载:
http://sourceforge.net/projects/openwrt-dist/files/shadowsocks-libev/
请自行测试是否适用于你的OpenWrt。
如果自行编译翻墙固件,最好按照教程自己编译 shadowsocks-libev for OpenWrt。
根据依赖的 SSL 库可分为 OpenSSL 和 PolarSSL 两种版本OpenSSL 版依赖 libopenssl, 支持加密方式多, 体积大 PolarSSL 版依赖 libpolarssl, 体积小, 加密方式少。
如果内存大就选OpenSSL版,反之则选PolarSSL版。
~/Downloads$ scp shadowsocks-libev-polarssl_*_ar71xx.ipk root@192.168.1.1:/tmp/ ~/Downloads$ ssh root@192.168.1.1 root@OpenWrt:~# cd /tmp root@OpenWrt:~# opkg install shadowsocks-libev-polarssl_1.*.*_ar71xx.ipkroot@OpenWrt:~# vi /etc/shadowsocks.json改成类似如下:
{ "server":"1.0.9.8", "server_port":1098, "local_port":7654, "password":"killgfw", "method": "aes-256-cfb" }注意,server IP必须修改你的实际IP。其他可以保持默认。
启动shadowsocks 客户端:
root@OpenWrt:~# ss-local -c /etc/shadowsocks.json
Ubuntu浏览器代理上网设置,以FireFox配合AutoProxy为例,增加Proxy Server, Proxy Host填192.168.1.1,Port是7654, 勾选Sock5.如下图:

Ubuntu设置AutoProxy的默认代理是shadowsocks,就可以打开被墙的网站如YouTube.com
以前我在每台电脑上都运行一个shadowsocks客户端,每台电脑都要像上面这样配置浏览器代理上网翻墙。
现在路由器里安装了shadowsocks,所有有线和无线上网设备都不用分别安装shadowsocks了,非常方便了。但是还是太复杂,如果家里有十台上网设备,所有要连国外网站的软件都可能要配置代理访问,有些软件还根本没有设置代理的接口。有没有更简单的方法呢?
encrypt and decrypt 20MB data:
aes-128-cfb 0.368462085724s aes-128-ofb 0.400309085846s aes-192-cfb 0.452577829361s aes-192-ofb 0.381041049957s aes-256-cfb 0.418514966965s aes-256-ofb 0.405379056931s cast5-cfb 0.859935045242s cast5-ofb 0.911785125732s chacha20 0.429271936417s rc4 0.154517173767s rc4-md5 0.169504165649s salsa20 0.44139790535sclowwindy:
因为 chacha20 从 x86 上的性能来看,对速度的影响太小,提高还太有限,不如换个思路,因为通信包到了终端以后,走的都是电路,这里其实涉及到一个供电体系的问题,更换加密不如换一个电网,同一个 VPS,同一个路由器,但是,改用核电给路由器供电时,比火电丢包率会降低一个数量级,大大提高 TCP 吞吐率,经测试这是目前速度最快的供电方式,甚至优于水电,同理选 VPS 机房也要看供电,有些号称用了绿色能源,其实效果不好,这里面其实还涉及到选用 UPS 的型号,就不细说了 另外说到硬件加速,连接路由器的网线也很重要,建议用六类屏蔽线,不过一定不能买那种超薄扁平的网线,会对带宽起到整形作用,突发上不去,看 4K 会受影响,数据可能不准,不过大概也体现了差异 今天没有时间再次测试了,就发这么多吧。你们有一个好,出个新功能,写教程比别人都快,但试来试去的结论,太简单,有时太朴素了,我感觉你们还需要学习,提高自己的知识水平,将来如果写的教程有偏差,你们要负责
rlei:
讨论shadowsocks不同加密方式的安全性没有意义。shadowsocks是被设计来混淆数据,增加某Wall检查出流量特征所需的计算量,提高实时检测的成本,而不是加密。ss的作者多次强调过这一点
注册DO并绑定支付方式后,登录管理后台,点击右上角的 Create Droplet:




在20秒内,VPS创建完毕,并自动分配了IP,点击VPS名字进入管理VPS管理界面:
注:如果已经收到root密码,请跳到一下步
点击 Reset Root Password 重置密码:
重置密码完成后,新的密码会发送到你的邮箱,下面我们就用这个密码登录并直接在网页上管理VPS
DO有个极为强大的功能,可以可以直接在管理后台Console Access 运行Linux命令管理VPS,相当于一个在线版的SSH:
点击 Console Access 开启命令行窗口,如果打开失败就按F5刷新页面重试直到打开。
点击打开的命令行窗口以获得输入焦点。
开启DO Console Access后,输入root并回车,然后重新设置密码。
Ubuntu 15.10 ubuntu-shadowsocks tty1 ubuntu-shadowsocks login: root Passwd: 输入root密码 You are required to change your password immediately (root enforced) Changing password for root. (Current) UNIX password: 输入root密码 Enter new UNIX password: 输入新的root密码 Retype UNIX password: 再次输入新的root密码密码更新完成后更新一下系统:
root@ubuntu-shadowsocks:~# apt-get update root@ubuntu-shadowsocks:~# apt-get dist-upgrade可能会问你要不要更新一下grub,直接回车就行了。(我选择的是升级到 install the package maintainer's version)
2016-01-19发现,shadowsocks.org网页无法打开,这给 apt-get install 方式安装shadowsocks-libev带来不便,不过我们可以自己从源码编译,很简单,而且随时可以编译到最新的版本。
Console Access界面是无法粘贴命令的,把下面命令逐行粘贴到浏览器地址栏,抄着输入也是很快的,输入第一行命令并回车后输入 y 安装所有相关包。
root@ubuntu-shadowsocks:~# apt-get install build-essential autoconf libtool libssl-dev gawk debhelper dh-systemd init-system-helpers pkg-config git root@ubuntu-shadowsocks:~# git clone https://github.com/shadowsocks/shadowsocks-libev.git root@ubuntu-shadowsocks:~# cd shadowsocks-libev root@ubuntu-shadowsocks:~# dpkg-buildpackage -us -uc -i root@ubuntu-shadowsocks:~# cd .. root@ubuntu-shadowsocks:~# sudo dpkg -i shadowsocks-libev*.deb root@ubuntu-shadowsocks:~# ls /usr/bin/ss-* root@ubuntu-shadowsocks:~# ss-local ss-manager ss-redir ss-server ss-tunnel至此,我们已经开通了DO VPS,并且在网页界面就安装完成了 shadowsocks-libev,下面是修改设置并重启shadowsocks-libev
root@ubuntu-shadowsocks:~# vi /etc/shadowsocks-libev/config.json root@ubuntu-shadowsocks:~# service shadowsocks-libev restart详细的设置教程在 翻墙软件Shadowsocks-libev服务端设置
再配置好客户端,如果没有错误,就可以成功翻墙了。所有以上过程2016-01-19亲测通过。
0.0.0.0 并测试通过创建config配置文件, Ubuntu下是 ~/.ssh/config,增加如下内容:
Host router HostName 192.168.1.1 User root Port 22 IdentityFile /path/to/your/rsaWindows下安装 git for Windows,选择使用OpenSSH,编辑 C:\Program Files\Git\etc\ssh\ssh_config
然后就可以 ssh router 登录路由器了
reset.sh:
#!/bin/bash # Author: https://github.com/softwaredownload/openwrt-fanqiang # Date: 2016-01-20 ssh router <<'ENDSSH' sed -ri "s/([0-9]{1,3}\.){3}[0-9]{1,3} /1.0.9.8 /" /usr/bin/shadowsocks-firewall sed -ri "s/([0-9]{1,3}\.){3}[0-9]{1,3}/1.0.9.8/" /etc/shadowsocks.json /etc/init.d/shadowsocks restart ENDSSH把reset.sh中的 1.0.9.8 改成shadowsocks服务端的server IP,然后运行 reset.sh就可以了。
想要测试一下日本,英国,新加坡或美国的IP,so easy,2分钟就行了。
不同OpenWrt版本下编译的shadowsocks-libev ipk一般是不能通用的。比如现在用的是trunk版的OpenWrt,如果使用OpenWrt Chaos Calmer 15.05 下编译的shadowsocks-libev,可能安装后根本不能启动。
前面我曾编译出翻墙固件,其中shadowsocks-libev是别人编译,从sourceforge上下载的,刷上固件后,shadowsocks总是没有自动启动,运行/usr/bin/ss-redir,报告没有找到这个文件,其实文件是在的,只是不兼容。所以,最好还是自行编译shadowsocks-libev。
以下 不要使用root用户来操作
下面是在Ubuntu 64bit下编译shadowsocks-libev for OpenWrt ipk安装包的步骤:
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettextcd ~/Downloads git clone git://git.openwrt.org/openwrt.gitcd ~/Downloads/openwrt pushd package git clone https://github.com/shadowsocks/shadowsocks-libev.git popd或者:
cd ~/Downloads/openwrt/package git clone https://github.com/shadowsocks/shadowsocks-libev.git
编译 DIR505固件2015-12版时用的源码版本是:Date: Tue Dec 22 21:42:40 2015cd ~/Downloads/openwrt ./scripts/feeds update -a ./scripts/feeds install -a # run make menuconfig and set target; # Choose your own Target System -> SubTarget -> Target Profile make menuconfig make defconfigmake prereq && make tools/install && make toolchain/install等待时间较长,可以先和大妈一起去跳个广场舞,制造更多噪音恶心一下别人:)
# 运行命令 make menuconfig有三个选项:
输入命令make menuconfig进入配置程序后:
图 make menuconfig
图 选择shadowsocks-libev-polarssl
make V=99 package/shadowsocks-libev/openwrt/compile cd ~/Downloads/openwrt/bin/ar71xx/packages/base/ tree ├── libc_1.1.11-1_ar71xx.ipk ├── libgcc_5.2.0-1_ar71xx.ipk ├── libopenssl_1.0.2e-1_ar71xx.ipk ├── libpolarssl_1.3.15-1_ar71xx.ipk ├── libpthread_1.1.11-1_ar71xx.ipk ├── shadowsocks-libev_2.4.3_ar71xx.ipk ├── shadowsocks-libev-polarssl_2.4.3_ar71xx.ipk └── zlib_1.2.8-1_ar71xx.ipk # 如果用来编译翻墙固件,把shadowsocks-libev复制到Image Builder目录下: # for DIR505A1: cp shadowsocks* ~/Downloads/OpenWrt-ImageBuilder-ar71xx-generic.Linux-x86_64/packages/base # for WNDR4300 cp shadowsocks* ~/Downloads/OpenWrt-ImageBuilder-ar71xx-nand.Linux-x86_64/packages/base把文件scp复制到OpenWrt路由器/tmp,就可以 opkg install shadowsocks-libev_2.4.3_ar71xx.ipk 安装了。