Ubuntu 搭建VPN服务,pptpd安装配置

摘要:在 Ubuntu 上搭建 VPN 服务器的方法非常多,比较著名的有 PPTP, L2TP/IPSec 和 OpenVPN。这三种方式中后两者的安全性比较好,但配置较麻烦。...

作者:LoveCode标签:Ubuntu,VPN,pptpd

在 Ubuntu 上搭建 VPN 服务器的方法非常多,比较著名的有 PPTP, L2TP/IPSec 和 OpenVPN。这三种方式中后两者的安全性比较好,但配置较麻烦。其中 OpenVPN 在 Windows/Mac 平台上还需要额外的客户端。而 L2TP/IPSec 方式虽然比较好,但我配置后,虽然 Windows 和 Linux 用户没有问题,但 Mac/iPhone 却始终无法连上, PPTP 是这三者中配置最容易的方式,而且由于 Windows/Mac 系统中都内建相应的客户端,使用起来非常方便。


采用PPTP搭建VPN,优点是配置简单快捷。将亲身过程记录下来供亲们参考,并将过程中遇到的问题也一一列举出来解决方式

直接上步骤: 

1.第一步需要安装PPTP,以用来提供VPN服务.

apt-get update
sudo apt-get install pptpd


2.装好了之后我们需要进行配置一下以让它可以使用

sudo vi /etc/pptpd.conf

#取消掉以下2 行的注释:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
#分别是通过VPN连接后主机和客户端所使用的IP,可以自行修改。注意这个IP在下面还会用的到


3.然后我们需要分配账号给自己使用

sudo vi /etc/ppp/chap-secrets
#这个是用户列表文件,在里面按如下格式添加账户:
username  pptpd  "password"  *
#username为你的用户名,pptpd服务器名字,password为你的密码,密码用引号引起,最后的*号表示允许在任意IP连接到服务

#格式如下:
#按一行四列添加账号、服务器名、密码和IP限制,即:
#第一列是用户名
#第二列是服务器名(默认写pptpd 即可,注意与 pptpd-options 文件保持一致)
#第三列是密码,第四列是 IP 限制(不做限制用 * )


4.至此服务弄好了,如果你:

sudo service pptpd restart

一下,然后找一台 Windows 电脑,新建个 VPN 链接,地址填服务器的 IP(或域名),用户名密码填刚才设置好的,域那项空着(如果你在 pptpd-options 中设置了,这里就保持一致),点连接就可以了。正常情况下您应该能够建立与服务器的 VPN 链接了。但是连接了之后会发现还访问不了外网。然后我们需要让他能访问外网。首先,

sudo vi /etc/ppp/pptpd-options

找到ms-dns,取消掉注释,改成你喜欢的DNS比如8.8.8.8,8.8.4.4 


5.我们要开启内核IP转发(TCP/IP策略配置)

sudo vi /etc/sysctl.conf
#取消掉 net.ipv4.ip_forward=1 这一行的注释.

然后执行
sudo sysctl -p
#使修改后的文件配置立即生效。


6.然后我们需要安装iptables,用来实现请求的NAT转发

sudo apt-get install iptables

#然后开启NAT转发.
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

192.168.0.0/24是你在上面设置的IP段,让这个段转发 注意eth0是你连接外网的那块网卡,不一定是0也有可能是1或者看你的机器哪块网卡连的外网了。这样就以NAT的方式请求外网的东西了。不知道你的机器哪块网卡连的外网的话ifconfig一下看看哪个网卡是外网IP就知道了。 

但是,只是这样,iptables 的规则会在下次重启时被清除,所以我们还需要把它保存下来,方法是使用 iptables-save 命令:

sudo iptables-save > /etc/iptables-rules

然后修改 /etc/network/interfaces 文件,找到 eth0 那一节,在对 eth0 的设置最末尾加上下面这句:

pre-up iptables-restore < /etc/iptables-rules

这样当网卡 eth0 被加载的时候就会自动载入我们预先用 iptables-save 保存下的配置。 


7.最后,我们需要重启服务,让配置生效 .

sudo service pptpd restart
#查看pptpd是否在运行
netstat -alpn | grep :1723


8.当然,也许你按照我的方法做了,还是无法成功,那么下面总结一些我碰到的问题和解决方案:

无法建立 VPN 连接 安装好 pptpd 并设置后,客户端还是无法建立到服务器的连接。造成的原因可能有以下几种:  

  1. 服务器端的防火墙设置:PPTP 服务需要使用 1723(tcp) 端口和 gre 协议,因此请确保您的防火墙设置允许这两者通行。开放1723端口和gre:

sudo  iptables -I INPUT -p tcp --dport 1723 -m state --state NEW -j ACCEPT
sudo  iptables -A INPUT -p gre -j ACCEPT

2.如果服务器在路由器后面,请确保路由器上做好相应的设置和端口转发。  

3.如果服务器在路由器后面,那么请确保你的服务器支持 VPN Passthrough。  

4.如果客户端在路由器后面,那么客户端所使用的路由器也必须支持 VPN Passthrough。其实市面上稍微好点的路由器都是支持 VPN Passthrough 的,当然也不排除那些最最最便宜的便宜货确实不支持。

当然,如果你的路由器可以刷 DD-Wrt 的话就刷上吧,DD-Wrt 是支持的。 能建立链接,但“几乎”无法访问互联网 这里我使用“几乎”这个词,是因为并不是完全不能访问互联网。


症状为:

1.打开 Google 搜索没问题,但其它网站均无法打开;

2.SSH 可用,但 scp 不行;ftp 能握手,但传不了文件。我就遇到了这种情况,仔细 Google 后发现原来是 MTU 的问题,用 ping 探测了一下果然是包过大了。知道问题就好办了,我们可以通过 iptables 来修正这一问题。具体原理就不讲了,需要的自己 Google。这里只说解决方案,在 filter 表中添加下面的规则:

sudo iptables -A FORWARD -s 10.100.0.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1200

上面规则中的 1200 可以根据你的实际情况修改,为了保证最好的网络性能,这个值应该不断修改,直至能保证网络正常使用情况下的最大值。 


好了,至此,一台单网卡 pptp-server 就算完成了。

CopyRight © 2017 荒山本的官方网站 粤ICP备16049175号 All Right Service 网站地图(xml) 网站地图(html)