使用shadowsocks轻松搭建翻墙环境教程
之前大家翻墙可能都会用到免费的goagent代理,但是他速度慢,链接也不稳定,看油管更是无望,更好的解决方案是shadowsocks。
shadowsocks是一个著名的轻量级socket代理,基于python编写。
如果你有国外的VPS,那么使用shadowsocks搭建一个翻{防屏蔽}墙服务器是一件很轻松的事情!
先看看shadowsocks覆盖的客户端覆盖了多少系统,连OpenWRT都支持!
老高之前买的$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
更高级的运行方式
多用户(实例)运行
可能大家都注意到了,在上一节我们提到了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在右下角),打开菜单,点击服务器-->>服务器设定
配置方法
其中1.1.1.1即服务器的IP地址 端口号对应服务器设定的server_port 加密方式和密码就更不必说了
添加完毕,点击确定后,客户端和服务器马上就可以见面了。
最后一步
打开Shadowsocks,教程完毕!
ps.想要在快速的在影梭配置服务器,可以通过在PC端点击生成二维码按钮,然后使用影梭扫描即可!
老高望着着简单而粗狂的画面,许久说不出话来。
是不是激动的要哭了?
今天先写到这儿,十分感谢广大基友的捧场!老高在此十分感谢!
有兴趣的TX可以在此留下你的邮箱,用AT
替换调你的@
,老高有一个闲置的VPS可以提供测试ss帐号,也是搬瓦工的。
密码大概想起来再改一次,流量不多,看油兔就算了吧。
浏览器
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运行的更稳定!
猜你喜欢:
想知道ss限制流量或使用時間是怎麼做到的
后台统计
嗨你好 非常感谢你的教程 已经购买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:不会,可能是线路有问题
2:两个IP相同
这玩意跟open vpn有啥区别啊?
区别大了
你好。我现在在bandwagon的control panel上安装了shadowsocks,但是本地还是连接不上。
本地用的是ubuntu,网络设置里点了127.0.0.1:1080的全局代理也不行,client端用的ss-qt5。
代理类型是socks5
这个需要在哪里设置呢,是系统设置还是浏览器设置?
ss使用的时socks5的代理,在ubuntu你需要把它转成http代理
如果你本地的安装好了,可以先用chrome加插件swichy omega
哦哦,那我接下来该怎么做,这方面实在不懂
config.json如何创建?这一步卡住了,求解,谢谢
用vi命令创建文件,要是不会的话直接用命令行运行
我整个流程做完之后用的很流畅,想修改config文件了结果不知道文件在哪不知道怎么修改怎么办。。。求助
/home/ftp/x/xxx/wwwroot
自己动手建一个站就行了,比看书强得多。写一个脚本语言,比如PHP就够了
我是大二的学生,学校下学期才教网络这一块,所以想提前许多学一点建站的知识,,请问要做哪些准备呢?比如看哪些书和博客。。多谢师傅
ss-local xxxxx firefox 上设置代理:localhost 1080 打开网站报: 2015-12-10 10:40:38 ERROR: unsupported cmd: 3
npm不是阿里有镜像么
http://npm.taobao.org
npm install react-native 用啊里的镜像,报错。
换一个思路 使用Privoxy将socks5代理转为http代理
代理类型是sock5
最近想用npm,一直用原源,最近却慢死了。想通用ss来,看会不会改善些
redhat上,系统->网络代理->没有sock5 是不是只能让firefox来连这个代理了?(firefox有插件foxyproxy standard)
我现在买了ss服务器,有账号、密码、端口、加密方式。 是用ss-server还是ss-local? redhat 和centos系统的。
服务器用server,客户端用local
好想哭啊,看了你好多文章,还是不知道具体一步一步怎么整,完全没有编程基础...就想用搬瓦工一键ss来fq,mac系统,求指导!
客气
所以流程就是:买vps,一键ss,装客户端,就可以啦?
居然成功啦!简直不敢相信啊!非常感谢你的博客
搬瓦工后台有一键安装,然后安装号下载一个mac的ss,就可以翻墙了
那个ss的 下载和配置代码不会输入。。
老高,能帮我配置服务器吗?嘿嘿嘿
我已经在搬瓦工买了VPS
一键安装说要centos6.0,但是KiwiVM里面只有centos6.5
centos6.5
什么系统
我们能私信吗?
微博啊
怎么和你私信啊?
可以
老高你好,ss端口如何更改,以及如何选择。
感谢分享,菜鸟的我怎么破?
我可以帮你配置服务端,5min搞定
我表示没看懂啊...linux倒地如何翻墙
...putty
命令行的咋搞 搬瓦工的多用户的怎么配置
Linux翻墙有两种,一个是有图形界面的,一个是命令行的
这个自己设置就好了啊
翻了之后可以上youtube和google,但是不能上facebook和twitter。请问博主你有遇到过这种情况吗?
有的,dns的问题
谷歌浏览器应该怎样配置?
快到期的时候你会收到一封续费邮件的
有点,只要端口不重复就行
请问有没有教程是增加用户的?
怎么修改端口或者说保证不重复?
我已经一键安装了Shadowsocks,再按照上面链接里的操作有影响吗?
配置很简单,用SwitchyOmega
http://www.phpgao.com/share_shadowsocks.html
谢谢,已经成功了,请问搬瓦工取消自动续费后,怎么手动续费?
老高,请问下为什么我的chrome内核的浏览器必须要装Proxy SwitchyOmega插件才能用呢,直接开SS没有效果,但是WIN10 的Edge可以不用装任何东西,IE也是。
那你要看看IE里面的代理设置成功了没?
但是Proxy SwitchyOmega不是有个系统代理的选项么,我选了那个以后就无法翻墙了,但是Edge就可以。
能上的。
直接指定sock5 127.0.0.1 1080 能上google吗?
chrome没有走系统的代理
请问能不能把命令执行成功的提示给出来?我用了命令以后完全不知道自己是不是执行成功了。为什么我按流程做下来一个,还是进不了,google显示的一个乱码,youtube无法连接,电脑端配置没问题。
解决了,犯了个非常小白的错误,把SS端口号和服务器的端口号设置成一样的了。
恩,下次注意啊
老高,有交流的qq群吗?
目前没有这个打算
我是用KiwiVM管理面板一键安装的ss,然后现在想修改一下密码,但是找不到配置文件,怎么办?
啥。。。
后台运行的方式不是用config,而是用命令行的,你可以看看 /etc/rc.local 文件里是怎么写的你应该就懂了
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 然而并没有懂。。。求解释
/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
不是,其实我想改一下"server"属性来获得ipv6支持
直接在后台生成新的