科学上网的最终秘籍

本文主要介绍使用云服务器加Shadowsocks搭建属于自己的VPN。之前使用各种商用的VPN,一段时间后要么服务不稳定要么就服务提供商请去喝茶了。前一段时间所有商用VPN都不可以使用了,就想着自己搭建一个专属VPN。在网上找了一些资料以后就开始动手搭建属于自己的VPN。

选择云服务器

服务器的选择非常关键,一定要选择国外的提供商。国内的服务提供商很容易受到政策的影响。我这里根据[1]推荐使用以下服务器提供商:

本人亲测,DigitalOcean服务稳定性良好持续运行一个多月未出问题,界面操作相对简单。接下来就介绍如配置DigitalOcean。

DigitalOcean配置

首先需要注册一个账号,激活邮箱一个,首次使用有奖励金。其次,需要准备一张信用卡或者向账号内充值5$才能创建虚拟机。账号安装官网的操作流程注册,账号注册完以后,就开始搭建环境。

虚拟服务器配置

首先在Droplets选项下点击Create按钮开始创建虚拟服务器(Droplets)。服务器系统建议选用Ubuntu 16.0x.xx,服务选用标准版里面最低配置一般就能够满足需求,虚拟服务地址(根据自己常访问网站所在地选择),选择支持IPv6,如果前面个人设置中已经添加了ssh-key就选择已经添加的,建议先在个人设置中配置ssh(否则暂时忽略),最后为自己的服务器选择一个名字,至此已经创建好虚拟服务器。接下来我将讲解通过ssh如何远程登录这台虚拟机。远程登录这台虚拟机需要完成以下两个步骤:一、生产属于自己的公钥和私钥;二、将公钥放到网站的设置中。

ssh配置

SSH key[2]是一个简单而又安全地连接到你的远端设备的方式,通过它你不需要在网络上传输你的密码。SSH key 有 public 和 private 两部分,其中 private 部分存储在你的设备本地,而 public 部分则需要上传到远程设备上。当你通过 ssh 连接到远程设备上时,只有私钥和公钥匹配上才能登陆。

创建ssh key

第一步:先查看以下 ~/.ssh目录下是否已经有\*.pub文件,如果有请直接跳转到第三步;
第二步:运行如下命令,生成key

1
2
ssh-keygen -t rsa -C "email@example.com"
注:email@example.com 为自己的邮箱,操作过程中一路回车就OK;

第三步:将~/.ssh/id_rsa.pub 文件里面的内容copy到DigitalOcean上。操作路径:点击个人->settings->Security->ssh-key->Add SSH Key。添加完成就可以远程通过访问虚拟服务器了。
第四步:访问远程服务器的方式

1
ssh root@ipv4

注:ipv4的地址为虚拟服务器地址,可以在虚拟服务器的首页查看到,用户名默认为root。

配置shadowsocks

一、在远程服务器上安装shadowsocks

1
2
3
4
5
apt-get install python-pip
pip install shadowsocks
注:如果依赖缺失可以根据提示解决即可,也可运行如下命令更新依赖
yum install python-setuptools && easy_install pip

二、启动服务器上的shadowsocks服务,通过运行如下命令:

1
2
3
4
5
ssserver -p 8836 -k 你设置的密码 -m rc4-md5
# 或者可以通过以下指令在后台启动shadowsocks的服务:
ssserver -p 8836 -k 你设置的密码 -m rc4-md5 -d start
ssserver -p 8836 -k 你设置的密码 -m rc4-md5 -d stop

但上面的方法很不方便,我还是推荐使用配置文件的方法。首先创建一个文件:/etc/shadowsocks.json,示例如下:

1
2
3
4
5
6
7
8
9
10
{
"server":"你的服务器ip地址",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"你设置的密码",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

接下来你就可以使用下面这个指令启动服务

1
2
3
4
5
ssserver -c /etc/shadowsocks.json
# 或者在后台运行
ssserver -c /etc/shadowsocks.json -d start
ssserver -c /etc/shadowsocks.json -d stop

三、使用shadowsocks客户端
shadowsocks的客户端支持各大主流平台,而且客户端的配置一般都很简单,只需要配置一下服务器的ip地址和之前设置好的连接密码即可。

shadowsocks下载地址1
shadowsocks下载地址2
window/os X
Android/iOS

注意事项:

1、 端口记得打开:https://www.micronbot.com/Linux/13.html
iptables -I INPUT -p tcp –dport 8858 -j ACCEPT
iptables-save

2、 安装shadowsocks报错

1
2
3
4
5
6
7
8
9
10
11
root@seth:~# pip install shadowsocks
Traceback (most recent call last):
File "/usr/bin/pip", line 11, in <module>
sys.exit(main())
File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 215, in main
locale.setlocale(locale.LC_ALL, '')
File "/usr/lib/python2.7/locale.py", line 581, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
解决方案参考链接:https://stackoverflow.com/questions/36394101/pip-install-locale-error-unsupported-locale-setting

docker安装

最近又捣鼓了一下用Docker,想尝试在一台服务器上搭建连个shadowsocks服务,现分享给大家。如果对docker容易不了解的请参考文献[4]

  • 服务器申请,参考上面的方法;
  • 在服务器上安装docker,具体方案参考官网docker的安装直达地址
  • 启动 docker -> 获取他人做好的shadowsocks镜像 -> 启动服务 -> 检查是否正常启动
  • 1
    2
    3
    4
    5
    service docker start # 启动
    docker search shadowsocks # 查找shadowsocks镜像,选这最前面的,通常是比较好用得(具体使用方法查看对应的提供方的git),也可以直接在文献[7]查找。
    docker pull oddrationale/docker-shadowsocks # 获取oddrationale/docker-shadowsocks镜像,使用参考文献[6]
    docker run -d -p 2008:1993 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 1993 -k 0000 -m aes-256-cfb # 运行下载好的docker,注意点:2008是客户端配置的端口号(如果不行,三个端口号保持一致),地址不需要改0.0.0.0
    docker ps # 查看docker是否启动正常

参考文献:
[1] 科学上网的最终秘籍
[2] ssh官网
[3] 手把手教你用digitalocean和shadowsocks科学上网
[4] Docker —— 从入门到实践
[5] 基于 Docker 的 shadowsocks 容器最佳实践
[6] oddrationale/docker-shadowsocks
[7] doucker镜像查到地址

谨记不要为他人提供VPN服务和从中谋取利益,只供查阅外文文献和科研工作使用

坚持原创技术分享,您的支持将鼓励我继续创作!欢迎大家加我微信交流:saixialv
0%