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


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.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以上版本。

2 安装PPTP VPN Server
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”或更大的数字就表示支持。

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

3 配置PPTP VPN Server
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中不会产生冲突,如果需要可以开启;
-------------------------------------------------

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

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用户,密码为vpn.user01@sfitc
# vpnuser del vpnuser01  //删除vpnuser01用户
-------------------------------------------------

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/sysctl.conf文件,修改以下规则
-------------------------------------------------
net.ipv4.ip_forward = 1
-------------------------------------------------

然后执行以下命令使修改生效
-------------------------------------------------
# sysctl -p
-------------------------------------------------

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 MASQUERADE
//规则必须指定外网网卡与内网网段,如上面的eth0和内网网段192.168.1.0/24
-------------------------------------------------

然后执行以下命令时修改生效
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

另外,如果防火墙开启了端口过滤,但是又不想让拨上VPN之后受限与这些策略,想全部放行的话,可以加入以下规则:
# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

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客户端进行连接。

3.5 客户端连接配置
1)新建连接
右键单击“网上邻居”→“属性”,打开网络连接配置界面;
“创建一个新的连接”→“连接到我的工作场所网络” →“虚拟专用网络连接” →“公司名(可以随便填写)” →“不拨初始连接” →“IP地址(填入VPN服务器的IP地址)”→ 选中“在我的桌面上添加一个到此方式的快捷方式”,最后单击“完成”,就建立起了一个新的VPN连接。

2)建立连接
双击刚才建立好的连接,填入设置好的用户名和密码,单击“确定”进行连接。
连接成功后,在连接的“详细信息”里可以看到服务器所分配的IP地址等信息,这时就可以跟连接进入的局域网里的其它计算机进行通信了。

3)高级选项
如果能确定对端内网地址的网段与VPN拨号连接后本地所分配的地址的网段相同,那么就可以不通过上面的“配置共享上网”步骤,而使VPN客户端在成功拨号以后,既能够访问对端内网地址,又能够访问互联网;
右键单击刚刚创建的连接,再依次单击“属性”→“网络(选择TCP/IP协议)”→“属性”→“高级”,然后把“在远程网络上使用默认网关”前面的勾去掉,单击“确定”,然后再重新建立连接。

4)网络要求
必须注意的是,通过路由器等设备共享上网的用户,其本地内网的网段不能与对端的内网网段相同,如果相同会导致在成功拨号后,不能正常的进行数据通讯;
造成这个问题的原因在于本地电脑的直连路由策略,它会定义本地网络的同一网段的数据包仅在内网询问,而不需要经过网关;因此要解决这个问题,必须更改本地内网的网段才行。

  1. No comments yet.
(will not be published)
*