Ubuntu18-04搭建VPN服务器

Ubuntu  shadowsocks  VPN  vi  2019年09月21日

本文中<something>代表一个变量.

步骤一 租用云服务器 #

前往云服务器商家租用云服务器, 最好能获得服务器的root权限. 本人选用的是vultr.

租用成功后, 得到服务器ip地址<server-ip>, 用户名<user-name>和登录密码<user-password>.

步骤二 通过SSH连接到服务器 #

下载PuTTY并安装. 安装完成后运行, Host Name项填入<server-ip>, Port项填入22, Connection Type项选择SSH, 其余设置保持默认, 此时点击Open即可连接到服务器, 按照提示依次输入用户名<user-name>和登录密码<user-password>登录.

步骤三 安装并配置Shadowsocks #

输入以下命令安装shadowsocks-libev.

sudo apt-get update
sudo apt install shadowsocks-libev

Shadowsocks的配置文件存储在/etc/shadowsocks-libev/config.json, 运行vi /etc/shadowsocks-libev/config.json对该文件进行编辑, 不熟悉文本编辑器vim的读者可以参考本文附录部分. 编辑完成后的文件应该形如:

{
  "server": "<server-ip>",
  "server_port": <server-port>,
  "local_port": 1080,
  "password": "<your-password>",
  "timeout": 600,
  "method": "aes-256-cfb"
}

其中<server-port>为您的服务器向外开放的端口.

更改config.json之后, 需要重新启动Shadowsocks:

sudo systemctl restart shadowsocks-libev.service

最后配置防火墙开放端口:

sudo ufw allow <server-port>

成功啦!

附录A 文本编辑器vi使用简易教程 #

  1. bash中输入vi <your-file>打开文件.
  2. 按下i键进入编辑模式.
  3. 使用←→↑↓键移动光标, 使用backspace键或delete键删除文字, 使用字母键添加文字, 使用enter键换行.
  4. 编辑完成后按下esc键退出编辑模式.
  5. 输入:wq并按下enter键来保存修改并退出.

学会啦!

附录B 更新服务端并更改加密方式 #

在2021年1月2日, 我们突然发现shadowsocks的客户端移除了”aes-256-cfb”加密方式, 于是我们决定更改为”chacha20-ietf-poly1305”, 流程如下.

先输入以下命令更新shadowsocks-libev.

sudo apt-get update
sudo apt upgrade shadowsocks-libev

再更改Shadowsocks的配置文件, 运行vi /etc/shadowsocks-libev/config.json. 编辑完成后的文件应该形如:

{
  "server": "<server-ip>",
  "server_port": <server-port>,
  "local_port": 1080,
  "password": "<your-password>",
  "timeout": 600,
  "method": "chacha20-ietf-poly1305"
}

最后重新启动Shadowsocks:

sudo systemctl restart shadowsocks-libev.service

附录C screen的简易使用方法 #

首先用命令screen -xR进入screen, 如果已经有screen session的话就进入, 没有的话就新建一个. 现在运行需要在后台运行的命令. 最后再用Ctrl+A, D快捷键退出screen即可. 此时我们已经可以放心的结束ssh进程了, 后台进程不会被杀.

参考资料 #

  1. https://vpntut.com/shadowsocks-on-ubuntu/ (失效链接)
  2. https://www.linuxbabe.com/networking/shadowsocks-libev-ubuntu-16-04-server
  3. https://vitux.com/how-to-change-sudo-password-in-ubuntu/