使用Azure和Shadowsocks搭建VPN服务

下面介绍如何利用Azure来搭建VPN服务(这里使用的是国外的Azure服务)。


在Azure中创建一个虚拟机(VM)

打开Azure的门户网站(新版),登录之后,在页面左上方点击 +New,选择 Virtual Machines;点击 See all,接下来会有一些不同类型的服务器OS供你选择,一般选择Linux会比相同配置下的Windows便宜不少,这里建议选择 Ubuntu Server 16.04 / 14.04 LTS;选择 Resource Manager 模式进行创建即可。

接下来
(1)完成VM的基本信息填写,设置并记住你的VM名称、用户名及密码;注意 Location 一栏一般填写距离自己常住地比较近的地区(如在中国则可以选择东亚或者东南亚,东南亚的会比东亚便宜一些);

(2)然后选择合适的配置,对于只是用来搭建VPN服务的VM,不需要太高的配置(博主选择的是DS1_V2,如下图);

(3)在设置中点击 Public IP address,在右侧选择 Static,这样虚机对外的IP就是固定的;记住这个IP地址,以后方便在终端上进行登录。

这样就完成了一个搭载 Ubuntu Server 16.04 LTS OS 的VM的创建。

配置VM

配置nsg

在Azure门户中,点击 All resources,选择后缀为 nsg 的项,在 SETTING 中选择 Inbound security rules;添加一个rule如下,设置一个端口号,注意Service类型选择 Custom

终端登录,更新系统软件

打开一个终端程序,例如xshell,在 host 一栏填上VM对外的IP,然后用用户名和密码登录VM。

进入VM后,输入以下命令进行系统的更新操作:

sudo apt update
sudo apt dist-upgrade

配置Shadowsocks

安装 shadowsocks,shadowsocks 有 C 和 Python 两个版本。这里安装 C的版本(注意C版本目前不支持多端口实现多用户连接)。

在终端输入

sudo git clone https://github.com/shadowsocks/shadowsocks-libev

完成后,在当前目录下输入以下命令

cd shadowsocks-libev

sudo apt-get install --no-install-recommends build-essential autoconf libtool libssl-dev \
    gawk debhelper dh-systemd init-system-helpers pkg-config asciidoc xmlto

sudo dpkg-buildpackage -b -us -uc -i

cd ..
sudo dpkg -i shadowsocks-libev*.deb

如过程中出现某些依赖包没有安装,则使用sudo apt-get install命令进行安装。

编辑 shadowsocks 的 config.json 文件,

sudo vim /etc/shadowsocks-libev/config.json

按照如下配置,注意端口号和密码填写之前你设置好的。

为了优化 shadowsocks 的使用,输入

sudo vim /etc/sysctl.conf

删除原先的内容,再将下面的内容复制进该conf文件中(参考来源),

# max open files
fs.file-max = 51200
# max read buffer
net.core.rmem_max = 67108864
# max write buffer
net.core.wmem_max = 67108864
# default read buffer
net.core.rmem_default = 65536
# default write buffer
net.core.wmem_default = 65536
# max processor input queue
net.core.netdev_max_backlog = 4096
# max backlog
net.core.somaxconn = 4096

# resist SYN flood attacks
net.ipv4.tcp_syncookies = 1
# reuse timewait sockets when safe
net.ipv4.tcp_tw_reuse = 1
# turn off fast timewait sockets recycling
net.ipv4.tcp_tw_recycle = 0
# short FIN timeout
net.ipv4.tcp_fin_timeout = 30
# short keepalive time
net.ipv4.tcp_keepalive_time = 1200
# outbound port range
net.ipv4.ip_local_port_range = 10000 65000
# max SYN backlog
net.ipv4.tcp_max_syn_backlog = 4096
# max timewait sockets held by system simultaneously
net.ipv4.tcp_max_tw_buckets = 5000
# turn on TCP Fast Open on both client and server side
net.ipv4.tcp_fastopen = 3
# TCP receive buffer
net.ipv4.tcp_rmem = 4096 87380 67108864
# TCP write buffer
net.ipv4.tcp_wmem = 4096 65536 67108864
# turn on path MTU discovery
net.ipv4.tcp_mtu_probing = 1

# for high-latency network
net.ipv4.tcp_congestion_control = hybla

# for low-latency network, use cubic instead
# net.ipv4.tcp_congestion_control = cubic

保存退出即可。

配置fail2ban

出于安全考虑,为了防止有人对你的VM进行恶意登录操作,可以利用 fail2ban 这个小工具来限制用户的非法登录操作。

安装

sudo apt-get install fail2ban

输入

cd /etc/fail2ban/
# 创建本地配置文件
sudo vim jail.local

然后将jail.conf的内容拷贝至jail.local文件中,找到如下的内容,修改相应的字段。

其中bantime是指对非法登录的阻止时间,建议设为一天(86400秒);maxretry是指密码错误时尝试登入的最大次数,这里设为3次。

保存退出即可。

到这里VM上的配置工作基本完成,重启VM即可。

使用VPN服务

对于PC端,可以下载shadowsocks客户端。解压打开之后,如下:

输入VM的public IP地址,端口和密码,Encryption栏选择rc4-md5,OK即可。

之后你应该可以正常使用VPN服务了,不过要注意使用时长和使用流量,感觉Azure应该会单独进行计费。


【插播一条广告】

如需使用VPN服务,可邮件联系我。价格为每月7元,目前支持Windows / Linux(Ubuntu) / Mac / Android系统。

本文结束,感谢欣赏。

欢迎转载,请注明本文的链接地址:

http://www.jeyzhang.com/using-azure-to-set-up-vpn-service.html