2017-03-17 天气晴

今天在vultr上租了一个VPS,玩玩挺有意思,租VPS的一个重要用途就是搭建一个VPN服务,后续还将搭建一个frps做家中NAS的内网穿透。今天先整理下VPS上搭建VPN的步骤。

零、主机环境

1
vultr VPS + Ubuntu 16.04

一、安装VPN服务程序pptpd

更新软件仓库列表,下载安装VPN服务程序pptpd

1
2
apt-get update
sudo apt-get install pptpd

二、配置pptpd程序

打开配置文件,配置VPN内部网络,将pptpd.conf中如下两行配置打开注释并保存修改

1
2
3
sudo vi /etc/pptpd.conf
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

配置VPN登录的用户名密码列表,配置文件配置格式如下,username和password分别换成自定义的用户名密码,*表示允许该用户名密码在任何ip上登录VPN

1
2
sudo vi /etc/ppp/chap-secrets
username pptpd "password" *

配置DNS,取消注释ms-dns,修改DNS,例如,8.8.8.8和8.8.4.4

1
sudo vi /etc/ppp/pptpd-options
1
2
3
4
5
6
7
8
9
# If pppd is acting as a server for Microsoft Windows clients, this
# option allows pppd to supply one or two DNS (Domain Name Server)
# addresses to the clients. The first instance of this option
# specifies the primary DNS address; the second instance (if given)
# specifies the secondary DNS address.
# Attention! This information may not be taken into account by a Windows
# client. See KB311218 in Microsoft's knowledge base for more information.
ms-dns 8.8.8.8
ms-dns 8.8.4.4

三、开启内核IP转发

1
sudo vi /etc/sysctl.conf

取消注释net.ipv4.ip_forward=1,修改配置保存,执行如下语句是配置修改生效

1
sudo sysctl -p

注:如下命令也可以开启内核的IP转发功能,但是据说重启后将恢复关闭内核IP转发,具体原理未细究

1
echo 1 > /proc/sys/net/ipv4/ip_forward

四、配置IP转发规则

安装iptables,配置NAT转发规则

1
2
sudo apt-get install iptables
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens3 -j MASQUERADE

第二行命令应该是指将 192.168.0.xxx(192.168.0.0/24)的子网的所有ip包都做该的nat的转发规则转发到ens3的网卡上,ens3是本文中服务器上连接外网的网卡设备名,本文使用的VPS服务器的外网网卡为ens3,其他环境中该名字以ifconfig中外网网卡的名称为准

重启服务,应用配置

1
sudo service pptpd restart

五、开机启动生效NAT转发规则和启动pptpd

设置开机启动
打开/etc/rc.local文件,在exit 0语句前加入:

1
2
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens3 -j MASQUERADE
sudo service pptpd start