View printable page
VPN How-To
VPN How-To
VPN 是 Virtual Private Network
的縮寫,意思是虛擬私有網路,也就是在公開的網路架構上,虛擬一個私有的網路。這個虛擬的網路架構具有和真正私有網路一樣的安全性、管理便利性及效能。VPN
的目的是用來取代原本專線式的私有廣域網路,以更符合成本效益的方式來達成相同的目的。
舉例而言,如果您有二個分公司位於不同的城市,每個分公司內部都有自己的私有內部網路,而二個公司的內部網路原本是無法連接使用,除非建立一條專線,以連接二個公司的網域。然而,若改用 VPN
的方式,我們可以使用現有的網際網路架構,在二個公司分別架設 VPN 伺服器,則二個不同城市的公司內部網路就可以連接起來。另外,我們也可以從家裡使用
Windows VPN 撥號連線到公司內部網路中。
和傳統的專線式私有網路相比,由於 VPN
使用現成低廉的網路架構,所以成本上便宜許多,而且日後不論是要進行線路變更或架構更動也比較容易。本文中,我們將介紹如何使用 FreeBSD 建立 VPN
Server,讓使用者可以從 MS Windows 上使用 VPN 撥路連線到公司內部網路。
我們使用 mpd 這個軟體來建立 PPTP 的 VPN 連線,PPTP 是 Windows 所使用的 VPN。我們在 FreeBSD
上建立 VPN 之後,使用者可以自遠端使用 Windows 經由 Internet 使用 VPN 撥號連到公司的內部區網。
基本架構如下:
我們假設公司內部網路 IP 為 192.168.x.x,而 FreeBSD 這台 NAT Server 上,我們另外安裝了 mpd 這套 VPN
軟體。
步驟一:
請先確認在 Kernel 中有下列這行設定:
# 如果您使用的是 FreeBSD 4.x
pseudo-device tun # Packet tunnel.
# 如果您使用的是 FreeBSD 5.x 以後
device tun # Packet tunnel.
|
步驟二:
接著我們要在 FreeBSD 的 NAT server 上安裝 mpd5,請使用下列指令安裝:
# cd /usr/ports/net/mpd5
# make install clean
如果過程中有出現設定選單,使用預設值即可。
步驟三:
安裝完畢後,在 /usr/local/etc/mpd5 目錄中,新增一個
mpd.conf,並編輯內容如下:
startup:
# 預設使用 pptp_server 這個項目的設定
default:
load pptp_server
pptp_server:
# 設定一個 IP Pool 名為 LANPOOL,這個 IP Pool 就是要當 VPN client 連上來
# 後,伺服器要分配給它的 IP。我們只允許 5 個 client 連接,所以只設了 5
# 個 IP (56~60)。
set ippool add LANPOOL 172.16.0.56 172.16.0.60
# Create a bundle template named VPN
create bundle template VPN
# Interface configuration
# On demand is only useful when we want to make an outgoing connection
set iface disable on-demand
set iface idle 0
# Since we do not want to play routing tricks we'll proxy arp
# to the LAN so traffic will find its way to the interace
set iface enable proxy-arp
set iface enable tcpmssfix
# IP options
# TCP header compression
set ipcp yes vjcomp
# VPN server 的 IP,當 VPN client 連上後,客戶端及伺服器端都會有一組新的 IP。
set ipcp ranges 172.16.0.1/32 ippool LANPOOL
# This is the resolver that is available on the local lan
###set ipcp dns 10.15.22.155
# Set the encryption on the VPN
set bundle enable compression
# Let this bundle use mppc
# Use 128 bit MMPE encryption
set ccp yes mppc
set mppc no e40
set mppc yes e128
# Less secure but fastre recovery from lost packets
set mppc yes stateless
#Create links
create link template VPNLINK pptp
# Set bundle template to use
set link action bundle VPN
# Multilink adds some overhead, but gives full 1500 MTU.
set link enable multilink
# Enable address and control field compression, and protocol
# field compression
set link yes acfcomp protocomp
# Turn pap and chap type authentication off.
set link no pap chap
# Require CHAP authentication from the peer NB: Use enable The
# use of enable and accept have slightly different meaning in
# the context of PAP and CHAP.
set link enable chap
set link keep-alive 30 300
# We reducing link mtu to avoid GRE packet fragmentation.
set link mtu 1460
# Configure PPTP
# the address to which you will have to connect using your vpn client
# 設定 VPN 伺服器的對外 IP。
set pptp self 59.124.41.242
# Allow to accept calls
set link enable incoming
|
步驟四:
然後我們要新增一個文字檔 /usr/local/etc/mpd5/mpd.secret 存放使用者資料及密碼,其格式為
username password:
alex Saophone
bill Pwanuts
john mypasswd
|
由於這個檔案內容包含了 password,所以我們必須將它設為只有 root 可以讀取:
# chmod 640 /usr/local/etc/mpd5/mpd.secret
步驟五:
接著我們要編輯 /etc/rc.conf 以在開機時啟動 mpd5。
mpd_flags="-b"
mpd_enable="YES"
|
現在我們可以啟動 VPN 服務了:
# /usr/local/etc/rc.d/mpd5 start
步驟六:
在 Windows 端的設定方面,請在控制台的網路連線中建立一個新的網路連線:
下圖中,我們選第二個選項,以建立 VPN 連線。
依照畫面中的指示,我們選擇建立一個虛擬私人網路連線:
請您為這個連線命名:
如果您使用 ADSL 或 modem,在使用 internet 之前必須先撥號連線,您可以在這裡選擇當使用 VPN
時先自動撥接,或者您可以可選擇不要撥接起始連線,只要您在使用 VPN 時先將電腦連上 Internet 即可。
接著請輸入 VPN 伺服器的對外 IP,您可以可以輸入 domain name。
完成後,會自動跳出一個撥號視窗,您也可以在控制台中的網路連線中找到您新增
的VPN 連線。在下圖出現時,請選擇內容:
接著請選擇[安全性] 的標籤,在安全性選項中,我們選擇[進階] -> [設定]:
進入進階設定後,請確認您的設定是否為下圖所示:
都設定好之後,請按確定回到下列畫面。接著輸入帳號及密碼後就可以進行撥號了。在開始使用VPN 撥號前,如果您使用的是撥接式的ADSL
或Modem,您必須先將建立ADSL 連線,才可以進入VPN 撥號喔。
|