Linux下VPN的搭建 |
發(fā)布時(shí)間: 2012/5/28 10:43:22 |
基于PPTP協(xié)議的VPN服務(wù)器的實(shí)現(xiàn) 由于開(kāi)放源代碼的Linux操作系統(tǒng)具有安全、穩(wěn)定和高效等特性,使其迅速成為主要的服務(wù)器操作系統(tǒng)之一。下面將介紹Linux操作系統(tǒng)(這里選擇與RedHat兼容的Linux發(fā)行版)下基于PPTP協(xié)議完全免費(fèi)的VPN服務(wù)器解決方案。 這里選擇了“Poptop-ThePPTPServerforLinux”作為L(zhǎng)inux下的VPN服務(wù)器的軟件實(shí)現(xiàn)。Poptop是一個(gè)開(kāi)放源代碼項(xiàng)目,基于PPTP點(diǎn)對(duì)點(diǎn)隧道協(xié)議開(kāi)發(fā),支持Windows95/98/Me/NT/2000/XP及Linux的PPTP客戶端。Poptop與微軟的加密和認(rèn)證協(xié)議(MSCHAPv2,MPPE40-128bitRC4加密)完全兼容,如果使用RADIUS插件還可以與微軟網(wǎng)絡(luò)環(huán)境(LDAP、SAMBA)進(jìn)行無(wú)縫整合。 pptpd是Poptop中最重要的程序,它是Poptop的PPTP守護(hù)進(jìn)程,用來(lái)管理所有的基于PPTP隧道協(xié)議的VPN連接。當(dāng)pptpd接收到用戶的VPN接入請(qǐng)求后會(huì)自動(dòng)調(diào)用pppd程序去完成相應(yīng)的認(rèn)證過(guò)程,然后建立VPN連接。所以,要使Poptop正常工作必須安裝PPP軟件套件。下面將詳細(xì)介紹Poptop的安裝、配置和應(yīng)用。 1.PPP軟件包的安裝 一般的Linux發(fā)行版本都自帶PPP軟件包,這里推薦使用Poptop官方站點(diǎn)(www.poptop.org)最新發(fā)布的PPP軟件包升級(jí)Linux發(fā)行版自帶的PPP包。下載ppp-2.4.3-5.rhl9.i386.rpm后,使用命令“rpm-Uvhppp-2.4.3-5.rhl9.i386.rpm”完成對(duì)操作系統(tǒng)自帶PPP軟件包的升級(jí)。 2.Poptop服務(wù)器的安裝 從Poptop的官方發(fā)布站點(diǎn)下載最新的穩(wěn)定版本。本文選擇1.3.0的預(yù)編譯版pptpd-1.3.0-0.i386.rpm(此版本要求PPP版本高于2.4.3)。使用命令“rpm-ivhpptpd-1.3.0-0.i386.rpm”完成軟件的安裝。 3.配置Poptop服務(wù)器 Poptop服務(wù)器的配置文件是/etc/pptpd.conf,主要配置如下: debug ppp/usr/sbin/pppd option/etc/ppp/options.pptpd localip192.168.0.1 remoteip192.168.0.128-254 上面代碼中,debug指令打開(kāi)調(diào)試模式,將調(diào)試信息發(fā)送到系統(tǒng)日志(syslogd)。ppp指令用來(lái)指定pppd程序的具體位置。option指令指明pptpd程序所需的配置文件的位置。localip指明建立VPN連接時(shí)VPN服務(wù)器端分配的IP地址。remoteip指明建立VPN連接時(shí)其客戶端的IP地址。這里需要指出IP地址的寫(xiě)法,可以寫(xiě)多個(gè)IP地址用逗號(hào)隔開(kāi),或者指定IP地址范圍,例如“192.168.0.234,192.168.0.245-249,192.168.0.254”。這里要注意,如果不設(shè)置localip,VPN服務(wù)器將對(duì)每一個(gè)VPN連接在服務(wù)器端各分配一個(gè)IP地址和對(duì)應(yīng)的VPN客戶通信。如果設(shè)置localip為單一的IP地址,則VPN服務(wù)器將對(duì)每一個(gè)VPN連接在服務(wù)器端都使用指定的IP地址和對(duì)應(yīng)的VPN客戶通信。如果設(shè)置localip為一個(gè)IP地址范圍,VPN服務(wù)器將對(duì)每一個(gè)VPN連接在服務(wù)器端都使用指定的IP地址和對(duì)應(yīng)的VPN客戶通信;若地址分配完,則新的VPN連接將被拒絕。 4.有關(guān)PPP的配置 編輯PPP的配置文件/etc/ppp/options.pptpd(在poptop配置文件中option指令指定)為如下命令: debugnamepptpdauthrequire-chapproxyarp 上面代碼中,name指令用來(lái)指定服務(wù)器名;auth用來(lái)設(shè)置需要使用/etc/ppp/chap-secrets文件進(jìn)行身份驗(yàn)證,require-chap設(shè)置使用chap認(rèn)證;proxyarp用來(lái)實(shí)現(xiàn)arp代理功能。 接下來(lái)編輯chap安全認(rèn)證文件/etc/ppp/chap-secrets為如下一行命令: testpptpd123* 其中test是ppp賬號(hào);pptpd是在/etc/ppp/options.pptpd中設(shè)置的服務(wù)器名;123是test賬號(hào)的密碼;“*”表示允許test賬號(hào)從任何主機(jī)登入PPP服務(wù)器,類似的可以添加其它VPN用戶。 5.將Poptop的運(yùn)行情況加入系統(tǒng)日志 編輯syslogd的配置文件/etc/syslog.conf,增加如下一行命令: daemon.debug/var/log/pptpd.log 然后重新啟動(dòng)syslogd守護(hù)進(jìn)程,這樣VPN服務(wù)器的運(yùn)行日志將被保存在/var/log/pptpd.log文件中。 6.啟動(dòng)Poptop服務(wù)器 使用如下指令啟動(dòng)Poptop服務(wù): servicepptpdstart 或 /etc/rc.d/init.d/pptpdstart 至此,VPN服務(wù)器已經(jīng)可以接受VPN客戶端撥入,如果有問(wèn)題,可以查看日志/var/log/pptpd.log Windows客戶端遠(yuǎn)程撥入VPN服務(wù)器 Poptop支持Windows和Unix等多種類型操作系統(tǒng)的VPN客戶端,這里以WindowsXP為客戶端介紹撥號(hào)進(jìn)入VPN服務(wù)器。由于Windows系統(tǒng)內(nèi)置PPTP協(xié)議的支持,所以可以直接進(jìn)行撥號(hào)進(jìn)入VPN服務(wù)器,以下是詳細(xì)過(guò)程。 1.建立VPN連接 通過(guò)新建網(wǎng)絡(luò)連接向?qū)Ы⒁粋(gè)VPN連接。“網(wǎng)絡(luò)連接類型”選擇“連接到我的工作場(chǎng)所的網(wǎng)絡(luò)(O)”,“網(wǎng)絡(luò)連接”選擇“虛擬專用網(wǎng)絡(luò)連接(V)”,“連接名”可以輸入自己要連接的公司名稱,“VPN服務(wù)器選擇”輸入VPN服務(wù)器的公網(wǎng)IP地址。單擊“完成”即可建立VPN連接。 2.撥號(hào)進(jìn)入VPN服務(wù)器 雙擊新建立的VPN連接的快捷方式,在“連接”對(duì)話窗口中輸入在VPN服務(wù)器上設(shè)置的用戶名和密碼。 取消“屬性”中“安全”標(biāo)簽下的“要求數(shù)據(jù)加密(沒(méi)有加密就斷開(kāi))(I)”復(fù)選框。 3.查看已建立的VPN連接 在VPN客戶端查看連接的狀態(tài)。 在VPN服務(wù)器上使用ifconfig命令查看網(wǎng)絡(luò)狀態(tài)。 為VPN服務(wù)器啟用MPPE加密 上面的設(shè)置雖然可以實(shí)現(xiàn)遠(yuǎn)程用戶撥入VPN服務(wù)器,但是由于還沒(méi)有啟動(dòng)更安全的加密,所以存在一定的安全隱患。這里介紹在VPN服務(wù)器上啟用MPPE加密,以增強(qiáng)VPN通信的安全性。 RFC3078文檔對(duì)MPPE加密進(jìn)行了詳細(xì)的描述,它的全稱是微軟點(diǎn)到點(diǎn)加密協(xié)議。這里需要注意,Linux2.6.15內(nèi)核以后的版本都內(nèi)置了對(duì)MPPE的支持,之前的版本則不支持MPPE,如果使用的內(nèi)核是2.6.15以前的版本,就必須對(duì)內(nèi)核升級(jí),加入對(duì)MPPE的支持。 1.MPPE加密功能的安裝與配置 首先需要安裝動(dòng)態(tài)內(nèi)核模塊支持DKMS(DynamicKernelModuleSupport)。DKMS創(chuàng)建了允許內(nèi)核的依賴模塊駐留的一個(gè)框架,利用這個(gè)框架使得升級(jí)內(nèi)核時(shí)內(nèi)核模塊的重建變得非常容易。利用DKMS還可以使Linux的銷售商在新內(nèi)核發(fā)布之前可以提供驅(qū)動(dòng)程序。這里將使用DKMS在Linux內(nèi)核中加入支持MPPE功能的模塊。DKMS的最新版本可以從www.poptop.org獲得,使用“rpm-ivhdkms-2.0.10-1.noarch.rpm”命令完成安裝。 接下來(lái)需要安裝內(nèi)核的MPPE支持包“kernel_ppp_mppe”可以從 www.poptop.org下載最新的二進(jìn)制RPM包,使用rpm-ivhkernel_ppp_mppe-1.0.2-3dkms.noarch.rpm命令完成安裝。需要注意的是,必須先從Linux安裝光盤(pán)安裝內(nèi)核的源代碼包,否則“kernel_ppp_mppe”無(wú)法進(jìn)行正常的安裝。 需要測(cè)試一下MPPE模塊,如果系統(tǒng)內(nèi)核已經(jīng)加載了“ppp_generic”模塊,則必須先將其卸載(使用“rmmodppp_generic”命令)或者重新啟動(dòng)操作系統(tǒng)后再測(cè)試。測(cè)試指令為“modprobeppp-compress-18&&echosuccess”,如果輸出“success”,則表明模塊加載成功。運(yùn)行指令“lsmod”可以看到內(nèi)核模塊。 另外,由于MPPE需要使用“MSChapV2”進(jìn)行認(rèn)證,所以需要在PPP的配置文件中加入“require-mschap-v2”。 2.Windows客戶端的配置 在VPN撥號(hào)的“連接”對(duì)話窗口中選擇“屬性”,選中“屬性”中“安全”標(biāo)簽下的“要求數(shù)據(jù)加密(沒(méi)有加密就斷開(kāi))(I)”復(fù)選框,這樣就可以使用MPPE的128位加密來(lái)保證VPN連接的安全性。在VPN客戶端查看連接的狀態(tài),可以看到已經(jīng)使用了MPPE的128位加密。 Linux客戶端遠(yuǎn)程撥入VPN服務(wù)器 目前的Linux操作系統(tǒng)發(fā)行版本一般都沒(méi)有內(nèi)置PPTP協(xié)議的支持,使用Linux撥號(hào)進(jìn)入VPN服務(wù)器之前必須完成相關(guān)的協(xié)議軟件和配置。下面以RedHat9.0為例介紹其詳細(xì)過(guò)程。 本文將使用一個(gè)開(kāi)放源代碼的基于Linux的PPTPClient軟件套件作為PPTP服務(wù)器的客戶端程序。 首先是安裝MPPE的相關(guān)模塊,其安裝過(guò)程和VPN服務(wù)器的安裝過(guò)程相同。然后升級(jí)PPP軟件包,軟件包的下載和安裝與上面“Linux下基于PPTP協(xié)議的VPN服務(wù)器的實(shí)現(xiàn)”中的第一步完全相同,這里不再贅述。 PPTPClient軟件包需要從其官方網(wǎng)站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”。接下來(lái)從上面的鏈接下載最新的圖形配置程序“pptpconfig-20060214-1.noarch.rpm”,安裝命令為“rpm-ivhpptpconfig-20060214-1.noarch.rpm”。 配置程序pptpconfig需要以root用戶運(yùn)行,在Linux圖形界面的終端中輸入“pptpconfig”命令,出現(xiàn)配置界面。 ◆在配置窗口中輸入相關(guān)的VPN服務(wù)器的信息,在Encryption標(biāo)簽下選中“RequireMicrosoftPoint-to-PointEncryption(MPPE)”。選擇“Add”按鈕之后,完成VPN連接的配置。選擇“starting...”按鈕,出現(xiàn)VPN連接窗口。 ◆單擊“Ping”按鈕向VPN服務(wù)器的內(nèi)部網(wǎng)絡(luò)地址發(fā)送測(cè)試數(shù)據(jù)包。 ◆在終端中使用“ifconfig”可以看到新建立的VPN連接。 至此,Linux客戶端已經(jīng)和VPN服務(wù)器建立了連接,可以通過(guò)“PPP0”接口訪問(wèn)部門(mén)的內(nèi)部網(wǎng)絡(luò)。 通過(guò)本文的介紹,可以看出基于Linux的VPN解決方案有穩(wěn)定可靠,為企業(yè)提供了是一種行之有效的VPN解決方案。 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |