基于openvz的vps搭建vpn

By | 2013/02/10

网上很多教程都写到采用openvz虚拟技术的vps无法使用pptpd搭建vpn,而只能采用openvpn才可以。其实经过测试并不是这样,在openvz上完全可以搭建vpn的,只不过有几个条件。

1.验证vps是否支持pptpd的安装

网上教程一般写道先执行下面这条命令:
modprobe ppp-compress-18 && echo ok(用模块方式支持MPPE加密模式浏览,如果内核支持则显示ok)。事实上,我们完全可以关闭mppe的加密方式(方法为修改/etc/ppp/options.pptpd文件,在require-mppe-128字段前面加#即可)。因此这个绝对不是我们验证是否能启用vps的vpn功能的一个因素。正确的验证命令为:

[root@linux ~]#cat /dev/ppp
cat: /dev/ppp: No such device or address
[root@linux ~]# cat /dev/net/tun
cat: /dev/net/tun: File descriptor in bad state

蓝色部分是要执行的命令,下面的是相应命令返回的结果,如果你运行的结果跟上面一样,那么恭喜你,基本上已经说明这个vps可以安装pptpd。

2.安装vpn

首先安装必要的支持包ppp和iptables(一般情况下iptables都是安装过的)

yum install -y ppp iptables

上面的命令会同时安装ppp和iptables,安装好后我们直接安装pptpd的官方最新版,通过查看官方资源列表我安装的是redhat5的:

[root@linux ~]# rpm -ivh http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
Retrieving http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
warning: /var/tmp/rpm-xfer.IJhyPK: Header V3 DSA signature: NOKEY, key ID 862acc42
Preparing… ########################################### [100%]
1:pptpd ########################################### [100%]

3.配置

1.配置pptpd

vi /etc/pptpd.conf

在这个文件的最下面可以找到下面的字段,去掉前面的#号,ip地址根据需要进行设置:
#设置vpn服务的内网ip,我个人使用的是1.1.1.1,默认的192.168的地址可能跟我们经常使用的内网一样,为避免路由出问题就用个不常用的地址,不过因为我使用的是非保留地址,也不推荐我这样设置
localip 1.1.1.1
#设置客户端动态获取到的ip地址,ip设置可以使用“1.1.1.1-128”这样的格式和用“,”分割的多个ip地址,且可同时使用。
remoteip 1.1.1.2-254,192.168.0.245

2.设置ppp
vi /etc/ppp/options.pptpd
找到ms-dns部分,把前面的#去掉,并修改dns如下,下面使用的是google的,你可以根据你的需要修改:
ms-dns 8.8.8.8
ms-dns 8.8.4.4

3.设置vpn密码
vim /etc/ppp/chap-secrets

6、修改内核设置,使其支持转发。编辑/etc/sysctl.conf文件:
vim /etc/sysctl.conf
将“net.ipv4.ip_forward”改为1:
net.ipv4.ip_forward=1
同时在“net.ipv4.tcp_syncookies = 1”前面加# :
# net.ipv4.tcp_syncookies = 1

保存退出,并执行下面的命令来生效它:
sysctl -p
7、添加iptables转发规则。
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -j SNAT –to-source 12.34.56.78
(OpenVZ, 192.168.80.0一定要和上面设置的IP段匹配,12.34.56.78为你的VPS的公网IP地址)
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
(XEN)
注意:如果 iptables 设置错误,可以直接更改 vim /etc/sysconfig/iptables 该文件即可。
保存iptables转发规则:
/etc/init.d/iptables save
重启iptables:
/etc/init.d/iptables restart
8、重启pptp服务。
/etc/init.d/pptpd restart
9、设置开机自动运行服务。
chkconfig pptpd on
chkconfig iptables on
如果正常,到这里就OK了,不用管下面的错误了。否则请看错误说明。
错误1:如果出现错误619则输入命令:
rm -r /dev/ppp
mknod /dev/ppp c 108 0

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据