2009-06-29 09:52:24波泉

教您如何30分鐘打造基於Linux的VPN伺服器

VPN(Virtual Private Network,虛擬專用網路)是專用網路的延伸,它可以通過共用Internet或公共網路連接類比點對點專用連接的方式,在本地電腦和遠端電腦之間發送資料。

它具有良好的保密性和不受干擾性,使雙方能夠進行自由而安全的點對點連接。下面介紹一種快速構建VPN伺服器的方法。

安裝軟體

1.安裝PPP

安裝PPP(Point-to-Point Protocol,點到點協議)2.4.2以上的版本,可以到http: //sourceforge.net/project/showfiles.php?group_id=44827下載ppp-2.4.3- 0.cvs_20040527.1.i386.rpm套裝軟體。

安裝命令如下:
代碼:

#rpm -Uvh ppp-2.4.3-0.cvs_20040527.1.i386.rpm

 

2.安裝內核MPPE補丁

安裝內核MPPE(Microsoft Point to Point Encryption,微軟點對點加密)補丁需要根據內核選擇相應的版本。筆者使用的Linux內核是2.4.20-31.9版本,可以到http: //pptpclient.sourceforge.net/mppe/kernel-mppe-2.4.20-31.9.i686.rpm下載相應的 kernel-mppe-2.4.20-31.9.i686.rpm套裝軟體。安裝命令如下:
代碼:


#rpm -ivh kernel-mppe-2.4.20-31.9.i686.rpm

 

用以下命令檢查內核MPPE補丁是否安裝成功:
代碼:


#modprobe ppp-compress-18


3.檢查PPP是否支援MPPE

用以下命令檢查PPP是否支持MPPE:
代碼:


#strings '/usr/sbin/pppd' |grep -i mppe | wc --lines

 

如果以上命令輸出為“0”則表示不支持;輸出為“30”或更大的數字就表示支援。

4.安裝PPTPD

http://sourceforge.net/project/showfiles.php?group_id=44827下載pptpd-1.1.4-b4.i386.rpm套裝軟體,並安裝。
代碼:


# rpm -ivh pptpd-1.1.4-b4.i386.rpm

 

修改配置檔

1.修改modules.conf文件

編輯/etc/modules.conf配置檔,加入如下內容:
代碼:


alias net-pf-47 ip_gre


2.修改pptpd.conf文件

編輯/etc/pptpd.conf配置檔,添加如下內容,確定本地VPN伺服器的IP地址和用戶端登錄後分配的IP地址範圍。
代碼:


debug
option /etc/ppp/options.pptpd
localip 192.168.0.254 #本地VPN伺服器的IP
remoteip 192.168.1.1-254 #用戶端被分配的IP範圍

 

3.修改options.pptpd文件

編輯/etc/ppp/options.pptpd配置檔,替換成如下內容:
代碼:


auth
lock
debug
proxyarp
lock
name rh9vpn #VPN伺服器的名字
multilink
refuse-pap
refuse-chap
refuse-mschap
refuse-eap
refuse-mschap-v2
require-mppe
ms-wins 192.168.1.2 #把想要在網路鄰居中看到的機器的IP填寫到這裏
ms-dns 192.168.1.2 #DNS伺服器地�}  
dump  
logfile /var/log/pptpd.log #日誌存放的路徑

 

4.修改chap-secrets檔

編輯/etc/chap-secrets配置檔,添加如下內容:
代碼:


# client server secret IP addresses
"test@gd.cn" * "test"     *

 

上面第二行代碼的四項內容分別對應第一行中的四項。“test@gd.cn”是Client端的VPN用戶名;“server”對應的是VPN伺服器的名字,該名字必須和/etc/ppp/options.pptpd檔中指明的一樣,或者設置成“*”號來表示自動識別伺服器;“secret”對應的是登錄密碼;“IP addresses”對應的是可以撥入的用戶端IP位址,如果不需要做特別限制,可以將其設置為“*”號。

5.設置IP偽裝轉發

只有設置了IP偽裝轉發,通過VPN連接上來的遠端電腦才能互相ping通,實現像局域網那樣的共用。用下面的命令進行設置:
代碼:


#echo 1 > /proc/sys/net/ipv4/ip_forward

 

可以將這條命令放到檔/etc/rc.d/rc.local裏面,以實現每次開機時自動運行該命令。

 

6.打開防火牆埠

 

將Linux伺服器的1723埠和47埠打開,並打開GRE協議。

代碼:


#/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

 

到這裏Linux伺服器的設置就完成了,下面將利用Windows用戶端進行測試。

測試

下面以Windows Server 2003為例來進行測試。

1.新建連接

單擊“開始→設置→網路和撥號連接”打開“網路和撥號連接”的視窗,再單擊“新建連接”打開“網路連接嚮導”的視窗,然後依次選擇或填寫“連接到我的工作場所網路→虛擬專用網路連接→公司名(可以隨便填寫)→不撥初始連接→IP位址(填入VPN伺服器的IP位址)”,最後單擊“確定”,就建立了一個新的連接。

2. 修改連接屬性

右擊剛才創建的連接,再依次單擊“屬性→網路(選擇TCP/IP協定)→屬性→高級”,然後把“在遠端網路上使用默認閘道”前面的勾去掉後單擊“確定”。

3.建立連接

雙擊剛才建立好的連接,填入提前設置好的用戶名和密碼,單擊“確定”進行連接。如果連接成功,在連接的“詳細資訊”裏應該可以看到伺服器所分配的IP位址等資訊。這時,就可以跟連接進入的局域網裏的其他電腦進行通信了。

如果用戶端使用的仍然是Windows 95或Windows 98,則需要到http://support.microsoft.com/support/kb/articles/q285/1/89.asp
下載相關的撥號程式。