Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11492437
  • 博文数量: 48
  • 博客积分: 7017
  • 博客等级: 少将
  • 技术积分: 2073
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-24 09:50
文章分类

全部博文(48)

文章存档

2011年(4)

2010年(15)

2009年(15)

2008年(14)

我的朋友

分类: LINUX

2010-02-05 16:12:16

本文来自转载,本人已验证。
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
require-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"     *     ""       *           
"vpnuser02"     *     ""     192.168.1.12    
 
vpnuser01  //用户账号,需要用双引号包含
*  //代表自动识别当前服务器主机名,也可以手动配置
  //用户密码,需要用双引号包含
*  //代表自动分配可用的IP地址,可根据需要指定IP地址
 
除了上面直接编辑配置文件的方式,还可以使用vpnuser命令来进行配置:
# vpnuser add vpnuser01   //添加一个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
iptables -t nat -A POSTROUTING -j MASQUERADE
然后执行以下命令时修改生效
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE
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客户端进行连接。
7)特殊情况注意:
开启pptp vpn转发,vpn服务器和内网路由器
modprobe ip_conntrack_pptp
modprobe ip_nat_pptp
1.3.5 客户端连接配置
1)新建连接
右键单击“网上邻居”→“属性”,打开网络连接配置界面;
“创建一个新的连接”→“连接到我的工作场所网络” →“虚拟专用网络连接” →“公司名(可以随便填写)” →“不拨初始连接” →“IP地址(填入VPN服务器的IP地址)”→ 选中“在我的桌面上添加一个到此方式的快捷方式”,最后单击“完成”,就建立起了一个新的VPN连接。
2)建立连接
双击刚才建立好的连接,填入设置好的用户名和密码,单击“确定”进行连接。
连接成功后,在连接的“详细信息”里可以看到服务器所分配的IP地址等信息,这时就可以跟连接进入的局域网里的其它计算机进行通信了。
3)高级选项
如果能确定对端内网地址的网段与VPN拨号连接后本地所分配的地址的网段相同,那么就可以不通过上面的“配置共享上网”步骤,而使VPN客户端在成功拨号以后,既能够访问对端内网地址,又能够访问互联网;
右键单击刚刚创建的连接,再依次单击“属性”→“网络(选择TCP/IP协议)”→“属性”→“高级”,然后把“在远程网络上使用默认网关”前面的勾去掉,单击“确定”,然后再重新建立连接。
4)网络要求
必须注意的是,通过路由器等设备共享上网的用户,其本地内网的网段不能与对端的内网网段相同,如果相同会导致在成功拨号后,不能正常的进行数据通讯;
造成这个问题的原因在于本地电脑的直连路由策略,它会定义本地网络的同一网段的数据包仅在内网询问,而不需要经过网关;因此要解决这个问题,必须更改本地内网的网段才行。
阅读(1805) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~