搭建属于自己的 VPN

Posted by Oscaner on August 19, 2018

前言

访问外网仅为学习国外最新技术,了解最新科技资讯,请避免接受反动政治言论洗脑以危害国家安全!

作为一名程序员,难免会需要访问“外网”,查找资料。于是我决定自己搭建一个VPN

第零步:选择合适的 VPS

什么是 VPS 请自己百度吼

国外常见的 VPS 有很多,如 LinodeVultrSugarHosts 等,具体请看该网站 https://www.vpser.net/

我选择的是 Vultr,他们家有 $2.5/m 的廉价 VPS,每月 500G 流量,当然,能不能抢到货就看你们自己咯

具体购买流程我就不多说了(买东西应该不用教吧,哈哈)

操作系统:CentOS 7

搭建 VPN 的方式有很多,我也只查阅了 ss 的搭建方式(略略略

第一步:搭建 ss

啥是ss???

ss 是 shadowsocks 的简称,一个可穿透防火墙的快速代理(官方文档

1
2
3
4
# CentOS:
> yum install python-setuptools && easy_install pip
> pip install shadowsocks
# 其他操作系统请查看官方文档

第二步:编写 ss 配置

1
2
3
4
5
> vim /etc/shadowsocks.json
# 如果提示 vim: command not found
# 可以使用 vi /etc/shadowsocks.json
# vi 是 Linux 系统下标准的编辑器,类似于 windows 的记事本
# vim 需要另外安装

如果不懂 vi 怎么使用,请自行百度

单用户模式

1
2
3
4
5
6
7
8
9
10
{
  "server": "120.0.0.1",
  "server_port": 8388,
  "local_address": "120.0.0.1",
  "local_port": 1080,
  "password": "password",
  "timeout": 300,
  "method": "aes-256-cfb",
  "fast_open": false
}

server: 这里填写你的服务器外网 IP

server_port: 这是你要连接 ss 的端口

local_address: 默认填写 120.0.0.1 即可

local_port: 默认填写 1080 即可

password: 密码

多用户模式

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "server": "120.0.0.1",
  "local_address": "120.0.0.1",
  "local_port": "1080",
  "port_password": {
      "8381": "password1",
      "8382": "password2",
      "8383": "password3"
  },
  "timeout":300,
  "method":"aes-256-cfb",
  "fast_open": false
}

server: 你的服务器外网 IP, Google Cloud VM 有可能会将外网 IP 镜像到内网,通过 /etc/hosts 查看

开启 fast_open 模式 (可选)

设置 fast_opentrue,并且

1
echo 3 > /proc/sys/net/ipv4/tcp_fastopen

第三步:配置开机启动

1
> vim /etc/init.d/shadowsocks.sh

写入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/sh
#
# chkconfig: 2345 85 15
# description: run shadowsocks.
# processname: shadowsocks

rm -rf ~/shadowsocks.log || true
ssserver -c /etc/shadowsocks.json -d start --log-file ~/shadowsocks.log


> chmod +x /etc/init.d/shadowsocks.sh
> chkconfig --add /etc/init.d/shadowsocks.sh
# systemctl enable /etc/init.d/shadowsocks.sh

第四步:开启端口

注意:接下来开始对 CentOS 的版本有要求了!

我使用的是 CentOS 7

CentOS 6 的童鞋们我会在下面给相关链接,请自行查阅.

1
2
3
4
5
6
7
8
# 查看已开放端口
> firewall-cmd --list-ports

# 开启端口 以开启 8388 端口为例
> firewall-cmd --zone=public --add-port=8388/tcp --permanent

# 重启防火墙
> firewall-cmd --reload

CentOS 7 以下版本请看这里

第五步:安装 TCP 加速 (可选)

1
2
3
4
5
# 安装
> wget -N --no-check-certificate https://github.com/91yun/serverspeeder/raw/master/serverspeeder.sh && bash serverspeeder.sh

# 卸载
> chattr -i /serverspeeder/etc/apx* && /serverspeeder/bin/serverSpeeder.sh uninstall -f

当然,在你安装的时候,有很大可能会报内核不支持

这个时候就需要修改 Linux 内核了,一定要选择对应系统版本的内核,不然 VPS 可能会 die

CentOS 7 内核更换(内核:3.10.0-327.el7.x86_64)

1
2
# 安装 3.10.0-327.el7.x86_64 内核
> rpm -ivh http://xz.wn789.com/CentOSkernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm --force

如果安装内核的时候报错

The name of network interface is not eth0, please retry after changing the name

那么请执行下面这个命令,没报错就不用了

1
> yum install net-tools -y

查看内核是否安装成功

1
2
> rpm -qa | grep kernel
# 如果打印出来的信息里存在 3.10.0-327.el7.x86_64 ,说明安装成功

重启VPS

1
> reboot

查看当前使用内核版本

1
2
> uname -r
# 3.10.0-327.el7.x86_64

至此,再执行一下 serverspeeder 安装命令,就万事大吉了 !!!

最后一步

1
2
3
4
# 启动 ss
> ssserver -c /etc/shadowsocks.json -d start
# 停止 ss
> ssserver -c /etc/shadowsocks.json -d stop

附:ss客户端下载地址