服务端

GCP购买及设置

GCP(Google Cloud Platform)购买及设置见申请谷歌云教程,可免费使用一年,不加赘述。

BBR安装

1.准备工作

1
2
$ sudo apt-get update
$ sudo apt-get upgrade

2.安装YankeeBBR,输入:

1
$ wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/YankeeBBR/master/bbr.sh https://raw.githubusercontent.com/FunctionClub/YankeeBBR/master/bbr.sh && bash bbr.sh install

如果中途跳出一个YES/NO选择框,选择NO。
最后选择Y重启。

3.启动BBR

1
$ bash bbr.sh start

将提示启动成功。

安装Shadowsocks

Python3

1
2
3
4
$ sudo apt-get update
$ sudo apt-get install python3
$ sudo apt-get install python3-pip
$ sudo apt-get install python3-setuptools m2crypto // 为了支持ss加密

Shadowsocks:

1
$ sudo pip3 install shadowsocks

找一个目录(这里目录假定为 ~/Shadowsocks/ ),,添加配置文件:

1
$ vim ~/Shadowsocks/config.json

配置以下内容:

1
2
3
4
5
6
7
8
9
10
{
"server":"0.0.0.0",
"server_port":29306,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"ss_password",
"timeout":300,
"method":"aes-256-cfb",
"fast_open":false
}

创建完毕后,赋予文件权限:

1
$ sudo chmod 755 ~/Shadowsocks/config.json

开启ssserver服务

可以不使用配置文件,直接通过参数运行 ssserver,但推荐不使用这种方式。
以下是以使用配置文件为前提的设置:

启动

不进入后台运行,同时打印log至 /home/katherine/ssserverlogy

1
$ ssserver -c ~/Shadowsocks/config.json > /home/katherine/ssserverlogy &

后台运行

第一种方法:使用 ssserver-d 参数【推荐】

1
$ ssserver -c ~/Shdowsocks/config.json -d start

第二种方法; 使用 nohup 命令

1
$ nohup ssserver -c ~/Shadowsocks/config.json > /home/katherine/ssserverlog &
  • nohup + [command] + & 是为了让其在后台运行
  • Ctrl + C 是终止程序
  • Ctrl + Z 是挂起到后台

关闭ssserver

1
$ ssserver -d stop

设置开机启动

方法一

编辑 /etc/rc.local 文件

1
$ sudo vi /etc/rc.local

exit 0 这一行的上边加入如下

1
/usr/local/bin/ssserver –c ~/Shadowsocks/config.json

方法二

详情见:systemd添加自定义系统服务设置自定义开机启动

1
$ sudo vim /etc/systemd/system/shadowsocks.service

输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Shadowsocks
After=network.target

[Service]
Type=forking
PIDFile=/run/shadowsocks/server.pid
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /run/shadowsocks
ExecStartPre=/bin/chown root:root /run/shadowsocks
ExecStart=/usr/local/bin/ssserver --pid-file /var/run/shadowsocks/server.pid -c ~/Shadowsocks/config.json -d start
Restart=on-abort
User=root
Group=root
UMask=0027

[Install]
WantedBy=multi-user.target

重载服务:

1
$ systemctl enable nginx.service

启动服务

1
$ sudo systemctl start nginx.service

查看日志

1
$ sudo journalctl -f -u nginx.service

重启

1
$ sudo systemctl restart nginx.service

重载

1
$ sudo systemctl reload nginx.service

停止

1
$ sudo systemctl stop nginx.service

关闭正在监听的端口

有时候用 nohup 启动后,想重启脚本,那么就会出现监听端口冲突的问题。

1
2
$ ps -ef|grep server
$ kill -9 pid

NOTES

1.如果你没关掉当前终端,你可以这么查看后台运行的程序:

1
2
3
$ jobs -l
[1]- 3918 Running hexo s &
[2]+ 4110 Stopped ping www.baidu.com

2.jobs命令只看当前终端生效的,关闭终端后,在另一个终端>jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令):

1
2
$ pgrep [command_name] # 模糊匹配,找到匹配该特征串的进程ID
$ ps --pid [pid] # 其次根据进程ID显示指定的进程信息

综合的写法:

1
$ pgrep sslocal | xargs ps -u --pid
  • 因为查找出来的进程ID需要被作为参数传递给ps命令,故使用>xargs命令,通过管道符号连接
  • 显示进程详细信息,需要加上-u参数。

3.将后台的程序提到前端(%后面的数字代表了要提到前台的任务):

1
2
3
4
5
$ %2
ping www.baidu.com
64 bytes from 180.97.33.107: icmp_req=3 ttl=52 time=14.2 ms
64 bytes from 180.97.33.107: icmp_req=4 ttl=52 time=12.7 ms
...

客户端

Client 端是运行在需要科学上网的机器上的, 主要分三步:

  1. 开启 sslocal 服务
  2. 开启浏览器(Firefox或Chrome)代理
  3. 浏览器科学上网

安装Shadowsocks

同服务器部分,不赘述。

启动sslocal服务

ssserver 一样,sslocal 也可以直接通过指定参数运行,但不推荐。
以下操作以使用配置文件为基础:

启动

找一个目录(这里目录假定为 ~/Shadowsocks/ ),配置config.json配置文件:

1
$ vim ~/Shadowsocks/config.json

修改为如下内容:

1
2
3
4
5
6
7
8
9
{  
"server":"your vps ip", (vps公网ip)
"server_port":your_vps_port, (vpn上ssserver服务端口号)
"local_port":1080,
"password":"your vps port password",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

然后输入以下命令,运行ss服务:

1
$ sslocal -c ~/Shadowsocks/config.json

后台运行

1
$ nohup sslocal -c ~/Shadowsocks/config.json &

浏览器

客户端电脑开启 sslocal 服务后,浏览器还并不能科学上网。
Shadowsocks默认是用Socks5协议的, 浏览器里设置上 SOCKS5 代理:

  1. Proxy Type选择SOCKS5
  2. IP Address: 127.0.0.1
  3. Port: 1080(要与前面设置的端口一致)

Chrome

因为无法翻墙,所以没法访问chrome store,无法下载代理插件。
Chrome推荐使用SwitchyOmega来进行代理,链接是github地址,可通过到release页面下载.crx后缀的插件,来手动安装Chrome插件。

FireFox

点击Add-Ons选项,进入插件中心去下载代理插件,推荐FoxyProxy

测试

客户端浏览器开启代理后,访问ip138.com,若显示的ip是你的服务器ip,则配置成功。

proxychains

安装

Shadowsocks默认是用Socks5协议的,对于Terminal的get,wget等走Http协议的地方是无能为力的,所以需要转换成Http代理

1
$ sudo apt install proxychains

配置

编辑配置文件

1
$ sudo vim /etc/proxychains.conf

在 [ProxyList] 下面(也就是末尾)加入代理类型,代理地址和端口,注释掉原来的代理并添加:

1
socks5 127.0.0.1 1080

如果所在的网络很复杂,可能需要在配置文件中启用dynamic_chain - 按照列表中出现的代理服务器的先后顺序组成一条链,如果有代理服务器失效,则自动将其排除,但至少要有一个是有效的然后在 [ProxyList] 下添加多个代理
默认:strict_chain - 按照后面列表中出现的代理服务器的先后顺序组成一条链,要求所有的代理服务器都是有效的

测试

1
$ proxychains curl google.com

注意:

  1. proxychains支持的是socks,http, https协议,它们以tcp或者udp协议为基础。
  2. ping命令用的是 ICMP 协议, proxychains 不支持。