ubuntu 16.04 搭建 pptp vpn

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明文章来自http://blog.csdn.net/aaronjny https://blog.csdn.net/aaronjny/article/details/74357535

ubuntu 16.04 下搭建 pptp vpn


引言

生活中,我们可能经常会碰到这三种情况:

(1)有一台外网的机器(假设为A),和一台内网的机器(假设为B),且该内网机器能够从外网访问到。我们想要从外网的机器A,借助该内网机器B,访问内网的其他资源。

(2)有多台内网机器,且其中只有一台可以访问外网(假设为A),其他机器均只能在内网联通(假设为B-Z)。我们想要从任意一台不能访问外网的机器(比如B),借助可以访问外网的机器A,访问外网资源。

(3)科学上网,翻越GFW,这种情况类似于情况(2),A机器是能够访问国外网络的主机,B-Z机器是国内主机,B-Z可以通过A科学上网。其实情况(3)可以算是情况(2)的一种,毕竟我大天朝是个超大局域网= =。。

碰到这样的情况,我们就可以使用vpn来实现,在情况(1)中,我们要在机器B上搭建vpn服务,在情况(2)和情况(3)中,则是在机器A上搭建vpn服务。其他机器通过vpn进行访问即可。

博主遇到的情况属于第二种。博主现役大三狗,学校宿舍宽带每天夜里12点断网。学校的校园网是不断网的,需要账号登陆才能访问外网,不登陆就只能访问内网。然而账号在宿舍区是登录不上去的。。。(我能怎么办,我也很绝望啊)

然而,我在大学生创新实验室(我们学校给学生提供的用于科技竞赛训练的场所)由一台机子,是可以登录账号的。于是乎,突发奇想,用实验室的机子搭一个vpn,再用寝室的机器通过内网连过来不就行了么?!再接着,就有了这篇博文。。。记录搭建方法以及我遇到的坑点。


搭建方法

1.安装pptp以提供VPN服务

输入Ctrl+Alt+T打开一个终端,在里面输入

sudo apt-get install pptpd

很快就安装好了。

2.对pptpd.conf中的配置信息进行修改

在终端中输入命令,使用vim打开pptpd.conf:

sudo vim /etc/pptpd.conf 

如果不会使用vim,并且ubuntu主机上装有图形用户界面,可以使用gedit进行编辑:

sudo gedit /etc/pptpd.conf 

如果主机上没有安装gedit,可以通过下面的命令进行安装:

sudo apt-get install gedit

在打开的内容里面找到这两行,并取消掉注释(PS1:取消注释就是删除行首的#,下同)(PS2:直接找不好找的话,可以使用文本编辑器的查找功能):

localip  192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

分别为创建vpn时的主机ip和连接vpn的其他主机使用的ip段,可以自行修改。

注意,这里的ip并不是指外网ip或者当前局域网ip,而是指创建VPN(虚拟专用网络)会分配的ip地址。一般这个可以不用修改。

3.修改chap-secrets以分配vpn账号

连接pptp vpn是需要使用账号登陆的,这个账号由我们自己配置。

首先,打开/etc/ppp/chap-secrets

sudo vim /etc/ppp/chap-secrets 

sudo gedit /etc/ppp/chap-secrets 

打开之后,我们在文档末尾添加新的账号,格式如下:

用户名 pptpd 密码 *

如:

zhangsan  pptpd  123456  *

末尾的*表示可以使用任意IP连入,如果你要设置指定IP才能连接到vpn,可以将*替换成对应的IP。

如果要添加多个账号,只需要换行,然后按照格式继续输入即可。

4.设置vpn的ms-dns

接下来,我们要配置vpn使用的dns,这里,我就碰到了一个大坑,后面说。

首先,我们打开/etc/ppp/pptpd-options

sudo vim /etc/ppp/pptpd-options 
或
sudo gedit /etc/ppp/pptpd-options 

在打开的文档中找到ms-dns,并取消掉注释,并在后面填上适当的dns。

一般来说,内网借助vpn访问外网,只需要在这里填上外网的dns就可以了,比如谷歌的dns8.8.8.88.8.4.4(情况(3)这样配置ms-dns就可以了,可以直接到下一步了):

ms-dns 8.8.8.8
ms-dns 8.8.4.4

我遇到的坑点就在这里,我填上谷歌的dns是无法访问外网的。崩溃啊,卡了我好久。各种查找资料,以及对学校的校园网的架构进行分析后,发现原因可能如下:

实验室的那台主机并不是直接访问外网,它仍是校园网的各级子网的一部分,它的网络请求是要查找校园网这个局域网内的dns,经过校园网路由发出去的。

于是,我就去找了校园网的dns主机地址,并填入到ms-dns后面,测试一下,问题解决了= =

跟我相同情况的同学,可以去找一下自己学校的dns服务器的地址,并进行更改。

5.开启内核IP转发

在终端里输入:

sudo vim /etc/sysctl.conf
或
sudo gedit /etc/sysctl.conf
(后面就不就gedit的例子了,大家应该都知道是怎么回事了,不会用vim就用gedit替代就行了)

在打开的文档中找到

#net.ipv4.ip_forward=1

取消掉注释(即删除行首的#)。
保存之后,在终端中输入命令使我们的修改生效:

sudo sysctl -p

6.配置iptables

首先,如果没有安装iptables,要先进行安装,安装过的可以跳过:

sudo apt-get install iptables

接下来,清除iptables里旧的规则(这里针对之前装过pptp,但是没配置好的同学。如果是从我这个教程开始的,并且新装的iptables,这一步可以跳过)。

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

然后,允许gre协议以及1723端口、47端口:

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.0.0/24 -o eno1 -j MASQUERADE

注意,上面的eno1是我连接网络的网卡的名称,不同机器这个可能是不一样的。如果不清楚是哪一块网卡联网以及网卡的名称,可以在终端输入ifconfig来查看。

7.重启服务,使我们的配置生效

在终端中输入以下指令重启服务:

sudo service pptpd restart

这个时候,其他机器使用我们之前配置的账号密码,已经可以连接上VPN,并通过VPN来访问外网了。

8.vpn代理上网慢解决方案

在步骤7完成后,vpn已经可以使用了,但是却可能碰到通过vpn上网网速奇慢的情况,我搭建完就是这样的。碰到这种情况,解决方案如下:

打开终端,输入以下命令

sudo -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356

重启vpn服务:

sudo service pptpd restart

相关原理戳这里,参考自CentOS下pptp搭建vpn代理上网很慢的解决办法


结束语

至此,ubuntu上的pptp vpn服务搭建完成。

搭建过程中,碰到了很多坑点,但大部分都很轻松就解决了。只有dns那个坑点,把我卡了很久很久,各种找资料、猜原因,才解决掉。经过此事,算是对vpn的原理和校园网的架构有了更深的认识,在寝室也可以保持不断网了,算是有所收获。要学的东西还是很多啊。

其实,vpn我一年前就搭起来了,只是拖到了现在才想写一篇博客,2333。。。


参考资料

[1] Ubuntu14.04下搭建VPN服务
[2] CentOS下pptp搭建vpn代理上网很慢的解决办法

猜你喜欢

转载自blog.csdn.net/aaronjny/article/details/74357535