教您30分钟打造Linux的VPN服务器

VPN(Virtual Private Network,虚拟专用网络)是专用网络的延伸,它可以通过共享Internet或公共网络连接模拟点对点专用连接的方式,在本地计算机和远程计算机之间发送数据 。
它具有良好的保密性和不受干扰性,使双方能够进行自由而安全的点对点连接 。下面介绍一种快速构建VPN服务器的方法 。
安装软件
1.安装PPP
安装PPP(Point-to-Point Protocol,点到点协议)2.4.2以上的版本,可以到http://sourceforge.net/project/showfiles.php?group_id=44827下载ppp-2.4.3-0.cvs_20040527.1.i386.rpm软件包 。
安装命令如下:
#rpm -Uvh ppp-2.4.3-0.cvs_20040527.1.i386.rpm
2.安装内核MPPE补丁
安装内核MPPE(Microsoft Point to Point Encryption,微软点对点加密)补丁需要根据内核选择相应的版本 。笔者使用的Linux内核是2.4.20-31.9版本,可以到http://pptpclient.sourceforge.net/mppe/kernel-mppe-2.4.20-31.9.i686.rpm下载相应的kernel-mppe-2.4.20-31.9.i686.rpm软件包 。安装命令如下:
【教您30分钟打造Linux的VPN服务器】#rpm -ivh kernel-mppe-2.4.20-31.9.i686.rpm
用以下命令检查内核MPPE补丁是否安装成功:
#modprobe ppp-compress-18

3.检查PPP是否支持MPPE
用以下命令检查PPP是否支持MPPE:
#strings "/usr/sbin/pppd"grep -i mppewc --lines
如果以上命令输出为“0”则表示不支持;输出为“30”或更大的数字就表示支持 。
4.安装PPTPD
到http://sourceforge.net/project/showfiles.php?group_id=44827下载pptpd-1.1.4-b4.i386.rpm软件包,并安装 。
# rpm -ivh pptpd-1.1.4-b4.i386.rpm
修改配置文件
1.修改modules.conf文件
编辑/etc/modules.conf配置文件,加入如下内容:
alias net-pf-47 ip_gre
2.修改pptpd.conf文件
编辑/etc/pptpd.conf配置文件,添加如下内容,确定本地VPN服务器的IP地址和客户端登录后分配的IP地址范围 。
debug
option /etc/ppp/options.pptpd
localip 192.168.0.254 #本地VPN服务器的IP
remoteip 192.168.1.1-254 #客户端被分配的IP范围
3.修改options.pptpd文件
编辑/etc/ppp/options.pptpd配置文件,替换成如下内容:
auth
lock
debug
proxyarp
lock
name rh9vpn #VPN服务器的名字
multilink
refuse-pap
refuse-chap
refuse-mschap
refuse-eap
refuse-mschap-v2
require-mppe
ms-wins 192.168.1.2 #把想要在网络邻居中看到的机器的IP填写到这里
ms-dns 192.168.1.2 #DNS服务器地址
dump
logfile /var/log/pptpd.log #日志存放的路径
4.修改chap-secrets文件
编辑/etc/chap-secrets配置文件,添加如下内容:
# client server secret IP addresses
"test@gd.cn" * "test" *
上面第二行代码的四项内容分别对应第一行中的四项 。“test@gd.cn”是Client端的VPN用户名;“server”对应的是VPN服务器的名字,该名字必须和/etc/ppp/options.pptpd文件中指明的一样,或者设置成“*”号来表示自动识别服务器;“secret”对应的是登录密码;“IP addresses”对应的是可以拨入的客户端IP地址,如果不需要做特别限制,可以将其设置为“*”号 。
5.设置IP伪装转发
只有设置了IP伪装转发,通过VPN连接上来的远程计算机才能互相ping通,实现像局域网那样的共享 。用下面的命令进行设置:
#echo 1 > /proc/sys/net/ipv4/ip_forward
可以将这条命令放到文件/etc/rc.d/rc.local里面,以实现每次开机时自动运行该命令 。
6.打开防火墙端口
将Linux服务器的1723端口和47端口打开,并打开GRE协议 。
#/sbin/iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp --dport 47 -j ACCEPT
#/sbin/iptables -A INPUT -p gre -j ACCEPT
到这里Linux服务器的设置就完成了,下面将利用Windows客户端进行测试 。

推荐阅读