Ubuntu16.04 搭建VPN服务

安装VPN

PPTP协议

我们要使用PPTP协议搭建VPN,首先验证服务器是否支持MPPE模块

> sudo modprobe ppp-compress-18 && echo MPPE is ok

如果输出:MPPE is ok,则说明服务器的linux内核支持MPPE模块,否则请升级linux内核到2.6.15以上版本。

安装PPTP

> sudo apt-get update
> sudo apt-get install pptpd

配置PPTP

配置网关和IP分配段

> sudo vim /etc/pptpd.conf =======
localip 192.168.1.1
remoteip 192.168.1.10-99 =======
  • localip:是VPN虚拟网络的网关,我们设置成了192.168.1.1。
  • remoteip:表示VPN最多能分配90个IP。

修改DNS

> sudo vim /etc/ppp/pptpd-options ======
ms-dns 114.114.114.114
ms-dns 8.8.8.8 ======

设置用户名密码

> sudo vim /etc/ppp/chap-secrets ======
username pptpd password * ======

上面依次对应:用户登录名,服务,密码,ip。

重启服务

> sudo /etc/init.d/pptpd restart

部署IP转发

> sudo vim /etc/sysctl.conf ======
net.ipv4.ip_forward=1 ======

> sudo sysctl -p

允许服务器ip路由的转发,否则服务器将不能转发接收到的外网的VPN请求数据包。

安装iptables

> sudo apt-get install iptables

开启gre协议

开启gre协议,并打开服务器47,1723号端口。使用VPN需要开启gre协议,而gre协议需要使用服务器的47和1723号端口

> sudo iptables -A INPUT -p gre -j ACCEPT
> sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
> sudo iptables -A INPUT -p tcp --dport 47 -j ACCEPT

开启NAT转发

> sudo iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -o ens192 -j MASQUERADE
> sudo service pptpd restart

注:

  1. 192.168.1.1是pptp配置中的 localip
  2. POSTROUTING参数表示,指定当数据包离开服务器的时候,对数据包进行处理
  3. ens192 表示服务器网卡,可以通过ifconfig 查看
  4. MASQUERADE 表示服务器把数据从ens192网卡封包出去

通过上面的指令,iptables做了这样一件事情:将所有VPN分配的IP(192.168.1.1-255)的 数据包的源ip改成服务器的ip。

如果不做这个操作,服务器通过VPN传回的数据包将不包含服务器自己的源ip,所以远程访问主机的回复ip包会丢失。

如果输错了iptables的转发规则,则可以清空iptables转发规则:

> sudo iptables -F
> sudo iptables -X
> sudo iptables -t nat -F
> sudo iptables -t nat -X

相关文章

1.安装过程出现0x00000000指令引用的0x00000000内存该内存不能为written 如果你安装的是inux系统 需要在...
写在全面:如果根据以下教程涉及到只读文件需要更改文件权限才能需修改文件内容,参考我的另一篇博客:...
写在前面:以下步骤中需要在终端输入命令,电脑端查看博客的朋友可以直接复制粘贴到终端,手机端查看的...
ubuntu16.04和18.04更换国内源 写在前面:安装好ubuntu双系统后,默认的软件更新源是国外的,在国内使用...
ubuntu双系统启动时卡死解决办法(在ubuntu16.04和18.04测试无误) 问题描述: 在安装完ubuntu双系统后...
又来造轮子了。。。。。。。。。。。。。。。。 今天使用w3af向文件中写入的时候,发现没有write权限,...