摘要:VPN技術提供了一種通過公用網(wǎng)絡安全地對內部專用網(wǎng)絡進行遠程訪問的連接方式,可以將企業(yè)分散在各地的網(wǎng)絡通過現(xiàn)有的公共網(wǎng)絡安全地連接起來,利用Linux可以為企業(yè)簡單、安全、高效的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 引言
隨著企業(yè)規(guī)模不斷擴大,分支機構不斷擴展,移動辦公不斷增加,企業(yè)內部及企業(yè)間信息傳遞越來越多。如何以
最低的費用保障通信的高效性和安全性,是企業(yè)極其關注的問題。在此背景下,VPN技術的出現(xiàn),以其低通信費、高靈活性和安全性的優(yōu)勢贏得了越來越多的企業(yè)的青睞,是一種非常廉價、安全、靈活的遠程網(wǎng)絡接入解決方案。
市場研究公司InfoneticsResearch發(fā)表的題為“虛擬專用網(wǎng)和安全服務:年度市場規(guī)模與預測”的報告稱,2008年全球虛擬專用網(wǎng)服務的銷售總收入將超過300億美元。效率的提高、虛擬專用網(wǎng)提供的節(jié)省成本和整個機構范圍內應用虛擬專用網(wǎng)的復雜性是推動虛擬專用服務收入增長的主要因素。2008年,在虛擬專用網(wǎng)服務收入方面大多數(shù)增長將來自亞太地區(qū)。歐洲、中東和非洲地區(qū)也將大幅增長。
2 VPN的概述
VPN(Virtual Private Network)中文名為“虛擬專用網(wǎng)”。 是指依靠ISP(Internet服務提供商)和其它NSP(網(wǎng)絡服務提供商),在公用網(wǎng)絡中建立一個臨時的、安全的網(wǎng)絡連接,能實現(xiàn)對遠程網(wǎng)絡安全訪問的數(shù)據(jù)通信網(wǎng)絡技術。它通過特殊的加密通訊協(xié)議,在公用網(wǎng)絡中建立臨時的、安全的專用數(shù)據(jù)通信隧道,對內部專用網(wǎng)絡進行遠程訪問的技術。
對于一個企業(yè)的內部網(wǎng)與遠程分支機構的局域網(wǎng)來說,它們就可以通過Internet這一公用網(wǎng)絡,建立一條經(jīng)過誰和加密的安全隧道實現(xiàn)互聯(lián),使企業(yè)遠程用戶或移動用戶可以隨時隨地通過Internet連接到企業(yè)Intranet。
目前可以用硬件或軟件來實現(xiàn)VPN,如具有VPN連接功能的路由器、防火墻、交換機設備或Linux、Windows 2000/2003 Server等網(wǎng)絡操作系統(tǒng)。但是硬件設備配置較復雜,費用也相對較高,且需要額外的管理和安全維護,還可能出現(xiàn)不同廠家產(chǎn)品不兼容問題。利用Linux實現(xiàn)VPN,不需要昂貴的專用設備,節(jié)省了網(wǎng)絡建設成本,配置及維護都比較簡單,更很需要的是,Linux不需要太高的硬件成本也可以成為性能穩(wěn)定、高效安全、造價低廉的VPN服務器。
3 Linux中的VPN技術
Linux不但可以充當VPN服務器,也可以作為VPN的客戶機,假設要配置一個遠程用戶各企業(yè)內部網(wǎng)之間的VPN連接,我們可以用一臺運行RedHat Linux 9.0或其它版本的Linux系統(tǒng)的計算機作為VPN服務器,VPN客戶機則可以使用運行Windows98或以上各版本的計算機,也可以是運行Linux系統(tǒng)的計算機。其配置主要包括兩個步驟:
(1)VPN服務器配置,使它能夠接受VPN遠程接入;
(2)VPN客戶端連接的配置,使之能夠撥出到VPN服務器上。
3.1 VPN服務器配置
建立基于PPTP的Linux VPN服務器配置,并根椐以下要求配置VPN服務器:
(1)VPN服務器硬件環(huán)境配備了兩塊網(wǎng)卡,分別為eth0 和eth1,其中eth0連接到Internet, IP地址為192.168.1.20; eth1連接到內部網(wǎng)絡,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賬戶登錄系統(tǒng),進入安裝目錄/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盡量不要同一個網(wǎng)段。您也可以單獨指定某個地址或者多段地址,用逗號隔開。
(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)。
如果出現(xiàn)黑體字部分表示一切正常,那么Linux一個基本PPTP VPN服務器的設置就初步了,下面對其進行MPPE加密。
(5)編輯文件/etc/syslog.conf,增加一行:daemon.debug /var/log/pptpd.log,重新啟動syslogd。
(6)打開防火墻端口
將Linux服務器的1723端口和47端口打開,并打開GRE協(xié)議。
打開防火墻設置IP偽裝轉發(fā)設置了IP偽裝轉發(fā),通過VPN連接上來的遠程計算機才能互相ping通,實現(xiàn)像局域網(wǎng)那樣的共享。用下面的命令進行設置:
#echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F -t filter
/sbin/iptables -F -t nat
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 47 -j ACCEPT
/sbin/iptables -A INPUT -p gre -j ACCEPT
(7)啟動VPN服務并開啟路由的PPTP協(xié)議。找一臺windows的機器,IP為:192.168.1.13,新建一個VPN的連接,服務器為192.168.1.20,用戶名為:gdcvi,密碼為:gdcvi,可以成功連接了。在windows的cmd下運行ipconfig,如圖3。
看到多了一個網(wǎng)絡連接,IP為:192.168.2.1,正是前是配置文件里設置的遠程IP,這樣這臺windows的客戶端成功連上了這個VPN服務器。
注意:
(1)當VPN撥號失敗時,用戶應該檢查網(wǎng)絡連接是否通暢,客戶機是否已經(jīng)連接到VPN 服務器上,用戶名、密碼是否正確。
(2)當VPN連接斷線時,再次進行撥號,出現(xiàn)錯誤提示時,用戶可稍等2~3分鐘再撥號,因為PPTPD VPN服務器有較長的反應處理時間(一個BUG)。
(3)如果個人電腦上有個人防火墻,必須開放端口1723、1788或關閉掉防火墻,停止保護功能,否則不能正常進行VPN撥號連接與訪問。
(4)VPN端口:1723,此外還有一個[color=red]GRE[/color],協(xié)議名稱非TCP、UDP、ICMP!這是VPN的主要傳輸協(xié)議,所以要配置防火墻,一定要開這個。
3.2 Linux VPN 的客戶機如何訪問Linux VPN的服務器
(1)安裝基礎軟件包libglade和libglade-devel
libglade和libglade-devel是一個用于GTK+/GNOME程序。從xxx.glade文件自動生成程序界面或界面中的一部分的庫。
(2)安裝DKMS 模塊軟件包
DKMS(Dynamic Kernel Module Support)動態(tài)內核模塊支持。旨在創(chuàng)建一個內核相關模塊源可駐留的框架,以便在升級內核時可以很容易地重建模塊。這將允許 Linux 供應商提供較低版本的驅動程序,而無需等待新內核版本發(fā)行,同時還可以省去嘗試重新編譯新內核模塊的客戶預期要完成的工作。DKMS工作原理見圖4。
#rpm -ivh dkms-2.0.5-1.noarch.rpm
(3)安裝ppp內核模塊:#rpm-ivh kernel_ppp_mppe-0.0.5-2dkms.noarch.rpm。
(4)升級ppp軟件包:#rpm –Uvh ppp-2.4.3-4.rhel3.i386.rpm。
(5)安裝pptpd:#rpm –ivh pptpd-1.2.3-1.i386.rpm。
(6)安裝客戶端軟件pptpconfig和圖形前端。
(7)配置與使用和啟動圖形前端pptonfig。
如果正常安裝后,請su到root用戶,然后運行pptpconfig.php。
注意:運行之前請確保/usb/sbin與/sbin在系統(tǒng)路徑下,否則會出現(xiàn)沒發(fā)現(xiàn)ip與pptp命令的錯誤。
解決辦法:[root@eadd-lyb lyb]# export PATH=$PATH:/usr/sbin/:/sbin/
在命令行下使用命令“pptpconfig”即可啟動啟動圖形前端。Server選項標簽依次填上本地連接名,服務器名或IP,域(可選),用戶名和密碼。
Routing 標簽用來設置路由信息??捎肻"xxx.xxx.xxx.xxx/xx\"的形式增加新的路由。增加了一條到192.168.3.0/24的路由,以訪問該網(wǎng)段。routing style選All to Tunnel,可改變本機的缺省路由,使本機的所有的網(wǎng)絡流量都通過該通道,如圖5。
DNS選項:DNS標簽用來設置建立pptp連接后如何進行名稱解析。不啟用自動配置,將使用手工輸入的DNS服務器代替/etc/resolv.conf里的名稱服務器進行名稱解析。啟用自動配置,將會用拔號自動獲得的DNS服務器替代/etc/resolv.conf里的DNS服務器,兩種方式/etc/resolv文件都會被pptpconfig自動備份。連接斷開后,pptpconfig會自動恢復舊有/etc/resovl.conf文件。
DNS選項卡通常十分簡單;它是自動的,或者我們需要輸入一些基本的DNS信息及可能需要包含的選項,如圖6。
Encryption(加密)選項如圖7。Encryption標簽用于設置加密信息。
這里我們選擇需要微軟點對點加密。
多出一個選項即: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標簽可配置一些調試信息和連接狀態(tài)。
選項卡是我們的最后一個選項卡。如圖8。
說明:
Start tunnel when this program starts:自動啟動VPN隧道。
Enable contion debugging facilities:顯示連接信息。
Reconnect if disconnected:自動重復連接。
(8)所有選項完成后點擊“Add”按鈕,系統(tǒng)會自動連接PPTP VPN。此時屏幕會出現(xiàn)一個連接狀態(tài)界面如圖9。
其中ppp0是Linux客戶端連接PPTP VPN服務器的接口。
下面我們使用連接狀態(tài)界面的Ping按鈕測試連接狀況,如圖11。
(9)連接成功后就可與服務器通信了,但如果要有其它子網(wǎng)通信,就要增加路由信息。本例中如要和192.168.2.0子網(wǎng)通信可這樣寫:
# 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內核的路由功能,因此客戶端可以像在內部網(wǎng)絡里一樣直接訪問各種資源。操作方法和普通局域網(wǎng)完全一樣,相互之間可以通過“網(wǎng)上鄰居”,或者直接在窗口地址欄中輸入“\\\\對方IP地址”等式邏輯方式來訪問共享的軟硬資源。
4 結束語
VPN技術有很多優(yōu)勢,應用前景廣闊,具體實施也并不困難,利用Linux構造VPN網(wǎng)絡,更是一個穩(wěn)定、安全、高效和廉價的方案,非常適合正在發(fā)展中的中小企業(yè)和大公司在各地的分支機構,隨著隨著國家信息化進程的加快,特別是電子政務、電子商務的日益推廣,VPN技術將會被越來越多的人所接受。
參考文獻
[1] 陳國浪. VPN在Windows 2000中的實現(xiàn)[J]. 溫州職業(yè)技術學院學報.
[2] 王達. 虛擬專用網(wǎng)(VPN)精解[M]. 清華大學出版社.
[3] http://tech.sina.com.cn/i/w/2004-08-06/0824399306.shtml. 調查:08年全球VPN市場規(guī)模將達300億美元.