论文部分内容阅读
摘要:VPN技术提供了一种通过公用网络安全地对内部专用网络进行远程访问的连接方式,可以将企业分散在各地的网络通过现有的公共网络安全地连接起来,利用Linux可以为企业简单、安全、高效的VPN连接,本文着重给出了服务器和客户机之间VPN连接的具体配置方法。
关键词:VPN;Linux;远程访问;服务器/客户机配置
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)09-11622-06
Linux-based Remote Access VPN Implementation
LIU Geng-biao
(Guangdong Construction Vocational Technology Institute,Guangzhou 510450,China)
Abstract: VPN provides a way to get safely remote access to the special-purpose network through a kind of public network. It can unit safely the networks scattering in various parts through the present public network. Making use of Linux can establish simple, safe and high-efficient VPN for enterprises. This article mainly discusses the way to connect VPN between server and customers’ computers.
Key words: VPN;Linux;remote access
1 引言
随着企业规模不断扩大,分支机构不断扩展,移动办公不断增加,企业内部及企业间信息传递越来越多。如何以
最低的费用保障通信的高效性和安全性,是企业极其关注的问题。在此背景下,VPN技术的出现,以其低通信费、高灵活性和安全性的优势赢得了越来越多的企业的青睐,是一种非常廉价、安全、灵活的远程网络接入解决方案。
市场研究公司InfoneticsResearch发表的题为“虚拟专用网和安全服务:年度市场规模与预测”的报告称,2008年全球虚拟专用网服务的销售总收入将超过300亿美元。效率的提高、虚拟专用网提供的节省成本和整个机构范围内应用虚拟专用网的复杂性是推动虚拟专用服务收入增长的主要因素。2008年,在虚拟专用网服务收入方面大多数增长将来自亚太地区。欧洲、中东和非洲地区也将大幅增长。
2 VPN的概述
VPN(Virtual Private Network)中文名为“虚拟专用网”。 是指依靠ISP(Internet服务提供商)和其它NSP(网络服务提供商),在公用网络中建立一个临时的、安全的网络连接,能实现对远程网络安全访问的数据通信网络技术。它通过特殊的加密通讯协议,在公用网络中建立临时的、安全的专用数据通信隧道,对内部专用网络进行远程访问的技术。
对于一个企业的内部网与远程分支机构的局域网来说,它们就可以通过Internet这一公用网络,建立一条经过谁和加密的安全隧道实现互联,使企业远程用户或移动用户可以随时随地通过Internet连接到企业Intranet。
目前可以用硬件或软件来实现VPN,如具有VPN连接功能的路由器、防火墙、交换机设备或Linux、Windows 2000/2003 Server等网络操作系统。但是硬件设备配置较复杂,费用也相对较高,且需要额外的管理和安全维护,还可能出现不同厂家产品不兼容问题。利用Linux实现VPN,不需要昂贵的专用设备,节省了网络建设成本,配置及维护都比较简单,更很需要的是,Linux不需要太高的硬件成本也可以成为性能稳定、高效安全、造价低廉的VPN服务器。
3 Linux中的VPN技术
Linux不但可以充当VPN服务器,也可以作为VPN的客户机,假设要配置一个远程用户各企业内部网之间的VPN连接,我们可以用一台运行RedHat Linux 9.0或其它版本的Linux系统的计算机作为VPN服务器,VPN客户机则可以使用运行Windows98或以上各版本的计算机,也可以是运行Linux系统的计算机。其配置主要包括两个步骤:
(1)VPN服务器配置,使它能够接受VPN远程接入;
(2)VPN客户端连接的配置,使之能够拨出到VPN服务器上。
3.1 VPN服务器配置
建立基于PPTP的Linux VPN服务器配置,并根椐以下要求配置VPN服务器:
(1)VPN服务器硬件环境配备了两块网卡,分别为eth0 和eth1,其中eth0连接到Internet, IP地址为192.168.1.20; eth1连接到内部网络,IP地址:192.168.2.254(手动添加)。
(2)VPN服务器本地的地址为192.168.0.254。
(3)分配给VPN 客户机的地址段为192.168.2.1-254。
(4)建立一个名为gdcvi, 口令为gdcvi的VPN拨号账户。
具体步骤:
(1)访问http://prdownloads.sourceforge.net/poptop/下载dkms-2.0.5-1.noarch.rpm、Kernel_ppp_mppe-0.0.5-2dkms.noarch.rpm、libpcap-0.7.2-1.i386.rpm、ppp-2.4.3-4.rhel3.i386.rpm和pptpd-1.2.3-1.i386.rpm(pptpd服务软件)四个安装包(假设将它们保存在/mnt/vpn 目录下)。以root账户登录系统,进入安装目录/mnt/vpn使用相关命令进行安装和升级VPN。
(2)使用命令vi/etc/pptpd.conf打开PPTP服务器的主要配置文件,然后在文件末尾添加下列语句:
Localip 192.168.0.254#定义服务器上的IP(也就是连上后的ppp0的ip),服务器VPN虚拟接口将分配的IP地址
#不能是本地IP,不然会引起IP冲突,这里其实只要随便设置一个不相冲突的IP,即
remoteip192.168.2.1-254#定义客户端的IP,客户端VPN连接成功后将分配的IP。
注意:为了安全性起见,localip和remoteip尽量不要同一个网段。您也可以单独指定某个地址或者多段地址,用逗号隔开。
(3)使用命令vi/etc/ppp/chap-secrets打开账号文件,然后在文件末尾添加下列语句(图1)。
上面代码中“gdcvi”是Client端的VPN用户名;“server”对应的是VPN服务器的名字,该名字必须和/etc/ppp/options.pptpd文件中指明的一样,或者设置成“*”号来表示自动识别服务器;“secret”对应的是登录密码;“IP addresses”对应的是可以拨入的客户端IP地址,如果不需要做特别限制,可以将其设置为“*”号。
(4)使用命令查看pptpd服务进程、端口和接口,使用netstat命令检查pptpd运行的端口,使用ifconfig命令查看ppp0接口(图2)。
看到多了一个网络连接,IP为:192.168.2.1,正是前是配置文件里设置的远程IP,这样这台windows的客户端成功连上了这个VPN服务器。
注意:
(1)当VPN拨号失败时,用户应该检查网络连接是否通畅,客户机是否已经连接到VPN 服务器上,用户名、密码是否正确。
(2)当VPN连接断线时,再次进行拨号,出现错误提示时,用户可稍等2~3分钟再拨号,因为PPTPD VPN服务器有较长的反应处理时间(一个BUG)。
(3)如果个人电脑上有个人防火墙,必须开放端口1723、1788或关闭掉防火墙,停止保护功能,否则不能正常进行VPN拨号连接与访问。
(4)VPN端口:1723,此外还有一个[color=red]GRE[/color],协议名称非TCP、UDP、ICMP!这是VPN的主要传输协议,所以要配置防火墙,一定要开这个。
3.2 Linux VPN 的客户机如何访问Linux VPN的服务器
(1)安装基础软件包libglade和libglade-devel
libglade和libglade-devel是一个用于GTK /GNOME程序。从xxx.glade文件自动生成程序界面或界面中的一部分的库。
(2)安装DKMS 模块软件包
DKMS(Dynamic Kernel Module Support)动态内核模块支持。旨在创建一个内核相关模块源可驻留的框架,以便在升级内核时可以很容易地重建模块。这将允许 Linux 供应商提供较低版本的驱动程序,而无需等待新内核版本发行,同时还可以省去尝试重新编译新内核模块的客户预期要完成的工作。DKMS工作原理见图4。
这里我们选择需要微软点对点加密。
多出一个选项即:Refuse to Authenticate with EAP(refuse-eap)拒绝EAP认证。Linux下要用VPN会用到ppp,但似乎很难与Windows作为服务器的VPN服务器沟通:先看看如何显示调试信息,这对找出问题的出处很有帮助。
在/etc/ppp/options.pptp里加入debug dump logfd 2 nodetach,如果有“Unsupported protocol rcvd [proto=xxxx]”这样的错误,那么需要在options.pptp里加入这一句refuse-eap。
Miscellaneous(杂项)选项:Miscellaneous标签可配置一些调试信息和连接状态。
选项卡是我们的最后一个选项卡。如图8。
说明:
Start tunnel when this program starts:自动启动VPN隧道。
Enable contion debugging facilities:显示连接信息。
Reconnect if disconnected:自动重复连接。
(8)所有选项完成后点击“Add”按钮,系统会自动连接PPTP VPN。此时屏幕会出现一个连接状态界面如图9。
其中ppp0是Linux客户端连接PPTP VPN服务器的接口。
下面我们使用连接状态界面的Ping按钮测试连接状况,如图11。
(9)连接成功后就可与服务器通信了,但如果要有其它子网通信,就要增加路由信息。本例中如要和192.168.2.0子网通信可这样写:
# route add -net 192.168.2.0 netmask 255.255.255.0 dev ppp0
(10)访问内部资源。由于在VPN服务器上使用了命令“echo "1" >/proc/sys/net/ipv4/ip_forward”打开了Linux内核的路由功能,因此客户端可以像在内部网络里一样直接访问各种资源。操作方法和普通局域网完全一样,相互之间可以通过“网上邻居”,或者直接在窗口地址栏中输入“\\对方IP地址”等式逻辑方式来访问共享的软硬资源。
4 结束语
VPN技术有很多优势,应用前景广阔,具体实施也并不困难,利用Linux构造VPN网络,更是一个稳定、安全、高效和廉价的方案,非常适合正在发展中的中小企业和大公司在各地的分支机构,随着随着国家信息化进程的加快,特别是电子政务、电子商务的日益推广,VPN技术将会被越来越多的人所接受。
参考文献
[1] 陈国浪. VPN在Windows 2000中的实现[J]. 温州职业技术学院学报.
[2] 王达. 虚拟专用网(VPN)精解[M]. 清华大学出版社.
[3] http://tech.sina.com.cn/i/w/2004-08-06/0824399306.shtml. 调查:08年全球VPN市场规模将达300亿美元.
关键词:VPN;Linux;远程访问;服务器/客户机配置
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)09-11622-06
Linux-based Remote Access VPN Implementation
LIU Geng-biao
(Guangdong Construction Vocational Technology Institute,Guangzhou 510450,China)
Abstract: VPN provides a way to get safely remote access to the special-purpose network through a kind of public network. It can unit safely the networks scattering in various parts through the present public network. Making use of Linux can establish simple, safe and high-efficient VPN for enterprises. This article mainly discusses the way to connect VPN between server and customers’ computers.
Key words: VPN;Linux;remote access
1 引言
随着企业规模不断扩大,分支机构不断扩展,移动办公不断增加,企业内部及企业间信息传递越来越多。如何以
最低的费用保障通信的高效性和安全性,是企业极其关注的问题。在此背景下,VPN技术的出现,以其低通信费、高灵活性和安全性的优势赢得了越来越多的企业的青睐,是一种非常廉价、安全、灵活的远程网络接入解决方案。
市场研究公司InfoneticsResearch发表的题为“虚拟专用网和安全服务:年度市场规模与预测”的报告称,2008年全球虚拟专用网服务的销售总收入将超过300亿美元。效率的提高、虚拟专用网提供的节省成本和整个机构范围内应用虚拟专用网的复杂性是推动虚拟专用服务收入增长的主要因素。2008年,在虚拟专用网服务收入方面大多数增长将来自亚太地区。欧洲、中东和非洲地区也将大幅增长。
2 VPN的概述
VPN(Virtual Private Network)中文名为“虚拟专用网”。 是指依靠ISP(Internet服务提供商)和其它NSP(网络服务提供商),在公用网络中建立一个临时的、安全的网络连接,能实现对远程网络安全访问的数据通信网络技术。它通过特殊的加密通讯协议,在公用网络中建立临时的、安全的专用数据通信隧道,对内部专用网络进行远程访问的技术。
对于一个企业的内部网与远程分支机构的局域网来说,它们就可以通过Internet这一公用网络,建立一条经过谁和加密的安全隧道实现互联,使企业远程用户或移动用户可以随时随地通过Internet连接到企业Intranet。
目前可以用硬件或软件来实现VPN,如具有VPN连接功能的路由器、防火墙、交换机设备或Linux、Windows 2000/2003 Server等网络操作系统。但是硬件设备配置较复杂,费用也相对较高,且需要额外的管理和安全维护,还可能出现不同厂家产品不兼容问题。利用Linux实现VPN,不需要昂贵的专用设备,节省了网络建设成本,配置及维护都比较简单,更很需要的是,Linux不需要太高的硬件成本也可以成为性能稳定、高效安全、造价低廉的VPN服务器。
3 Linux中的VPN技术
Linux不但可以充当VPN服务器,也可以作为VPN的客户机,假设要配置一个远程用户各企业内部网之间的VPN连接,我们可以用一台运行RedHat Linux 9.0或其它版本的Linux系统的计算机作为VPN服务器,VPN客户机则可以使用运行Windows98或以上各版本的计算机,也可以是运行Linux系统的计算机。其配置主要包括两个步骤:
(1)VPN服务器配置,使它能够接受VPN远程接入;
(2)VPN客户端连接的配置,使之能够拨出到VPN服务器上。
3.1 VPN服务器配置
建立基于PPTP的Linux VPN服务器配置,并根椐以下要求配置VPN服务器:
(1)VPN服务器硬件环境配备了两块网卡,分别为eth0 和eth1,其中eth0连接到Internet, IP地址为192.168.1.20; eth1连接到内部网络,IP地址:192.168.2.254(手动添加)。
(2)VPN服务器本地的地址为192.168.0.254。
(3)分配给VPN 客户机的地址段为192.168.2.1-254。
(4)建立一个名为gdcvi, 口令为gdcvi的VPN拨号账户。
具体步骤:
(1)访问http://prdownloads.sourceforge.net/poptop/下载dkms-2.0.5-1.noarch.rpm、Kernel_ppp_mppe-0.0.5-2dkms.noarch.rpm、libpcap-0.7.2-1.i386.rpm、ppp-2.4.3-4.rhel3.i386.rpm和pptpd-1.2.3-1.i386.rpm(pptpd服务软件)四个安装包(假设将它们保存在/mnt/vpn 目录下)。以root账户登录系统,进入安装目录/mnt/vpn使用相关命令进行安装和升级VPN。
(2)使用命令vi/etc/pptpd.conf打开PPTP服务器的主要配置文件,然后在文件末尾添加下列语句:
Localip 192.168.0.254#定义服务器上的IP(也就是连上后的ppp0的ip),服务器VPN虚拟接口将分配的IP地址
#不能是本地IP,不然会引起IP冲突,这里其实只要随便设置一个不相冲突的IP,即
remoteip192.168.2.1-254#定义客户端的IP,客户端VPN连接成功后将分配的IP。
注意:为了安全性起见,localip和remoteip尽量不要同一个网段。您也可以单独指定某个地址或者多段地址,用逗号隔开。
(3)使用命令vi/etc/ppp/chap-secrets打开账号文件,然后在文件末尾添加下列语句(图1)。

上面代码中“gdcvi”是Client端的VPN用户名;“server”对应的是VPN服务器的名字,该名字必须和/etc/ppp/options.pptpd文件中指明的一样,或者设置成“*”号来表示自动识别服务器;“secret”对应的是登录密码;“IP addresses”对应的是可以拨入的客户端IP地址,如果不需要做特别限制,可以将其设置为“*”号。
(4)使用命令查看pptpd服务进程、端口和接口,使用netstat命令检查pptpd运行的端口,使用ifconfig命令查看ppp0接口(图2)。

看到多了一个网络连接,IP为:192.168.2.1,正是前是配置文件里设置的远程IP,这样这台windows的客户端成功连上了这个VPN服务器。
注意:
(1)当VPN拨号失败时,用户应该检查网络连接是否通畅,客户机是否已经连接到VPN 服务器上,用户名、密码是否正确。
(2)当VPN连接断线时,再次进行拨号,出现错误提示时,用户可稍等2~3分钟再拨号,因为PPTPD VPN服务器有较长的反应处理时间(一个BUG)。
(3)如果个人电脑上有个人防火墙,必须开放端口1723、1788或关闭掉防火墙,停止保护功能,否则不能正常进行VPN拨号连接与访问。
(4)VPN端口:1723,此外还有一个[color=red]GRE[/color],协议名称非TCP、UDP、ICMP!这是VPN的主要传输协议,所以要配置防火墙,一定要开这个。
3.2 Linux VPN 的客户机如何访问Linux VPN的服务器
(1)安装基础软件包libglade和libglade-devel
libglade和libglade-devel是一个用于GTK /GNOME程序。从xxx.glade文件自动生成程序界面或界面中的一部分的库。
(2)安装DKMS 模块软件包
DKMS(Dynamic Kernel Module Support)动态内核模块支持。旨在创建一个内核相关模块源可驻留的框架,以便在升级内核时可以很容易地重建模块。这将允许 Linux 供应商提供较低版本的驱动程序,而无需等待新内核版本发行,同时还可以省去尝试重新编译新内核模块的客户预期要完成的工作。DKMS工作原理见图4。


这里我们选择需要微软点对点加密。
多出一个选项即:Refuse to Authenticate with EAP(refuse-eap)拒绝EAP认证。Linux下要用VPN会用到ppp,但似乎很难与Windows作为服务器的VPN服务器沟通:先看看如何显示调试信息,这对找出问题的出处很有帮助。
在/etc/ppp/options.pptp里加入debug dump logfd 2 nodetach,如果有“Unsupported protocol rcvd [proto=xxxx]”这样的错误,那么需要在options.pptp里加入这一句refuse-eap。
Miscellaneous(杂项)选项:Miscellaneous标签可配置一些调试信息和连接状态。
选项卡是我们的最后一个选项卡。如图8。
说明:
Start tunnel when this program starts:自动启动VPN隧道。
Enable contion debugging facilities:显示连接信息。
Reconnect if disconnected:自动重复连接。
(8)所有选项完成后点击“Add”按钮,系统会自动连接PPTP VPN。此时屏幕会出现一个连接状态界面如图9。


其中ppp0是Linux客户端连接PPTP VPN服务器的接口。
下面我们使用连接状态界面的Ping按钮测试连接状况,如图11。
(9)连接成功后就可与服务器通信了,但如果要有其它子网通信,就要增加路由信息。本例中如要和192.168.2.0子网通信可这样写:
# route add -net 192.168.2.0 netmask 255.255.255.0 dev ppp0
(10)访问内部资源。由于在VPN服务器上使用了命令“echo "1" >/proc/sys/net/ipv4/ip_forward”打开了Linux内核的路由功能,因此客户端可以像在内部网络里一样直接访问各种资源。操作方法和普通局域网完全一样,相互之间可以通过“网上邻居”,或者直接在窗口地址栏中输入“\\对方IP地址”等式逻辑方式来访问共享的软硬资源。
4 结束语
VPN技术有很多优势,应用前景广阔,具体实施也并不困难,利用Linux构造VPN网络,更是一个稳定、安全、高效和廉价的方案,非常适合正在发展中的中小企业和大公司在各地的分支机构,随着随着国家信息化进程的加快,特别是电子政务、电子商务的日益推广,VPN技术将会被越来越多的人所接受。
参考文献
[1] 陈国浪. VPN在Windows 2000中的实现[J]. 温州职业技术学院学报.
[2] 王达. 虚拟专用网(VPN)精解[M]. 清华大学出版社.
[3] http://tech.sina.com.cn/i/w/2004-08-06/0824399306.shtml. 调查:08年全球VPN市场规模将达300亿美元.