Linux下VPN的搭建 |
發布時間: 2012/5/28 10:43:22 |
基于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解決方案。 本文出自:億恩科技【www.laynepeng.cn】 |