对于攻城狮们来说,在 PC 机上安装 ss ,以及在海外服务器上搭建 ss 服务已经不是什么新鲜事,毕竟知识无国界,有时候参照些国外先进的技术,对自身的提高也是很有帮助的。(不懂 ss 是什么的,可以不用往下看了。:D)
但是如何在国内服务器上搭建 ss 客户端,并进行代理,这却是比较少见的。也正好今天碰到有这需求,故随手记录一下。
起因
事情的起因,是因为我们使用持续集成的时候,代码放在 gitlab.com 上面,而 runner 则部署在阿里云上。
不知道是阿里云对 gitlab.com 做了限制,还是 gitlab.com 把阿里云拉进了黑名单,反正这两家伙互相访问就异常地慢,而我们在本地对双方的访问都没问题。
最后商讨过后,决定设置代理,让 runner 通过代理的端口去访问 gitlab.com ,通过这种曲折的方式,看能不能绕过双方的限制。
安装 ss
首先,得注册 ss 账号(注册链接),建议不要使用网上那些免费的账号,服务方终究要盈利的,不是从付费账户入手,就是从隐私入手。
安装 ss 客户端:
sudo yum install python
sudo yum install python-pip
sudo pip install shadowsocks
配置 ss
新建名为 shawdowsocks.json
的配置文件,配置相应参数:
{
"server": "{your-server}",
"server_port": 40002,
"local_port": 1080,
"password": "{your-password}",
"timeout": 600,
"method": "aes-256-cfb"
}
以上参数为注册 ss 账户后,服务方提供,也可以使用自己搭建的服务地址(如何搭建不在本篇讨论范围内,可自行 google )。
启动 ss
配置完成后,可使用以下命令启动 ss 服务:
sudo sslocal -c shawdowsocks.json -d start
# 检查
sudo netstat -anp|grep 1080
安装 polipo
能够设置 ss 代理的工具有很多,比如 proxychains , redsocks , tsocks 等,其中功能较为强大的是 proxychains 。但我最终还是选择使用 polipo (下载地址),可能是因为配置比较方便的缘故吧。
比较遗憾的是 polipo (项目地址)已经停止维护了。
下面就开始进行安装了:
wget https://www.irif.fr/~jch/software/files/polipo/polipo-20140107.tar.gz
tar xvf polipo-20140107.tar.gz
cd polipo-20140107.tar.gz
make all
sudo make install
注意:若安装过程中出现 makeinfo
错误,可通过 yum install texi2html texinfo
解决。
配置 polipo
修改 polipo 的配置文件 /etc/polipo/config
(若文件或目录不存在,需自行创建):
logSyslog = true
logFile = /var/log/polipo/polipo.log
proxyAddress = "0.0.0.0"
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5
chunkHighMark = 50331648
objectHighMark = 16384
serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
注意:日志路径 /var/log/polipo/polipo.log
需自行创建。
启动 polipo
配置完成后,就可以通过以下命令启动 polipo 了:
sudo polipo &
# 检查
sudo netstat -anp|grep 8123
注意:若 sudo 执行报找不到命令,可先通过 which polipo
找到命令具体路径,再使用 sudo 执行对应的文件。
配置代理
经过以上步骤后,就可以配置代理进行科学上网了:
export http_proxy=http://127.0.0.1:8123
export https_proxy=http://127.0.0.1:8123
export ftp_proxy=http://127.0.0.1:8123
# 检查
wget www.google.com
如果需要登录自动执行,可将命令添加至 .bash_profile
或 /etc/profile
中。
Done!