要利用 shadowsocks-libev翻墙,首先要有一台国外的服务器安装并运行shadowsocks 服务端。如果还没有服务器,可以到业界著名的 Digital Ocean 购买一台SSD虚拟服务器VPS,全SSD硬盘,速度极快
for Debian 9("Stretch"), unstable, Ubuntu 16.10 and later derivatives:
sudo apt-get update
sudo apt-get install shadowsocks-libev
for other versions:
#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
Ubuntu 16.10上确认shadows-libev已经运行:
sudo systemctl status shadowsocks-libev
上述命令的效果:
- 安装ss-local ss-redir ss-server ss-tunnel...到 /usr/bin
- 启动文件 /etc/init.d/shadowsocks-libev
- 配置文件 /etc/shadowsocks-libev/config.json (旧版是/etc/shadowsocks/config.json)
- 一些默认启动配置 /etc/default/shadowsocks-libev (旧版是/etc/default/shadowsocks)
sudo vi /etc/shadowsocks-libev/config.json
改成类似如下:
{
"server":["[::0]","0.0.0.0"],
"server_port":1098,
"password":"killgfw",
"method":"chacha20-ietf-poly1305",
"ipv6_first":true,
"dns_ipv6":true,
"fast_open":true,
"timeout":600
}
简要解释如下:
-
"server":["[::0]","0.0.0.0"]
监听本机IPv6和IPv4地址
-
"server_port":1098
shadowsocks-libev 服务端 ss-server 监听的端口
-
"password":"killgfw"
shadowsocks-libev客户端加密通信的密码,有以下几个要求:
- shadowsocks服务端和客户端密码必须一致
- 密码长度不少于6位
-
"method":"chacha20-ietf-poly1305"
加密算法,详见 Shodowsocks不同加密算法的区别
-
"fast_open":true
一种加速数据传送的优化,必须要设置好才能启用这个选项。如果没有设置过,值先改成 false
ufw 是Ubuntu设置防火墙的工具,查看 ufw 是否已经启用:
sudo systemctl status ufw
在 Digital Ocean 创建 VPS 后,默认没有启用 ufw,可以这样启用:
sudo ufw enable
启用了ufw以后,那么要用如下命令开放server_port,注意把下面的1098换成你的实际端口:
sudo ufw allow 1098
查看 ufw 状态
sudo ufw status
查看 ss-server 监听的端口:
netstat -lnp
你可以给 ss-server 启动参数加上或去掉 -u
运行 netstat 命令看看区别
我们也可以换一种方式开放 1098 端口 给 shadowsocks-libev 服务端 ss-server
$ cd /etc/ufw/applications.d/
$ sudo vi shadowsocks
# add lines
[shadowsocks-libev]
title=shadowsocks-libev
description=shadowsocks-libev server
ports=1098/udp|1098/tcp
然后我们可以这样给shadowsocks-libev添加防火墙规则:
$ sudo ufw allow shadowsocks-libev
Rule added
Rule added (v6)
$ sudo ufw status verbose | grep 1098
1098/udp (shadowsocks-libev) ALLOW IN Anywhere
1098/tcp (shadowsocks-libev) ALLOW IN Anywhere
1098/udp (shadowsocks-libev (v6)) ALLOW IN Anywhere (v6)
1098/tcp (shadowsocks-libev (v6)) ALLOW IN Anywhere (v6)
更加清楚地显示了谁监听在什么端口
如果前面已经运行了 sudo ufw allow 1098
可以这样删除重复规则:
sudo ufw delete allow 1098
再用 netstat 命令查看一下 shadowsocks-libev 监听的端口:
$ sudo netstat -lnp | grep ss-server
tcp 0 0 0.0.0.0:1098 0.0.0.0:* LISTEN 2414/ss-server
tcp6 0 0 :::1098 :::* LISTEN 2414/ss-server
udp 0 0 0.0.0.0:1098 0.0.0.0:* 2414/ss-server
udp6 0 0 :::1098 :::* 2414/ss-server
在Ubuntu 16.10上安装shadows-libev后,默认已经随机启动了
sudo service shadowsocks-libev restart
sudo service shadowsocks-libev start
sudo service shadowsocks-libev stop
ps ax | grep ss-server
如果启动正常,返回结果类似如下:
/usr/bin/ss-server -c /etc/shadowsocks-libev/config.json -u
注意其中有-u。如果shadowsocks客户端启用了udp relay, 而服务端启动时不带-u参数,翻墙自然就失败了
相关资源: