> RedHat >

在Redhat Linux上 PPTP VPN Server 的安装配置

 本章描述内容如下表所示。
标题 内容
1.1 安装前的准备工作 介绍在安装前所需的准备工作。
1.2安装PPTP VPN Server 介绍如何安装PPTP VPN Server。
1.3 配置PPTP VPN Server 介绍如何配置PPTP VPN Server。

1.1 安装前的准备工作

1.1.1 获取PPTP VPN Server安装包

确保已取得PPTP VPN Server的相关安装文件;
基于RedHat Linux AS4 Update7操作系统所需软件包:
-dkms-2.0.6-1.noarch.rpm
-kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
-ppp-2.4.3-5.rhel4.i386.rpm
-pptpd-1.3.3-1.rhel4.i386.rpm
基于RedHat Enterprise Linux 5 Update2操作系统所需软件包:
- pptpd-1.3.3-1.i386.rpm

1.1.2 检查操作系统版本

执行命令# cat /etc/redhat-release,检查操作系统版本信息。
屏幕显示信息为
Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
表示已是符合要求的RHEL AS 4.0以上版本。
Red Hat Enterprise Linux Server release 5.2 (Tikanga)
表示已是符合要求的RHEL 5.0以上版本。

1.2 安装PPTP VPN Server

1.2.1 基于RHEL AS 4.7的安装步骤

1)更新PPP组件
PPTP需要PPP支持,虽然系统本身具备PPP,但它并不支持MPPE,因此需要更新。
# rpm -Uvh ppp-2.4.3-5.rhel4.i386.rpm
2)安装内核MPPE补丁
MPPE是Microsoft Point to Point Encryption,微软点对点加密,因为PPTP VPN协议是由微软主导开发的,因此必须添加该协议补丁。
# rpm -ivh dkms-2.0.6-1.noarch.rpm
# rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
安装完成后用以下命令检查内核MPPE补丁是否安装成功:
# modprobe ppp-compress-18 && echo ‘ok! MPPE was found !’
若结果显示“ok! MPPE was found !”则表示成功。
3)安装PPTPD
# rpm -ivh pptpd-1.3.3-1.rhel4.i386.rpm
4)检查PPP是否支持MPPE
# strings '/usr/sbin/pppd'|grep -i mppe|wc -l
若结果显示“0”则表示不支持,而“30”或更大的数字就表示支持。

1.2.2 基于RHEL 5.2的安装步骤

因为RHEL 5.2的内核已经集成了MPPE和高版本的PPP,因此可以跳过安装配置MPPE和PPP的过程直接安装PPTP。
1)检查内核MPPE补丁
用以下命令检查内核是否支持MPPE补丁:
# modprobe ppp-compress-18 && echo ‘ok! MPPE was found !’
若结果显示“ok! MPPE was found !”则表示支持。
2)检查PPP是否支持MPPE
# strings '/usr/sbin/pppd'|grep -i mppe|wc -l
若结果显示“0”则表示不支持,而“30”或更大的数字就表示支持。
3)安装PPTPD
# rpm -ivh pptpd-1.3.3-1.i386.rpm

1.3 配置PPTP VPN Server

1.3.1 编辑pptpd.conf文件

编辑 /etc/pptpd.conf文件,配置以下常用选项:
option /etc/ppp/options.pptpd  //PPP组件将使用的配置文件;
stimeout 120  //开始PPTP控制连接的超时时间,以秒计;
debug  //把所有debug信息记入系统日志/var/log/messages;
localip 192.168.1.10 //服务器VPN虚拟接口将分配的IP地址,可设置为与VPN服务器内网地址相同网段的IP,也可以设置为另一网段的IP;
remoteip 192.168.1.11-30  //客户端VPN连接成功后将分配的IP地址段,同样可设置为与VPN服务器内网地址相同网段的IP地址段,也可以设置为另一网段的IP地址段;
#logwtmp //注释掉该功能项,该功能项的作用是“使用wtmp记录客户端的连接与断开信息”,在RHEL 5.2中会与PPP产生版本冲突,必须注释掉;但在RHEL AS 4.7中不会产生冲突,如果需要可以开启;

1.3.2 编辑options.pptpd文件

编辑 /etc/ppp/options.pptpd文件,配置以下常用选项:
auth
lock
debug
proxyarp
name pptpd  //修改“pptpd”为当前VPN服务器的主机名
multilink
refuse-pap
refuse-chap
refuse-mschap
refuse-eap
refuse-mschap-v2
require-mppe
ms-dns 192.168.1.10  #DNS服务器地址
dump
logfile /var/log/pptpd.log #日志存放的路径

1.3.3 编辑chap-secrets文件

编辑 /etc/ppp/chap-secrets文件,配置VPN用户信息:
# Secrets for authentication using CHAP                        
# client       server      secret            IP addresses       
"vpnuser01"     *     "vpn.user01@sfitc"       *            
"vpnuser02"     *     "vpn.user02@sfitc"     192.168.1.12     
 
vpnuser01  //用户账号,需要用双引号包含
*  //代表自动识别当前服务器主机名,也可以手动配置
vpn.user01@sfitc  //用户密码,需要用双引号包含
*  //代表自动分配可用的IP地址,可根据需要指定IP地址
 
除了上面直接编辑配置文件的方式,还可以使用vpnuser命令来进行配置:
# vpnuser add vpnuser01 vpn.user01@sfitc  //添加一个vpnuser01用户
# vpnuser del vpnuser01  //删除vpnuser01用户

1.3.4 防火墙与路由策略配置

1)配置SELinux
对于默认开启了SELinux的主机,需要进行以下设置:
方法1,关闭SELinux认证
编辑 /etc/selinux/config文件,配置以下选项
SELINUX=disabled
然后执行以下命令使修改生效
# setenforce 0
方法2,配置SELinux认证
执行以下命令使pppd与pptp通过SELinux
# setsebool pppd_disable_trans 1
# setssebool pptp_diable_trans 1
2)配置iptables
对与开启了iptables过滤的主机,需要开放VPN服务的端口:
编辑 /etc/sysconfig/iptables文件,加入以下规则
-A RH-Firewall-1-INPUT -p gre -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT
然后执行以下命令使修改生效
# iptables -A RH-Firewall-1-INPUT -p gre -j ACCEPT
# iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT
# iptables -A RH-Firewall-1-INPUT –p tcp –m state –state NEW –m tcp –dport 1723 –j ACCEPT
3)开启数据包转发
因为VPN客户端在拨号后实际是通过服务器外网网卡进行数据通信的,那么要访问内网网段的地址就必须开启数据包转发,使外网网卡的数据包能够转发到内网网卡上。
编辑 /etc/rc.local文件,加入以下规则
echo 1 > /proc/sys/net/ipv4/ip_forward
然后执行以下命令时修改生效
echo 1 > /proc/sys/net/ipv4/ip_forward
4)配置路由策略
一般来说,VPN服务器的内网IP是可以直接与所在的局域网通信的,但在某些安全性方面要求很高的环境中,各个网段间默认是隔离的,还需要添加路由策略才行;
添加静态路由使IP段192.168.1.0/24 与192.168.5.0/24互通:
# route add -net 192.168.5.0/24 dev eth1
//路由必须指定在内网网卡上,如上面的eth1
# route add -net 192.168.5.0/24 gw 192.168.1.1 dev eth1
//需要网关进行跨网段连接的情况,如上面的192.168.1.1
5)配置共享上网
在VPN客户端成功拨号以后,本地网络的默认网关会变为VPN服务器的VPN内网地址,这样会导致客户端只能够连接VPN服务器及其所在的内网,而不能访问互联网;
要解决这个问题需要配置共享上网策略,使VPN客户端在成功拨号以后,既能够访问对端内网地址,又能够访问互联网;
编辑 /etc/rc.local文件,加入以下规则
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 221.221.221.221
//规则必须指定外网网卡与外网地址,如上面的eth0和外网地址221.221.221.221
然后执行以下命令时修改生效
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 221.221.221.221
6)重启或关闭服务
在修改了VPN服务器的相关配置之后,需要重启VPN服务才能生效
# /etc/init.d/pptpd restart //重启服务不会造成现有VPN连接中断
在需要关闭和开启VPN服务时候,通过以下方式
# /etc/init.d/pptpd stop //关闭服务,会造成现有VPN连接全部断开
# /etc/init.d/pptpd start //开启服务
至此,PPTP VPN Server的相关配置就全部完成了,下面我们讲一下如何使用Windows的VPN客户端进行连接。

1.3.5 客户端连接配置

1)新建连接
右键单击“网上邻居”→“属性”,打开网络连接配置界面;
“创建一个新的连接”→“连接到我的工作场所网络” →“虚拟专用网络连接” →“公司名(可以随便填写)” →“不拨初始连接” →“IP地址(填入VPN服务器的IP地址)”→ 选中“在我的桌面上添加一个到此方式的快捷方式”,最后单击“完成”,就建立起了一个新的VPN连接。
2)建立连接
双击刚才建立好的连接,填入设置好的用户名和密码,单击“确定”进行连接。
连接成功后,在连接的“详细信息”里可以看到服务器所分配的IP地址等信息,这时就可以跟连接进入的局域网里的其它计算机进行通信了。
3)高级选项
如果能确定对端内网地址的网段与VPN拨号连接后本地所分配的地址的网段相同,那么就可以不通过上面的“配置共享上网”步骤,而使VPN客户端在成功拨号以后,既能够访问对端内网地址,又能够访问互联网;
右键单击刚刚创建的连接,再依次单击“属性”→“网络(选择TCP/IP协议)”→“属性”→“高级”,然后把“在远程网络上使用默认网关”前面的勾去掉,单击“确定”,然后再重新建立连接。
4)网络要求
必须注意的是,通过路由器等设备共享上网的用户,其本地内网的网段不能与对端的内网网段相同,如果相同会导致在成功拨号后,不能正常的进行数据通讯;
造成这个问题的原因在于本地电脑的直连路由策略,它会定义本地网络的同一网段的数据包仅在内网询问,而不需要经过网关;因此要解决这个问题,必须更改本地内网的网段才行。


(责任编辑:IT)