此教程支持openvz和XEN环境的debian和ubuntu系统
XEN Debian 6.0 Squeeze (32bit) 实测通过
XEN Ubuntu 12.04 LTS (32bit) 实测通过
OPENVZ Debian 6.0 实测通过
先检测VPS是否支持搭建VPN
执行以下两条命令
cat /dev/net/tun
返回结果:
cat: /dev/net/tun: File descriptor in bad state
cat /dev/ppp
返回以下结果:
cat: /dev/ppp: No such device or address
如果不是,那就先发ticket联系主机商说你要建pptpvpn,让他把建pptpvpn所有需要的服务都开启,xen默认都开启了,openvz的tun和ppp有的主机商不是默认开启的,如果vps是SolusVM面板,一般在面板里也是可以开启TUN和PPP的
1.安装 pptpd
apt-get update
apt-get install pptpd
安装nano(如果你能够熟练的使用vi,可以省略这一步)
2.配置 pptpd
2.1.修改 nano /etc/pptpd.conf 如果没有安装nano,下载安装apt-get install nano
#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
去除前面的 #
CTRL+O修改 回车保存 CTRL+X 退出
这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置
2.2.添加PPTP VPN用户
修改 nano /etc/ppp/chap-secrets 增加
username pptpd password *
其中username为你要添加的VPN帐号的用户名,password为你VPN帐号的密码
最后那个星号是说允许从任何IP地址联接,如果你想单独设定IP地址也可以
2.3.修改DNS服务器
修改 nano /etc/ppp/options 加入
ms-dns 8.8.8.8
ms-dns 8.8.4.4
可以自定,这里使用的是Google DNS,推荐使用
2.4.开启ip转发
编辑nano /etc/sysctl.conf文件,去掉net.ipv4.ip_forward=1前的注释#
保存退出,并执行下面的命令来生效它:
sysctl -p
2.5.重启pptpd服务
/etc/init.d/pptpd restart
3.安装iptables(大多数都是已安装)
apt-get install iptables
如果已经安装可以跳过
3.1.开启iptables转发
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
//以上为XEN VPS命令,eth0是物理网卡,用命令 ifconfig 查看,如果显示的是
venet0,就用venet0替换掉上面的eth0
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o venet0 -j SNAT --to-source xxx.xxx.xxx.xxx
//以上为OpenVZ VPS命令, xxx.xxx.xxx.xxx 是你 vps 的 ip 地址。
设置MTU大小,解决部分网站无法访问的情况(MTU=MSS+20+20)
iptables -A FORWARD -p tcp –syn -s 192.168.0.0/24 -j TCPMSS –set-mss 1356
保存iptables设置
iptables-save
测试无误后再写入规则:
设置开机自动启用iptables规则,编辑/etc/rc.local文件,(要在exit 0的之上)
nano /etc/rc.local加入
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE(xen vps)
iptables -A FORWARD -p tcp –syn -s 192.168.0.0/24 -j TCPMSS –set-mss 1356
重启pptpd服务
service pptpd restart
就可以了这样设置以后VPS即使重启了pptpftp也会自动运行
连接错误解决方案
错误619 ,执行命令
mknod /dev/ppp c 108 0
然后重启VPS
错误800 ,则修改/etc/ppp/pptpd-options文件,在require-mppe-128字段前面加#即可,并将本地的windows系统的vpn属性改为可选加密
注意事项:
vps 搭建VPN教程,全程参考本教程执行,则百分百可行。如果出现本地可成功连接VPN,但无法访问网络。问题出现在iptables转发规则上面,
请核对iptables转发IP段地址与lpptpd.conf中localip IP段在同一个。这里是以192.168.0.1为例,你也可以更改为192.168.215.1,iptables
转发规则上面则为192.168.215.0
另外要核对物理网卡是否为venet0
2016/10/01更新619错误的解决办法:
看到网上好多攻略;
1.rm /dev/ppp
mknod /dev/ppp c 108 0
2.还不管用的(有时出现错误651),/var/log/messages 查看日志,最后发现:
Jan 2 07:26:11 fr pptpd[1604]: CTRL:Starting call (launching pppd, opening GRE) Jan 2 07:26:11 fr pppd[1605]:Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.5 Jan2 07:26:11 fr pptpd[1604]: GRE: read(fd=6,buffer=804fa20,len=8196) from PTYfailed: status = -1 error = Input/output error, usually caused by unexpectedtermination of pppd, check option syntax and pppd logs Jan 2 07:26:11 fr pptpd[1604]:CTRL: PTY read or GRE write failed (pty,gre)=(6,7) Jan 2 07:26:11 frpptpd[1604]: CTRL: Client X.X.X.X control connection finished
logwtmp插件版本不兼容出错了!
vi /etc/pptpd.conf
找到logwtmp,在前面加#
service pptpd restart
仍然报错无法登陆;
3.tail -100f /var/log/messages
Aug 12 20:25:34 localhost pppd[9614]: The remote system is required to authenticate itself
Aug 12 20:25:34 localhost pppd[9614]: but I couldn’t find any suitable secret (password) for it to use to do so.
错误提示是认证错误,这里千万注意第二步设置用户时候的格式。
网上给解决方法:在配置文件/etc/ppp/options末尾添加上noauth即可。好像还是上不去继续报错……
网上也有怀疑路由设置问题,这次排除下来不是路由引起的;
最终是用户设置用户名加上引号就可以欢快上去了
vim /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
“username” pptpd “password” *
问题得到解决!
peer from calling number 10.10.10.91 authorized
Aug 12 20:32:21 localhost pppd[9913]: MPPE 128-bit stateless compression enabled
Aug 12 20:32:24 localhost pppd[9913]: Cannot determine ethernet address for proxy ARP
Aug 12 20:32:24 localhost pppd[9913]: local IP address 192.168.6.1
Aug 12 20:32:24 localhost pppd[9913]: remote IP address 192.168.6.2
有时候一个标点符号,一个字符都会导致莫名问题,出问题找日志总有办法解决的~
vps上安装vpn pptp 详细教程:等您坐沙发呢!