之前大家翻墙可能都会用到免费的goagent代理,但是他速度慢,链接也不稳定,看油管更是无望,更好的解决方案是shadowsocks。

shadowsocks是一个著名的轻量级socket代理,基于python编写。

如果你有国外的VPS,那么使用shadowsocks搭建一个翻{防屏蔽}墙服务器是一件很轻松的事情!

先看看shadowsocks覆盖的客户端覆盖了多少系统,连OpenWRT都支持!

shadowsocks客户端

老高之前买的$4.99一年的VPS,128MB,用起来妥妥的!现在已经升级至$9.99,512MB内存,运行速度更快,翻{防屏蔽}墙速度更是没话说,如果你感兴趣,可以看看VPS购买攻略

看完本文,你就能够轻松打造独享的翻{防屏蔽}墙环境!甚至能够将shadowsocks安装到你的路由器中,子网设备自动翻墙!再也不需要在网上购买shadowsocks的账号了,也不需要在忍受速度巨慢的免费shadowsocks账号了。

如果你的VPS是搬瓦工,那么恭喜你!你可以直接在后台一键安装shadowsocks,具体如何操作请参考使用搬瓦工(bandwagonhost)后台管理VPS&安全设置中如何一键安装shadowsocks一节,配置完毕后ss就会运行在后台,重启后也会自动运行。

友情提示:有些打包好的ss程序很难保证是否会记录你的服务器信息,所以一定要经常更新服务器端的密码或端口!或者,自己编译一个。。。。。

安装python版本的shadowsocks

假设已经获取了管理员权限,如果没有,有些命令需要用sudo提权。

ubuntu

apt-get update
apt-get install -y python-pip
pip install shadowsocks

centos

curl --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python
pip install shadowsocks

此时系统会多出来两个程序:

/usr/bin/ssserver
/usr/bin/sslocal

# 运行帮助命令
ssserver -h
usage: ssserver [OPTION]...
A fast tunnel proxy that helps you bypass firewalls.

You can supply configurations via either config file or command line arguments.

Proxy options:
  -c CONFIG              path to config file
  -s SERVER_ADDR         server address, default: 0.0.0.0
  -p SERVER_PORT         server port, default: 8388
  -k PASSWORD            password
  -m METHOD              encryption method, default: aes-256-cfb
  -t TIMEOUT             timeout in seconds, default: 300
  --fast-open            use TCP_FASTOPEN, requires Linux 3.7+
  --workers WORKERS      number of workers, available on Unix/Linux
  --forbidden-ip IPLIST  comma seperated IP list forbidden to connect
  --manager-address ADDR optional server manager UDP address, see wiki

General options:
  -h, --help             show this help message and exit
  -d start/stop/restart  daemon mode
  --pid-file PID_FILE    pid file for daemon mode
  --log-file LOG_FILE    log file for daemon mode
  --user USER            username to run as
  -v, -vv                verbose mode
  -q, -qq                quiet mode, only show warnings/errors
  --version              show version information

Online help: 

开机启动

执行vim /etc/rc.d/rc.local,添加以下内容,(老高这里开了4个端口),你可以只使用一条记录。最后别忘了执行chmod +x /etc/rc.d/rc.local以赋予其执行权限!

简单的解释一下各个参数的作用

-p ss服务器的端口号
-k 密码
-m 加密方式,一般用rc4-md5,table和rc4不要用
--workers 子进程个数
--pid-file 记录pid的文件
--log-file 记录日志
--user 执行用户的权限,一般使用nobody
-v 表示输出详细信息
-d 使用守护进程模式运行

老高的开机启动脚本:

ssserver -p 443 -k passwd -m rc4-md5 --workers 10 --pid-file /tmp/ss.pid --log-file /tmp/ss.log --user nobody -v -d start

ssserver -p 3389 -k passwd -m rc4-md5 --workers 10 --pid-file /tmp/ss2.pid --log-file /tmp/ss2.log --user nobody -v -d start

ssserver -p 10010 -k passwd -m rc4-md5 --workers 10 --pid-file /tmp/ss3.pid --log-file /tmp/ss3.log --user nobody -v -d start

ssserver -p 22222 -k passwd -m rc4-md5 --workers 10 --pid-file /tmp/ss4.pid --log-file /tmp/ss4.log --user nobody -v -d start

这里老高推荐使用-c选项指定config.json的方式配置ss(具体方式下面有提到),配置文件格式基本兼容。GO版本有多端口特性,需要多端口服务的可以自己编译试试。

编译shadowsocks-libev

与介绍原版(python版)的shadowbox服务端,老高这次要介绍的是shadowsocks-libev!

项目地址:shadowsocks/shadowsocks-libev

项目作者:@madeye

以下说明转自:shadowsocks-libev 1.2 发布

shadowsocks-libev 是一个 shadowsocks 协议的轻量级实现,是 shadowsocks-android, shadowsocks-ios 以及 shadowsocks-openwrt 的上游项目。其具有以下特点:

  • 体积小巧,静态编译并打包后只有 100 KB。
  • 高并发,基于 libev 实现的异步 I/O,以及基于线程池的异步 DNS,同时连接数可上万。
  • 低资源占用,几乎不占用 CPU 资源,服务器端内存占用一般在 3MB 左右。
  • 跨平台,适用于所有常见硬件平台,已测试通过的包括 x86,ARM 和 MIPS。也适用于大部分 POSIX 的操作系统或平台,包括 Linux,OS X 和 gwin 等。
  • 协议及配置兼容,完全兼容 shadowsocks 协议,且兼容标准实现中的 JSON 风格配置文件,可与任意实现的 shadowsocks 端或服务端搭配使用。

shadowsocks-libev 包括服务端和客户端两部分,一共三个模块。

  • ss-server:服务器端,部署在远程服务器,提供 shadowsocks 服务。
  • ss-local:客户端,提供本地 socks5 协议代理。
  • ss-redir:客户端,提供本地透明代理,需要与 NAT 配合使用,具体使用方法参见文档。

原版shadowsocks

请参考 安装shadowsocks-python并启用chacha20加密


准备好的shadowsocks怎么用呢?请看下文。

服务端

你的系统最好是redhat,centos,ubuntu或者debian

安装必要组建

centos执行 yum install build-essential autoconf libtool openssl-devel gcc -y debian执行 apt-get install build-essential autoconf libtool libssl-dev gcc -y

安装git

centos执行 yum install git -y debian执行 apt-get install git -y 装完了执行 git --version检查是否安装成功。

shadowsocks 下载及编译

git clone https://github.com/madeye/shadowsocks-libev.git
cd shadowsocks-libev
./configure
make && make install

程序会被安装至/usr/local/bin/下,该路径已存在于系统变量中,所以可以直接使用程序名运行。

/usr/local/bin/ss-local
/usr/local/bin/ss-tunnel
/usr/local/bin/ss-server
/usr/local/bin/ss-redir

如何使用

在使用shadowsocks的时候,你可以随时输入命令ss-server -h查看使用帮助,老高在此将最新的使用帮助打印出来

usage:

    ss-[local|redir|server|tunnel]

          -s            host name or ip address of your remote server
          -p            port number of your remote server
          -l             port number of your local server
          -k               password of your remote server


          [-m ]      encrypt method: table, rc4, rc4-md5
                                     aes-128-cfb, aes-192-cfb, aes-256-cfb,
                                     bf-cfb, camellia-128-cfb, camellia-192-cfb,
                                     camellia-256-cfb, cast5-cfb, des-cfb, idea-cfb,
                                     rc2-cfb, seed-cfb, salsa20 and chacha20
          [-f ]            file to store the pid
          [-t ]             socket timeout in seconds
          [-c ]         config file in json


          [-i ]           network interface to bind,
                                     not available in redir mode
          [-b ]       local address to bind,
                                     not available in server mode
          [-u]                       enable udprelay mode
                                     not available in redir mode
          [-L :]         setup a local port forwarding tunnel,
                                     only available in tunnel mode
          [-v]                       verbose mode


          [--fast-open]              enable TCP fast open,
                                     only available on Linux kernel > 3.7.0
          [--acl ]         config file of ACL (Access Control List)

notes:

    ss-redir provides a transparent proxy function and only works on the 
    Linux platform with iptables.

运行服务端

ps.执行命令时,请去掉方括号。加密方式可选择:

encrypt method: table, rc4, rc4-md5,aes-128-cfb, aes-192-cfb, aes-256-cfb,bf-cfb, camellia-128-cfb, camellia-192-cfb,camellia-256-cfb, cast5-cfb, des-cfb, idea-cfb,rc2-cfb, seed-cfb, salsa20 and chacha20

选择加密方式的时候请注意客户端是否支持,同时官方不推荐rc4,des-cfb,table,salsa20-ctr这四种加密方式。

命令行运行

前台运行服务端:

ss-server -s [yourip] -p [Server Port] -k [password] -m [encryption methods]

后台运行服务端:

nohup ss-server -s [Server IP] -p [Server Port] -k [Password] -m [encryption methods] &
使用配置文件运行

注意,config.json需要自己创建,并且需要绝对路径

使用-c 指定配置文件, -f 创建守护进程:

vim config.json

将下面的配置写入config.json

使用的时候请删除注释文字,否则可能会报错!!

# 注释版配置
{
    "server":"servier_ip",   # 服务器IP
    "server_port":65432,     # ss服务器所使用的端口号,建议改到30000-60000
    "password":"password",   # ss服务器密码,轻易不要分享
    "timeout":60,            # 超时时间,建议设置为60
    "method":"rc4-md5"         # 加密方式,需要和客户端配合设置
}

# 复制粘贴版

{
    "server":"servier_ip",
    "server_port":65432,
    "password":"password",
    "timeout":60,
    "method":"rc4-md5"
}

然后执行 ss-server -c config.json -f /tmp/ss.pid 即可!

写入开机脚本

echo "/usr/local/bin/ss-server -c /home/***/config.json -f /tmp/ss-server.pid" >> /etc/rc.local

为了安全起见(非必需),我们使用非root用户运行ss,如何实现呢?

# 如果没有非root用户
# 我们现在就新建一个普通用户
useradd laogao
# 为laogao创建密码
passwd laogao
> 输入两次密码
# 切换用户至laogao
su - laogao
# 在主目录创建第一个配置文件,配置格式请参考`使用配置文件运行`一节
vim ~/config1.json

# 保存完毕即可立即运行
/usr/local/bin/ss-server -c ~/config1.json -f /tmp/ss1.pid

# 设置开启自启动
# 我们先切换至root用户
su - root

# 接着在启动脚本里加入启动命令
# 指定ss以用户laogao的权限运行
# 执行下面的命令时一定注意文件路径是否正确
echo "su - laogao -c \"/usr/local/bin/ss-server -c /home/laogao/config1.json -f /tmp/ss1.pid\"" >> /etc/rc.local

更高级的运行方式

请参考 使用supervisor托管shadowsocks

多用户(实例)运行

可能大家都注意到了,在上一节我们提到了config1.json是第一个配置文件,这是为什么呢?

没有错,我们还可以创建配置文件2----config2.json,并以同样的方式运行。

这样,我们的一个服务器就可以对外提供两种,端口不同、密码不同、加密方式也可能不同的shadowsocks服务,然后共享给不同的基友,是不是很方便啊。

需要注意的是,多个配置文件一定要注意的是,配置的端口和pid文件一定是不同的!而密码及加密方式,甚至服务器IP都没有限制。

有些版本的ss提供了更方便的配置方式,但是老高没试过,所以在此就不深究。

例子如下(注意端口不能相同)

config1.json

{
    "server":"1.1.1.1"
    "server_port":11111,
    "password":"test1",
    "timeout":100,
    "method":"aes-256-cfb"
}

config2.json

{
    "server":"2.2.2.2
    "server_port":22222
    "password":"test2",
    "timeout":100,
    "method":"rc4-md5"
}


# 多实例运行例子:
/usr/local/bin/ss-server -c ~/config1.json -f /tmp/ss1.pid
/usr/local/bin/ss-server -c ~/config2.json -f /tmp/ss2.pid

# 查看进程
ps -ef|grep ss-server


xxx      1344     1  0 20:12 ?        00:00:00 ss-server -c /home/xxx/config1.json -f /tmp/1.pid
xxx      1491     1  0 20:24 ?        00:00:00 ss-server -c /home/xxx/config2.json -f /tmp/2.pid

使用supervisor托管shadowsocks

请参考使用supervisor托管shadowsocks,让shadowsocks运行的更稳定!

至此,服务器端可设置已完成!

客户端

当我们搭建完成了shadowsocks服务端,其实只完成了FQ的一半工作,想要真正与世界联通,还需要一个客户端与服务端连接。

ss的客户端也是由clowwindy大牛提供,他的另一个作品ChinaDNS也很NB,大家可以关注一下!

客户端下载

shadowsocks的客户端、服务端还有chrome插件Proxy-SwitchyOmega_v2.3.13的下载,请移步 shadowsocks相关资源下载

下面老高以ShadowsocksX-2.6为例,讲讲如何配置

首先安装完毕后找到应用程序并运行

首先安装完毕后找到应用程序并运行

运行后程序会最小化在系统右上角(Windows在右下角),打开菜单,点击服务器-->>服务器设定

服务器设定

配置方法

config

其中1.1.1.1即服务器的IP地址 端口号对应服务器设定的server_port 加密方式和密码就更不必说了

添加完毕,点击确定后,客户端和服务器马上就可以见面了。

最后一步

打开Shadowsocks,教程完毕!

打开ss

ps.想要在快速的在影梭配置服务器,可以通过在PC端点击生成二维码按钮,然后使用影梭扫描即可!

老高望着着简单而粗狂的画面,许久说不出话来。

hello google

是不是激动的要哭了?

今天先写到这儿,十分感谢广大基友的捧场!老高在此十分感谢!

有兴趣的TX可以在此留下你的邮箱,用AT替换调你的@,老高有一个闲置的VPS可以提供测试ss帐号,也是搬瓦工的。

密码大概想起来再改一次,流量不多,看油兔就算了吧。

Proxy SwitchyOmega下载地址

浏览器

shadowsocks的浏览器支持主要是通过扩展设置代理。目前chrome、firefox、Safari、Opera浏览器都完美支持。

浏览器只要配置一下,使用客户端提供的端口就能够工作了。

值得一提的gfwlist,有了他你无需自己写规则了,把它加入在线规则里,更新一下即可!

https://autoproxy-gfwlist.googlecode.com/svn/trunk/g{防}f{he}w{xie}list.txt

firefox -> Foxyproxy chrome -> switchsharp

2014年8月20日更新:

增加一个客户端

2015年1月7日更新:

加密说明

Proxy SwitchyOmega更新

2015年01月08日更新:

文章重构

2015年3月12日更新:

使用supervisor托管shadowsocks,让shadowsocks运行的更稳定!


猜你喜欢:

小米路由器mini折腾之自动翻墙篇

30元一年,打造自己的翻墙VPS

VPS安全之SSH设置

标签: fq, Linux, shadowsocks, free

已有 383 条评论

  1. 20 20

    想知道ss限制流量或使用時間是怎麼做到的

  2. xabel xabel

    嗨你好 非常感谢你的教程 已经购买bandwagon 19.9美元年费套餐,用上ss一键式安装,畅游互联网。

    可是刚用了两天(单人帐号,手机电脑2部设备),长时间使用谷歌服务外未有做太多事情,竟然发现用不了了!我ping了我的server IP,全国访问都超时!难道我单人使用,且只上下谷歌也会被查到导致封虚拟IP吗??(第一个问题)

    然后,我就开始各种折腾搜索,主要是在搬瓦工后台界面将IP地址换到了Arizona,用ping工具发现可通!于是卸载了shadowsocks服务,重新安装之,可是呈现的server IP并没有任何变化!反复尝试几次后不知怎的,虚拟IP在页面端变了,赶快尝试,可以访问了!!超级开心? 用上之,一切OK。

    所以我的第二个问题是,这个IP adress(Arizona)和 Server IP(Shadowsocks)有何不同。第三个问题是,下次再碰到这种问题,如何正确轻易地更换server IP,保证上网体验。

    最后说一句,本该全球互联的国际互联网被某大大搞成拥有国家主权,各种限制!为了国家安全和反恐我不反对(比如IS利用yourtube和facebook做propoganda),可是把一切会有user generated的网站都屏蔽,打造局域网,让正常使用谷歌facebook,渴望与全球连线的人都驱赶出去,让全国的android手机用户为BAT为首的不良APP所毒害,真心是令人无言以对。

    再次感谢!么么哒!!!

    1. 1:不会,可能是线路有问题
      2:两个IP相同

  3. Tim Tim

    这玩意跟open vpn有啥区别啊?

  4. lyu lyu

    你好。我现在在bandwagon的control panel上安装了shadowsocks,但是本地还是连接不上。
    本地用的是ubuntu,网络设置里点了127.0.0.1:1080的全局代理也不行,client端用的ss-qt5。

    1. 代理类型是socks5

      1. lyu lyu

        这个需要在哪里设置呢,是系统设置还是浏览器设置?

        1. ss使用的时socks5的代理,在ubuntu你需要把它转成http代理

          1. 如果你本地的安装好了,可以先用chrome加插件swichy omega

          2. lyu lyu

            哦哦,那我接下来该怎么做,这方面实在不懂

  5. 黄鑫 黄鑫

    config.json如何创建?这一步卡住了,求解,谢谢

    1. 用vi命令创建文件,要是不会的话直接用命令行运行

      1. terry terry

        我整个流程做完之后用的很流畅,想修改config文件了结果不知道文件在哪不知道怎么修改怎么办。。。求助

        1. /home/ftp/x/xxx/wwwroot

          1. 自己动手建一个站就行了,比看书强得多。写一个脚本语言,比如PHP就够了

          2. terry terry

            我是大二的学生,学校下学期才教网络这一块,所以想提前许多学一点建站的知识,,请问要做哪些准备呢?比如看哪些书和博客。。多谢师傅

  6. ss-local xxxxx firefox 上设置代理:localhost 1080 打开网站报: 2015-12-10 10:40:38 ERROR: unsupported cmd: 3

    1. npm不是阿里有镜像么

    2. http://npm.taobao.org

    3. npm install react-native 用啊里的镜像,报错。

    4. 换一个思路 使用Privoxy将socks5代理转为http代理

    5. 代理类型是sock5

    6. 最近想用npm,一直用原源,最近却慢死了。想通用ss来,看会不会改善些

    7. redhat上,系统->网络代理->没有sock5 是不是只能让firefox来连这个代理了?(firefox有插件foxyproxy standard)

  7. 我现在买了ss服务器,有账号、密码、端口、加密方式。 是用ss-server还是ss-local? redhat 和centos系统的。

    1. 服务器用server,客户端用local

  8. 好想哭啊,看了你好多文章,还是不知道具体一步一步怎么整,完全没有编程基础...就想用搬瓦工一键ss来fq,mac系统,求指导!

    1. 客气

    2. 所以流程就是:买vps,一键ss,装客户端,就可以啦?

    3. 居然成功啦!简直不敢相信啊!非常感谢你的博客

    4. 搬瓦工后台有一键安装,然后安装号下载一个mac的ss,就可以翻墙了

  9. 那个ss的 下载和配置代码不会输入。。

  10. 老高,能帮我配置服务器吗?嘿嘿嘿

  11. JenHsun JenHsun

    老高你好,ss端口如何更改,以及如何选择。

  12. 感谢分享,菜鸟的我怎么破?

    1. 我可以帮你配置服务端,5min搞定

  13. 徐子旭 徐子旭

    我表示没看懂啊...linux倒地如何翻墙

    1. ...putty

    2. Wsm Wsm

      命令行的咋搞 搬瓦工的多用户的怎么配置

    3. Linux翻墙有两种,一个是有图形界面的,一个是命令行的

  14. 这个自己设置就好了啊

  15. 翻了之后可以上youtube和google,但是不能上facebook和twitter。请问博主你有遇到过这种情况吗?

  16. 谷歌浏览器应该怎样配置?

    1. 快到期的时候你会收到一封续费邮件的

    2. 有点,只要端口不重复就行

    3. 请问有没有教程是增加用户的?

    4. 怎么修改端口或者说保证不重复?

    5. 我已经一键安装了Shadowsocks,再按照上面链接里的操作有影响吗?

    6. 配置很简单,用SwitchyOmega

    7. http://www.phpgao.com/share_shadowsocks.html

    8. 谢谢,已经成功了,请问搬瓦工取消自动续费后,怎么手动续费?

  17. 老高,请问下为什么我的chrome内核的浏览器必须要装Proxy SwitchyOmega插件才能用呢,直接开SS没有效果,但是WIN10 的Edge可以不用装任何东西,IE也是。

    1. 那你要看看IE里面的代理设置成功了没?

    2. 但是Proxy SwitchyOmega不是有个系统代理的选项么,我选了那个以后就无法翻墙了,但是Edge就可以。

    3. 能上的。

    4. 直接指定sock5 127.0.0.1 1080 能上google吗?

    5. chrome没有走系统的代理

  18. 请问能不能把命令执行成功的提示给出来?我用了命令以后完全不知道自己是不是执行成功了。为什么我按流程做下来一个,还是进不了,google显示的一个乱码,youtube无法连接,电脑端配置没问题。

    1. 解决了,犯了个非常小白的错误,把SS端口号和服务器的端口号设置成一样的了。

    2. 恩,下次注意啊

  19. empty empty

    老高,有交流的qq群吗?

  20. 我是用KiwiVM管理面板一键安装的ss,然后现在想修改一下密码,但是找不到配置文件,怎么办?

    1. 啥。。。

    2. 后台运行的方式不是用config,而是用命令行的,你可以看看 /etc/rc.local 文件里是怎么写的你应该就懂了

    3. touch /var/lock/subsys/local /usr/bin/ssserver -p `cat /root/.kiwivm-shadowsocks-port` -k `cat /root/.kiwivm-shadowsocks-password` -m `cat /root/.kiwivm-shadowsocks-encryption` --user nobody --workers 2 -d start mknod /dev/ppp c 108 0 echo 1 > /proc/sys/net/ipv4/ip_forward 然而并没有懂。。。求解释

    4. /usr/bin/ssserver -p `cat /root/.kiwivm-shadowsocks-port` -k `cat /root/.kiwivm-shadowsocks-password` -m `cat /root/.kiwivm-shadowsocks-encryption` --user nobody --workers 2 -d start

    5. 不是,其实我想改一下"server"属性来获得ipv6支持

    6. 直接在后台生成新的

添加新评论