自从科学上网这件事越来越成为一门口口相传的手艺的时候,就一直想要亲身实践下自建 VPS。Green VPN 突然发布了这则「相遇有时,后会无期」的公告,使我又失去了一个科学上网的工具,终于敦促我完成了这次体验。
我还能说什么,当然是选择原谅她。。。
以下是几种服务的对比:
- PPTP:
– 优点:网上关于搭建 PPTP 服务的教程最多
– 缺点:可能是因为 PPTP 不够安全,所以苹果禁用了这种服务的连接。就是说 Mac OX 和 iOS 系统上是不能使用这种服务的。 - L2TP、IKEv2、IPSec:
– 优点:Mac OX 和 iOS 系统上可以使用
– 缺点:使用系统添加此类服务的 VPN 配置无法实现智能分流,也就是 Shadowsocks 里的「自动代理模式」(PPTP 同样存在这个缺点) - Shadowsocks:
– 优点:可以实现自动代理模式,实现国内国外线路智能分流。
– 缺点:必须下载 Shadowsocks 客户端来使用该服务
所以,为了自动代理,我选择了 Shadowsocks。简单来说就是在自己的服务器上搭建一个 Shadowsocks 服务,对外提供「IP 地址 + 端口号」和「密码」
实现的功能:
- 服务器开机自动启动 Shadowsocks 服务
- 可配置多个账号(即:多个端口号 + 密码)
- 实现自动代理模式
所以我们需要:
- 购买服务器(vps)
- 装载 Shadowsocks 服务
- 下载 iOS、Mac 客户端连接 vps
购买 VPS
在 搬瓦工 购买一款适合你的主机,单纯搭建 Shadowsocks 服务的话「10G VPS」已经完全够用了,一年 19.9 美元,网上搜一个 6% 的优惠码,折合人民币大概 130 块一年。
购买过程可以参考:新手用户搬瓦工VPS购买图文指导教程
我买的是 KVM,关于 KVM 和 OpenVZ的区别可以参考:Linux VPS基本常识 - KVM与OpenVZ架构的区别
购买成功后,在这个地址点击 KiwiVM Control Panel
跳转至 KiwiVM 可管理你的主机
然后就可以看到你主机的详细信息了,并且搬瓦工已经帮你装好了 Centos 系统:
装载 Shadowsocks 服务
接下来,你有两种选择:
- 一键安装
– 优点:方便快捷
– 缺点:不能添加账号,不能随意更改密码(只能重新生成) - 自己搭建 Shadowsocks 服务
– 优点:可以添加多个账号(任意增删端口号即可),可以修改密码
– 缺点:ssh 连接服务器,执行一系列命令行命令(不过,这对于想要捣鼓捣鼓服务器的人来说,比如我,这也算是优点)
一键安装
如下图,点击 Intsall Shadowsocks Server
即可:
安装成功后如下图,会提供给我们:端口号、加密方式、密码,其中密码只能重新生成,不能更改。
下载 iOS、Mac 客户端连接 vps
- Mac 客户端:ShadowsocksX
- iOS 客户端:App Store 搜索「Wingy」或着「Shadowrocket」
- windows 客户端:Shadowsocks Windows
如下图为 Shadowsocks Mac 客户端,填入服务器 IP 地址、上图中 Shadowsocks Server 端口号、加密方式、密码确定即可连接 VPS 的 Shadowsocks 服务,iOS 上的软件也是填写这些内容:
如此,便可以科学上网了,一键安装,就是这么简单~
接下来是略微专业一点的做法,需要了解一些 Linux 命令。
自己搭建 Shadowsocks 服务
接下来,该是此篇博客最有趣的内容了:操作 Linux 服务器,搭建 Shadowsocks 服务。
首先如果你使用了上一种方式一键安装了 Shadowsocks,那么,在采用这种方式搭建服务前应当卸载上一个 Shadowsocks 服务,上一张图片所在网页的最下方会有一键卸载:Unintsall Shadowsocks Server
。如果不卸载该服务,会和接下来自己手动安装的 Shadowsocks 服务冲突。
保险起见,你可以选择从头来过:重装系统。
这里又是开始~
如下图选择一款操作系统来安装,墙裂建议选择 centos-7-x86_64-bbr,因为接下来安装 Shadowsocks 要依赖 python2.7 版本,而 Centos-6 默认安装的是 python2.6:
重装完成后,你会受到一封告知邮件,并且附有一份临时服务器登录密码。当然,你也可以点击上图中的 Root password modification
重新生成一份密码。注意:生成密码前需要先 stop 服务器。
连接服务器
开启终端,使用 ssh 远程连接服务器:
1 | ssh root@your_server_ip -p your_server_port |
your_server_ip:你的服务器 ip 地址,your_server_port:你的服务器端口号,回车输入 root 登录密码即可。
如果你之前 ssh 登录过服务器,又重装之后再次登录可能会有以下问题:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
执行如下命令,将 known_hosts 文件里包含你服务器 ip 地址那一段删掉即可成功连接:
1 | vim ~/.ssh/known_hosts |
为方便之后 ssh 登录,可执行以下命令修改 root 密码:
1 | passwd |
回车输入新密码确认即可。
安装 Shadowsocks
安装 setuptools 和 pip ,在终端执行以下命令:
1 | yum install python-setuptools |
安装 Python-Gevent,用于提高性能,在终端执行以下命令:
1 | yum install libevent |
安装 M2Crypto,用于加密的第三库,在终端执行以下命令:
1 | yum install openssl-devel |
安装 Shadowsocks 服务端,在终端执行以下命令:
1 | pip install shadowsocks |
配置 Shadowsocks
新建配置文件,在终端执行以下命令:
1 | vi /etc/shadowsocks.json |
编辑 shadowsocks.json 文件内容如下:
1 | { |
解释一下:
Name | Explanation
server | 服务器 IP 地址| -
server_port | 服务器端口号
local_address | 本地代理地址
local_port | 本地代理端口
port_password | Shadowsocks 服务端口号及密码
timeout | 超时断开,以秒为单位
method | 加密方式,推荐使用 rc4-md5,比 aes-256-cfb 速度快很多
fast_open | 是否使用TCP
后端开启与停止 Shadowsocks 服务,在终端执行以下命令:
1 | ssserver -c /etc/shadowsocks.json -d start |
或者选择前端开启 Shadowsocks 服务,在终端执行以下命令:
执行该命令当连接成功或出错时终端会打印详情信息,建议第一次开启 Shadowsocks 服务时执行该命令:
1 | ssserver -c /etc/shadowsocks.json |
至此,使用 Shadowsocks 客户端就可以科学上网了。
设置服务器开机启动
设置开机启动,在终端执行以下命令:
1 | vi /etc/rc.local |
将以下开启 Shadowsocks 服务命令加入 rc.local 文件:
1 | ssserver -c /etc/shadowsocks.json -d start |
保存退出即可。执行命令 reboot
重启服务器试试看~
至此,已经可以科学上网,秒开 Youtobe,1080无压力~
给安装 Centos-6 的补充
补充一:
如果你装的系统是 Centos-6 那么执行 pip install ...
或许会有以下报错:
DEPRECATION: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of pip will drop support for Python 2.6
说明,你的 Python 版本是 2.6,终端执行命令 Python -V
查看 Python 版本。
你可以执行以下命令简单升级 Python2.7
1 | yum install centos-release-SCL |
然后执行命令 Python -V
验证此时的 Python 版本,注意,此时不要更换操作目录,接下来的安装和启动 Shadowsocks 都需要在这个目录下完成,因为你的 Shadowsocks 就是用这个目录下的 Python2.7 安装的。
设置开机自启动时, 也应该在 rc.local 文件里加入以下命令:
1 | . /opt/rh/python27/enable |
补充二:
然而,当你第二次在 python2.6 环境下执行 pip install shadowsocks
也许会有如下提示:
DEPRECATION: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of pip will drop support for Python 2.6
Requirement already stisfied:shadowsocks in /usr/lib/python2.6/site-packages
虽然有报错,但你的确已经在 python2.6 环境下安装好了 shadowsocks 服务,那么在任意目录下你都可以执行 ssserver -c /etc/shadowsocks.json
命令开启 shadowsocks 服务。
补充三:
你当然可以自行 Google 完全升级 Python 的方法。
以上便是我搭建个人 VPS,实现科学上网的全过程,希望对大家有所帮助,欢迎吐槽~