本章描述内容如下表所示。
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 Server1.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 Server1.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) |