下面是笔记,进入正题,测试2台pptp均通过。
在BuyVM Debian系统中安装PPTP VPN (OpenVZ)
新版的 OpenVZ 已经支持 ppp device 了。
参见资料 http://wiki.openvz.org/PPP_in_container
一、安装环境检测
首先要检测你的VPS是否开启了TUN和PPP
buyvm默认开启了的 其他主机商的 可以测试下 不行的话联系你的提供商,直接询问。
自行检测的方法:
检测TUN,命令如下:
cat /dev/net/tun
返回:cat: /dev/net/tun: File descriptor in bad state 说明正常
检测是支持PPP模块,命令如下:
cat /dev/ppp
返回:cat: /dev/ppp: No such device or address 说明正常
返回:“Permissiondenied”则不通过。
如果不通过测试,尝试运行以下命令后再试一下。
rm /dev/ppp
mknod /dev/ppp c 108 0
上面的2条必须都通过,才可安装pptp。
如果无法通过,只能去跟客服申请为你的VPS打开TUN/TAP/PPP功能了。
二、安装pptp
apt-get update
apt-get install pptpd
根据提示按Y即可。
三、配置PPTP服务器
1)编辑/etc/pptpd.conf
输入 vi /etc/pptpd.conf
注意:简单提下vim这个编辑器的用法。vi/vim命令是一个编辑器,类似WIN下的notepad记事本。vi某文件后,再按i,左下角会显示insert,这时候才可以修改这个文件。修改好后,按esc左下角insert消失,再输入:x,回车,则存盘退出,或者输入:wq,回车,也是存盘退出;如果想不存盘退出,则输入:q!,回车即可。
找到
# (Recommended)
#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
去掉#并更换IP段,这里要注意网段,可以写个不常用网段,以免出现冲突和莫名的错误。
如,我的写的是:
localip 192.168.52.1
remoteip 192.168.52.234-238,192.168.52.245
注:此处的remoteip指定的IP范围是用来给远程连接使用的。如果您远程访问VPN,VPN就会在remoteip范围内分配一个ip地址给你。此处的IP段可以任意,但是尽量注意不要跟本地网络的IP段有冲突。
2)修改DNS服务器
编辑/etc/ppp/options,添加如下内容:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
文件很长,可以在文件顶部添加即可。
3)添加PPTP VPN用户
编辑/etc/ppp/chap-secrets 添加如下内容:
格式: username pptpd password *
根据您的需要添加账号,每行一个。
格式:“用户名 pptp 密码 ip地址”,中间用空格隔开
如果不写IP,注意最后面的*星号,一定要添加上。
如 我添加的账号
test pptpd 5211314abc *
这里test是账号,5211314abc是密码,请更换为你自己的,注意空格。
4)修改内核设置,使其支持转发。
编辑/etc/sysctl.conf
将:
#net.ipv4.ip_forward=1
改成:
net.ipv4.ip_forward=1
5)添加iptables转发规则
安装iptables
apt-get install iptables
如果已经安装可以跳过
对应OpenVZ架构,适合于OpenVZ架构的VPS,12.34.56.78为您VPS的公网IP地址
iptables -t nat -A POSTROUTING -s 192.168.52.0/24 -j SNAT
--to-source 12.34.56.78
(OpenVZ,192.168.52.0一定要和上面设置的IP段匹配,12.34.56.78为你的VPS的公网IP地址)
这步可以不执行,因为下面要设置转发规则的文件一并写入。
6)重启 pptpd
sudo /etc/init.d/pptpd restart
7)设置pptp和iptables随系统启动
iptables规则需要保存到开机运行,否则重启后就不行了
输入 vi /etc/pptpdfirewall.sh
加入:
sudo /sbin/iptables -t nat -A POSTROUTING -s 192.168.52.0/24 -j
SNAT --to-source 12.34.56.78
sudo /sbin/iptables -A FORWARD -s 192.168.52.0/24 -p tcp -m tcp
--tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356
这里ip段也是刚才设置的IP段,不要乱写。后面12.34.56.78更改为你自己的公网IP。
保存。
然后输入命令
chmod 755 /etc/pptpdfirewall.sh
再输入
vi /etc/init.d/rc.local
在最后一行加上
sh /etc/pptpdfirewall.sh
保存,完毕!
然后 reboot 重启VPS。
开始测试VPN吧。
错误处理
1.pptp拨号如果提示619错误,执行:
mknod /dev/ppp c 108 0
如果提示文件已经存在,先删除再重新执行;如果还是619错误,多半就是NAT出口不支持pptp或者禁止了,这个就自己无法解决了。
然后重启VPS
如果还是得不到解决,有人搭建pptp时就遇到这样的情况,这时候可以打开/var/log/messages文件,查看程序错误,如安装时候错误如下:
/usr/sbin/pppd: The remote system is required to authenticate
itself
/usr/sbin/pppd: but I couldn't find any suitable secret (password)
for it to use to do so.
错误提示是认证错误,这里千万注意第二步设置用户时候的格式。
执行以下命令 vi /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
#
client server
secret IP
addresses
"username" pptpd "password" *
问题得到解决!
或者设置iptables规则是拷贝的文件的时候少了字符,一般拷贝的时候容易第一个字母自动消失,我在拷贝粘贴中多次遇见丢失字符现象。
2.如果出现错误800。
修改/etc/ppp/options文件,注释掉以下内容,修改如下:
#require-mppe-128
取消连接加密,并且在客户端取消加密设置。
据我测试,buyVM的openVZ是支持mppe128加密的。
但是也许是Buffalo - OpenVZ - NY BuyVM 大陆访问速度有些慢,有时候也会提示800错误。
注意,不要用网上所谓的给require-mppe-128加注释的方法。这个方法治标不治本,因为mppe是用于加密的,注释了等于没有加密,数据还是公开的,这样可能平时能访问一些网站,但是关键时刻和关键网站就无能为力了,因为数据照样能被过滤的。不加密的VPN一点用处都没有,还不如直接用SSH的好。