VPN搭建 相关知识

在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。VPN具有成本低,易于使用的特点。

基于PPTP协议的VPN服务器的实现

由于开放源代码的Linux操作系统具有安全、稳定和高效等特性,使其迅速成为主要的服务器操作系统之一。下面将介绍Linux操作系统(这里选择与RedHat兼容的Linux发行版)下基于PPTP协议完全免费的VPN服务器解决方案。

这里选择了“Poptop-ThePPTPServerforLinux”作为Linux下的VPN服务器的软件实现。Poptop是一个开放源代码项目,基于PPTP点对点隧道协议开发,支持Windows95/98/Me/NT/2000/XP及Linux的PPTP客户端。Poptop与微软的加密和认证协议(MSCHAPv2,MPPE40-128bitRC4加密)完全兼容,如果使用RADIUS插件还可以与微软网络环境(LDAP、SAMBA)进行无缝整合。

pptpd是Poptop中最重要的程序,它是Poptop的PPTP守护进程,用来管理所有的基于PPTP隧道协议的VPN连接。当pptpd接收到用户的VPN接入请求后会自动调用pppd程序去完成相应的认证过程,然后建立VPN连接。所以,要使Poptop正常工作必须安装PPP软件套件。下面将详细介绍Poptop的安装、配置和应用。

1.PPP软件包的安装

一般的Linux发行版本都自带PPP软件包,这里推荐使用Poptop官方站点(www.poptop.org)最新发布的PPP软件包升级Linux发行版自带的PPP包。下载ppp-2.4.3-5.rhl9.i386.rpm后,使用命令“rpm-Uvhppp-2.4.3-5.rhl9.i386.rpm”完成对操作系统自带PPP软件包的升级。

2.Poptop服务器的安装

从Poptop的官方发布站点下载最新的稳定版本。本文选择1.3.0的预编译版pptpd-1.3.0-0.i386.rpm(此版本要求PPP版本高于2.4.3)。使用命令“rpm-ivhpptpd-1.3.0-0.i386.rpm”完成软件的安装。

3.配置Poptop服务器

Poptop服务器的配置文件是/etc/pptpd.conf,主要配置如下:

debug

ppp/usr/sbin/pppd

option/etc/ppp/options.pptpd

localip192.168.0.1

remoteip192.168.0.128-254

上面代码中,debug指令打开调试模式,将调试信息发送到系统日志(syslogd)。ppp指令用来指定pppd程序的具体位置。option指令指明pptpd程序所需的配置文件的位置。localip指明建立VPN连接时VPN服务器端分配的IP地址。remoteip指明建立VPN连接时其客户端的IP地址。这里需要指出IP地址的写法,可以写多个IP地址用逗号隔开,或者指定IP地址范围,例如“192.168.0.234,192.168.0.245-249,192.168.0.254”。这里要注意,如果不设置localip,VPN服务器将对每一个VPN连接在服务器端各分配一个IP地址和对应的VPN客户通信。如果设置localip为单一的IP地址,则VPN服务器将对每一个VPN连接在服务器端都使用指定的IP地址和对应的VPN客户通信。如果设置localip为一个IP地址范围,VPN服务器将对每一个VPN连接在服务器端都使用指定的IP地址和对应的VPN客户通信;若地址分配完,则新的VPN连接将被拒绝。

4.有关PPP的配置

编辑PPP的配置文件/etc/ppp/options.pptpd(在poptop配置文件中option指令指定)为如下命令:

debugnamepptpdauthrequire-chapproxyarp

上面代码中,name指令用来指定服务器名;auth用来设置需要使用/etc/ppp/chap-secrets文件进行身份验证,require-chap设置使用chap认证;proxyarp用来实现arp代理功能。

接下来编辑chap安全认证文件/etc/ppp/chap-secrets为如下一行命令:

testpptpd123*

其中test是ppp账号;pptpd是在/etc/ppp/options.pptpd中设置的服务器名;123是test账号的密码;“*”表示允许test账号从任何主机登入PPP服务器,类似的可以添加其它VPN用户。

5.将Poptop的运行情况加入系统日志

编辑syslogd的配置文件/etc/syslog.conf,增加如下一行命令:

daemon.debug/var/log/pptpd.log

然后重新启动syslogd守护进程,这样VPN服务器的运行日志将被保存在/var/log/pptpd.log文件中。

6.启动Poptop服务器

使用如下指令启动Poptop服务:

servicepptpdstart

/etc/rc.d/init.d/pptpdstart

至此,VPN服务器已经可以接受VPN客户端拨入,如果有问题,可以查看日志/var/log/pptpd.log

Windows客户端远程拨入VPN服务器

Poptop支持Windows和Unix等多种类型操作系统的VPN客户端,这里以WindowsXP为客户端介绍拨号进入VPN服务器。由于Windows系统内置PPTP协议的支持,所以可以直接进行拨号进入VPN服务器,以下是详细过程。

1.建立VPN连接

通过新建网络连接向导建立一个VPN连接。“网络连接类型”选择“连接到我的工作场所的网络(O)”,“网络连接”选择“虚拟专用网络连接(V)”,“连接名”可以输入自己要连接的公司名称,“VPN服务器选择”输入VPN服务器的公网IP地址。单击“完成”即可建立VPN连接。

2.拨号进入VPN服务器

双击新建立的VPN连接的快捷方式,在“连接”对话窗口中输入在VPN服务器上设置的用户名和密码。

取消“属性”中“安全”标签下的“要求数据加密(没有加密就断开)(I)”复选框。

3.查看已建立的VPN连接

在VPN客户端查看连接的状态。

在VPN服务器上使用ifconfig命令查看网络状态。

为VPN服务器启用MPPE加密

上面的设置虽然可以实现远程用户拨入VPN服务器,但是由于还没有启动更安全的加密,所以存在一定的安全隐患。这里介绍在VPN服务器上启用MPPE加密,以增强VPN通信的安全性。

RFC3078文档对MPPE加密进行了详细的描述,它的全称是微软点到点加密协议。这里需要注意,Linux2.6.15内核以后的版本都内置了对MPPE的支持,之前的版本则不支持MPPE,如果使用的内核是2.6.15以前的版本,就必须对内核升级,加入对MPPE的支持。

1.MPPE加密功能的安装与配置

首先需要安装动态内核模块支持DKMS(DynamicKernelModuleSupport)。DKMS创建了允许内核的依赖模块驻留的一个框架,利用这个框架使得升级内核时内核模块的重建变得非常容易。利用DKMS还可以使Linux的销售商在新内核发布之前可以提供驱动程序。这里将使用DKMS在Linux内核中加入支持MPPE功能的模块。DKMS的最新版本可以从www.poptop.org获得,使用“rpm-ivhdkms-2.0.10-1.noarch.rpm”命令完成安装。

接下来需要安装内核的MPPE支持包“kernel_ppp_mppe”可以从 www.poptop.org下载最新的二进制RPM包,使用rpm-ivhkernel_ppp_mppe-1.0.2-3dkms.noarch.rpm命令完成安装。需要注意的是,必须先从Linux安装光盘安装内核的源代码包,否则“kernel_ppp_mppe”无法进行正常的安装。

需要测试一下MPPE模块,如果系统内核已经加载了“ppp_generic”模块,则必须先将其卸载(使用“rmmodppp_generic”命令)或者重新启动操作系统后再测试。测试指令为“modprobeppp-compress-18&&echosuccess”,如果输出“success”,则表明模块加载成功。运行指令“lsmod”可以看到内核模块。

另外,由于MPPE需要使用“MSChapV2”进行认证,所以需要在PPP的配置文件中加入“require-mschap-v2”。

2.Windows客户端的配置

在VPN拨号的“连接”对话窗口中选择“属性”,选中“属性”中“安全”标签下的“要求数据加密(没有加密就断开)(I)”复选框,这样就可以使用MPPE的128位加密来保证VPN连接的安全性。在VPN客户端查看连接的状态,可以看到已经使用了MPPE的128位加密。

Linux客户端远程拨入VPN服务器

目前的Linux操作系统发行版本一般都没有内置PPTP协议的支持,使用Linux拨号进入VPN服务器之前必须完成相关的协议软件和配置。下面以RedHat9.0为例介绍其详细过程。

本文将使用一个开放源代码的基于Linux的PPTPClient软件套件作为PPTP服务器的客户端程序。

首先是安装MPPE的相关模块,其安装过程和VPN服务器的安装过程相同。然后升级PPP软件包,软件包的下载和安装与上面“Linux下基于PPTP协议的VPN服务器的实现”中的第一步完全相同,这里不再赘述。

PPTPClient软件包需要从其官方网站pptpclient.sourceforge.net下载,这里使用1.7.0版本。安装命令为“rpm-ivhpptp-1.7.0-1.src.rpm”。

PPTPClient的图形化配置工具需要使用解释器php-pcntl和GTK+图形接口,它们的下载地址是prdownloads.sourceforge.net/pptpclient/选择最新版本,安装命令分别是“rpm-ivhphp-pcntl-4.3.10-1.i386.rpm”和“rpm-ivhphp-gtk-pcntl-1.0.2-1.i386.rpm”。接下来从上面的链接下载最新的图形配置程序“pptpconfig-20060214-1.noarch.rpm”,安装命令为“rpm-ivhpptpconfig-20060214-1.noarch.rpm”。

配置程序pptpconfig需要以root用户运行,在Linux图形界面的终端中输入“pptpconfig”命令,出现配置界面。

◆在配置窗口中输入相关的VPN服务器的信息,在Encryption标签下选中“RequireMicrosoftPoint-to-PointEncryption(MPPE)”。选择“Add”按钮之后,完成VPN连接的配置。选择“starting...”按钮,出现VPN连接窗口。

◆单击“Ping”按钮向VPN服务器的内部网络地址发送测试数据包。

◆在终端中使用“ifconfig”可以看到新建立的VPN连接。

至此,Linux客户端已经和VPN服务器建立了连接,可以通过“PPP0”接口访问部门的内部网络。

通过本文的介绍,可以看出基于Linux的VPN解决方案有稳定可靠,为企业提供了是一种行之有效的VPN解决方案。

时间: 2024-12-18 15:22:48

VPN搭建 相关知识的相关文章

shell 脚本实战笔记(7)--集群网络相关知识和环境搭建

前言: 对网络相关的知识, 做下笔记. 包括IP地址A/B/C的分类, 静态地址的配置/DNS配置, 以及网卡相关信息查看. *) A/B/C/D类网络地址的划分 IP地址=网络地址+主机地址 或 IP地址=主机地址+子网地址+主机地址 IPv4的地址划分, 可以分为5种类型, A/B/C/D/E类 A类地址: 由1字节的网络地址和3字节主机地址组成, 网络地址最高位必须是"0", 地址范围从1.0.0.0到126.0.0.0. A类网络有126个, 每个网络能容纳1亿多个主机. B类

FastDFS的介绍与相关知识,以及集群搭建

FastDFS相关知识 什么是FastDFS? FastDFS是一个开源的轻量级分布式文件系统.它解决了大数据量存储和负载均衡等问题.特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站.视频网站等等. FastDFS的角色: Tracker server:Tracker server作为中心结点,其主要作用是负载均衡和调度.Tracker server在内存中记录分组和Storage server的状态等信息,不记录文件索引信息,占用的内存

三层交换机相关知识

三层交换机相关知识 这次的作死之路又要开始了.这次的对象主要是交换机:还是三层的: 这是这次实验的总体用图: 现在现根据图上的标志:将所有的主机配置好:目前没有做任何vlan:所以PC1和PC3是能够互通的: 接下来:我想先去探索下三层交换机关闭portswitch会怎么样: 第一步:先关闭了再说: 因为按照图中的设计:PC1的帧如果想要到达PC2,那么就必然要经过LSW1.但是现在我关闭了g0/0/1端口的portswitch:现在pc1并不能ping通pc2: 通过百度:三层交换机的端口不仅

深入浅出安卓学习相关知识,如何从零学好移动开发

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mobile-develop 由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向. 有不少同学问我如何学习安卓,要学些什么,难不难学.之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学.因为我觉得准确回答一个类似这样的问题往往需要灵感.现在根据我的学习体验,做个大概的总结. 1.我为什么学安卓 我从刚开始接触安卓开发到现在也有两三年的时间了

OSPF相关知识与实例配置

OSPF相关知识与实例配置[基本知识及多区域配置] OSPF(开放式最短路径优先协议)是一个基于链路状态的IGP,相比于RIP有无环路:收敛快:扩展性好等优点,也是现在用的最多的:所以这次实验就针对于OSPF(HCNA)内容进行一个探究: 在说ospf配置前:我们先来了解下ospf LSA的类型: type1 LSA:每个ospf路由器都会产生type1 LSA:描述了对应设备接口的物理接口所连接的链路或接口,并且表明了个链路的状态.开销等参数:(只在区域内泛洪) Type2 LSA:网络LSA

【ALearning】第二章 Android工程相关知识介绍

本章主要初步介绍Android工程开发环境的搭建,以对Android项目整体的认识与了解.本章包括Android开发环境搭建.第一个Android项目Hello World与Android项目的文件目录结构介绍. Android开发环境搭建 Android开发环境的搭建方式有两种,分别是Eclipse/MyEclipse+ADT+Android SDK和Android Developer Tools.前者方式的开发环境搭建,参看[http://blog.sina.com.cn/s/blog_4e

HTTP协议知多少-关于http1.x、http2、SPDY的相关知识

作为网站开发的基础协议,我们知道浏览器上都有输出http这四个字母,这意味着什么呢? 这就是最基础的HTTP协议. 逐浪君今天为各位大人准备了一些HTTP技术的知识,来和大家分享. 以下图为例: 这一个加载界面,至少用到了http/1.1.SPDY.Http/2(简称h2)三种浏览器技术. 先说HTTP/1.1: HTTP1.1(Hypertext Transfer Protocol Version 1.1)超文本传输协议-版本1.1它是用来在Internet上传送超文本的传送协议.它是运行在T

python的list相关知识

关于list的相关知识 list01 = ['alex',12,65,'xiaodong',100,'chen',5] list02 = [67,7,'jinjiao_dawang','relax1949',53] #打印list01.list02 print(list01) print(list02) #列表截取.切片 print(list01[1]) print(list01[-2]) print(list01[1:3]) #列表重复 print(list01 * 3) #列表组合 prin

php学习day7--函数的相关知识

今天我们主要学了函数的相关知识,是个比较基础的知识,但也是很重要的. 一.函数 函数就类似于一个工具,我们写好函数之后可以直接进行调用,可以很大的减少代码的从用性,提高页面性能和可读性. 1.函数的定义 在php中函数的定义方式为: function  name($形参1,$形参2.....){ 要执行的代码 return  123: } 在上方的函数定义式中,name代表函数名,小括号内是形参,是用来传递参数,花括号中的就是调用时需要执行的代码. 函数的调用方式: name(实参1,实参2,.