想给国内的腾讯云服务器安装一些服务,虽说配置不高吧,还是能勉强用用的,本来想安装 Docker 最方便了,不过呢就是防火墙厉害了点,服务器上 Docker Hub 访问不了,GitHub 访问速度就看人品了,寻思安装一个 Shadowsocks 客户端吧。

前提

有一个 Shadowsocks 服务端,提供服务。

安装 Shadowsocks 客户端

其实 Shadowsocks 客户端和服务端是一起安装的,Shadowsocks 有很多实现的版本,最有名的 Python 实现的版本了吧,网上的很多教程都是安装这个版本的,不过这里我要使用 C 语言版本的 Shadowsocks

服务器配置

配置 1核 2GB
系统 Centos 7.4
已安装 Git

安装 Shadowsocks

参考
shadowsocks 官网
C 语言版本

1
2
3
4
5
6
7
8
9
10

$ cd /usr/local/src
$ git clone https://github.com/shadowsocks/shadowsocks-libev.git
$ cd shadowsocks-libev
$ git submodule update --init --recursive
$ yum install epel-release -y
$ yum install gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto c-ares-devel libev-devel libsodium-devel mbedtls-devel -y
$ ./autogen.sh && ./configure && make
$ sudo make install
$ ss-local -h

安装客户端成功

配置客户端

1
2
3
4
$ cd ~
$ mkdir ss
$ cd ss
$ vim ss-local.json

写入内容

1
2
3
4
5
6
7
8
9
{
"server":"my_server_ip",
"server_port":my_server_port,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"my_password",
"timeout":300,
"method":"aes-256-cfb"
}

Name 说明
server ss 服务器的 ip
server_port ss 服务器的 port
local_address 本地地址
local_port 本地端口,一般1080
password 密码,ss 服务器的密码
timeout 超时重连
method 连接 ss 服务器的方法

启动 Shadowsocks 客户端

ss-local -c /root/ss/ss-local.json

默认是前台启动,可以改成后台启动,或者通过一些守护进程的工具运行。

使用 Privoxy 代理

安装好了 Shadowsocks,但是它是 socks5 代理,而不是 http/https 的代理,在 shell 运行命令时,需要通过 Privoxy 代理

安装 Privoxy

1
2
$ yum install privoxy -y
$ privoxy --version

配置文件在 /etc/privoxy/config
先搜索关键字 listen-address 找到 listen-address 127.0.0.1:8118 这一句,保证这一句没有注释,8118 就是将来 http 代理要输入的端口。
然后搜索 forward-socks5t, 将 #forward-socks5t / 127.0.0.1:9050 . 此句前面的注释去掉, 意思是转发流量到本地的 9050 端口, 而 9050 端口正是 ss-local 需要监听的 local_port

配置转发

我不想把 privoxy 设置为一个服务运行,而是设置成当需要代理的时候,才运行,方便切换

vim ~/.bashrc
写入

1
2
alias proxy='systemctl start privoxy && export http_proxy=http://127.0.0.1:8118 && export https_proxy=http://127.0.0.1:8118'   
alias unproxy='unset http_proxy && unset https_proxy && systemctl stop privoxy'

运行 proxy 的时候,开启代理,运行 curl ip.cncurl https://www.google.com 可以进行测试
运行 unproxy ,取消代理

总结

ss-localproxy 服务需要配合使用,才能友好使用,我设置 ss-local 后台运行,proxy 需要时才运行。

参考链接
Linux中使用ShadowSocks+Privoxy代理
ss-local 全局代理
sslocal + privoxy 实现 PAC 代理
ss-redir透明代理