如何让 CentOS 也能科学上网

对于攻城狮们来说,在 PC 机上安装 ss ,以及在海外服务器上搭建 ss 服务已经不是什么新鲜事,毕竟知识无国界,有时候参照些国外先进的技术,对自身的提高也是很有帮助的。(不懂 ss 是什么的,可以不用往下看了。:D)

但是如何在国内服务器上搭建 ss 客户端,并进行代理,这却是比较少见的。也正好今天碰到有这需求,故随手记录一下。

起因

事情的起因,是因为我们使用持续集成的时候,代码放在 gitlab.com 上面,而 runner 则部署在阿里云上。

不知道是阿里云对 gitlab.com 做了限制,还是 gitlab.com 把阿里云拉进了黑名单,反正这两家伙互相访问就异常地慢,而我们在本地对双方的访问都没问题。

最后商讨过后,决定设置代理,让 runner 通过代理的端口去访问 gitlab.com ,通过这种曲折的方式,看能不能绕过双方的限制。

安装 ss

首先,得注册 ss 账号(注册链接),建议不要使用网上那些免费的账号,服务方终究要盈利的,不是从付费账户入手,就是从隐私入手。

安装 ss 客户端:

1
2
3
sudo yum install python
sudo yum install python-pip
sudo pip install shadowsocks

配置 ss

新建名为 shawdowsocks.json 的配置文件,配置相应参数:

1
2
3
4
5
6
7
8
{
"server": "{your-server}",
"server_port": 40002,
"local_port": 1080,
"password": "{your-password}",
"timeout": 600,
"method": "aes-256-cfb"
}

以上参数为注册 ss 账户后,服务方提供,也可以使用自己搭建的服务地址(如何搭建不在本篇讨论范围内,可自行 google )。

ss servers

启动 ss

配置完成后,可使用以下命令启动 ss 服务:

1
2
3
4
5
sudo sslocal -c shawdowsocks.json -d start

# 检查

sudo netstat -anp|grep 1080

安装 polipo

能够设置 ss 代理的工具有很多,比如 proxychains , redsocks , tsocks 等,其中功能较为强大的是 proxychains 。但我最终还是选择使用 polipo (下载地址),可能是因为配置比较方便的缘故吧。

比较遗憾的是 polipo (项目地址)已经停止维护了,为了防止软件无法下载,我特意上传了一份到网站。(下载地址)(请勿外传!)

下面就开始进行安装了:

1
2
3
4
5
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 (若文件或目录不存在,需自行创建):

1
2
3
4
5
6
7
8
9
10
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 了:

1
2
3
4
5
sudo polipo &

# 检查

sudo netstat -anp|grep 8123

注意:若 sudo 执行报找不到命令,可先通过 which polipo 找到命令具体路径,再使用 sudo 执行对应的文件。

配置代理

经过以上步骤后,就可以配置代理进行科学上网了:

1
2
3
4
5
6
7
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!