MPD 5 - 建立 PPTP 的 VPN 通道

1、前言

以下前言內容引用自 D-Link 技術新知

穿隧技術 (Tunneling):穿隧技術是為了將私有數據網路的資料在公眾數據網路上傳輸,所發展出來的一種資料包裝方式(Encapsulation),亦即在公眾網路上建立一條秘密通道。現在穿隧技術所使用的協定主要有:IPsec、PPTP 及 L2TP 等三種。


  • IPsec (IP Secruity):為第三層的穿隧技術,專門為 IP 所設計不但符合現有 IPv4 的環境,同時也是 IPv6 的標準,它也是 IEIF 所制定的業界標準,目前 IETF 從 1995 年起,陸續公佈許多網路安全之相關技術標準。這些標準統稱為 IPSec (IP Security),可參考 RFC 1825RFC 1826RFC 1827RFC 1828RFC 1829RFC 1851RFC 2085RFC 2104
  • PPTP(Point to Point Tunneling Protocol):定義了一個主從式的架構,主要是由 PNS (PPTP Network Server) 和 PAC (PPTP Access Concentrator) 組成的機制,乃是透過這個機制來支援 VPN 的功能。將 IP、IPX 或 NetBEUI 通訊協定封裝在 IP 封包中,並使用 TCP 方式來交換加密通道的維護訊息。
  • L2TP (Layer 2 Tunneling Protocol):結合 Layer-2 Forwarding (L2F) 和 PPTP 的協定由 IETF 所提出的一個資料連結層的加密通訊協定。
PPTP 與 L2TP 均為第二層的穿隧技術,適合具有 IP/IPX/AppleTalk 等多種協定的環境。IPsec、PPTP、L2TP 三者,最大的不同在於運用 IPsec 的技術,使用者可以同時使用 Internet 與 VPN 的多點傳輸功能 (包括 Internet/Intranet/Extranet/Remote Access...等),而 PPTP 及 L2TP 只能執行點對點 VPN 的功能,無法同時執行 Internet 的應用,使用時較不方便而在安全性方面,IPSec 會對整個傳輸資料做加密而 PPTP 及 L2TP 則是僅針對封包的再包 (Encapsulation) 並未對資料做加密處理,安全性相對較低。

驗證通訊協定
  • PAP (Password Authentication Protocol):當驗證方式採用 PAP 時,則用戶端要連結到遠端伺服器時所傳送的帳號及密碼是以 明文 傳送,也就是沒加密的因此只要有心人士在其封包傳送過程中抓取,則帳號密碼就被看得一清二楚啦。
  • CHAP (Chanllenge Handshake Authentication Protocol):當驗證方式採用 CHAP 時,則用戶端要連結到遠端伺服器時所傳送的密碼是以 MD5 加密 後才傳送。
  • MSCHAPv2 (Microsoft Chanllenge Handshake Authentication Protocol Version 2):當驗證方式採用 MSCHAPv2 時,採 雙向驗證 方式也就是遠端伺服器可以驗證用戶端身份,也可讓用戶端確認所連接的是正確的遠端伺服器。





文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.安裝 mpd 套件
          步驟2.修改 mpd 設定檔 (mpd.conf)
          步驟3.修改 mpd 密碼檔 (mpd.secret)
          步驟4.修改 rc.conf
          步驟5.建立 mpd.log
          步驟6.啟動 mpd 服務
          步驟7.設定 Windows XP PPTP Client
          步驟8.Web 查看 VPN 狀態





2、實作環境

  • FreeBSD 8.0-RELEASE-p2
  • mpd-5.5





3、安裝及設定

步驟 1. 安裝 mpd 套件

切換至 Ports Tree 路徑安裝 mpd 套件。
cd  /usr/ports/net/mpd5      //切換到安裝路徑
make install clean           //安裝套件並清除暫存檔案




步驟 2. 修改 mpd 設定檔 (mpd.conf)

修改 mpd 設定檔 (mpd.conf) 內容如下。
vi /usr/local/etc/mpd5/mpd.conf     //修改內容如下
 startup:
        set user weithenn weithenn1688  //Web 登入查看 VPN 狀態時的帳號及密碼
        set web self 61.60.59.58 5006   //Web 查看 VPN 狀態的 IP 及 Port
        set web open                    //開啟 Web
 default:
        load pptp_server
### Server IP 為 Gateway IP (192.168.88.1)
### Client IP 為 VPN Client 屆時連通後發給的 IP (192.168.88.56 ~ 60)
 pptp_server:
        set ippool add LANPOOL 192.168.88.56 192.168.88.60
        create bundle template VPN
        set iface disable on-demand
        set iface idle 0
        set iface enable proxy-arp
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        set ipcp ranges 192.168.88.1/32 ippool LANPOOL
        set bundle enable compression
        set ccp yes mppc
        set mppc no e40
        set mppc yes e128
        set mppc yes stateless
        create link template VPNLINK pptp
        set link action bundle VPN
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap
        set link enable chap
        set link keep-alive 30 300
        set link mtu 1460
        set pptp self 61.60.59.58
        set link enable incoming




步驟 3. 修改 mpd 密碼檔 (mpd.secret)

修改 mpd 密碼檔 (mpd.secret) 內容如下,由於此密碼檔為 明碼 的文字檔案,因此設定完成後建議將檔案權限設定為 600。
/usr/local/etc/mpd/mpd.secret    //修改內容如下
 weithenn    "vpn123"                //設定 VPN 帳號及密碼
chmod 600 mpd.secret             //設定檔案權限




步驟 4. 修改 rc.conf

修改 /etc/rc.conf 檔以便系統重新開機時能自動啟動 mpd 服務。
vi /etc/rc.conf           //修改 rc.conf 內容如下
 gateway_enable="YES"        //啟動 Forwarding IP Packet (net.inet.ip.forwarding:1)
 mpd_flags="-b"              //加入此行,背景執行
 mpd_enable="YES"            //加入此行




步驟 5. 建立 mpd.log

建立 mpd.log 及修改 /etc/syslog.conf 檔以便將 mpd5 運作相關訊息寫入 mpd.log 內。
vi /etc/syslog.conf         //加入下列二行
 !mpd
 *.*     /var/log/mpd.log
touch /var/log/mpd.log      //建立 Log 檔
/etc/rc.d/syslogd reload    //重新載入 syslog.conf 設定




步驟 6. 啟動 mpd 服務

鍵入如下指令啟動 mpd 服務。
/usr/local/etc/rc.d/mpd5   start     //啟動
                            stop      //停止
                            restart   //重新啟動
                            rcvar     //顯示可加入至 rc.conf 的參數
                            status    //目前執行狀態

檢查 mpd 執行序是否執行。
ps aux |grep mpd
 root      1751  0.0  0.3 13452  5596  ??  Is   12:26PM   0:00.24 /usr/local/sbin/mpd5 -p /var/run/mpd5.pid -b

檢查 mpd 服務是否開啟對應 Port 1723 (可參考 /etc/service) 及剛才指定 Web 觀看 VPN 狀態的 Port 5006。
sockstat | grep mpd
 root     mpd5        23468 15 tcp4   61.60.59.58:1723      *:*
 root     mpd5        23468 15 tcp4   61.60.59.58:5006      *:*




步驟 7. 設定 Windows XP PPTP Client

上面步驟完成 VPN Server 設定後,接著設定 Windows XP PPTP Client 畫面如下,設定過程中只有一點必須注意即 PPTP Client 撥入 VPN 後是否採用 VPN Server 所指定的 Gateway IP 來取代 PPTP Client 本身的 Default Gateway,若您希望 PPTP Client 撥入 VPN 環境後仍維持本來的 Default Gateway 設定,則設定步驟如下:

  1. 點選【PPTP 連線 Icon】按下【右鍵】點選【內容】。
  2. 選擇【網路功能】頁籤 >> 點選【Internet Protocol (TCP/IP)】>> 按下【內容】。
  3. 按下【進階】>> 取消【使用遠端網路的預設閘道】勾選項目 >> 按下【確定】 即完成設定。




同一時間當 PPTP Client 服務撥入 VPN 環境成功後可看到目前是哪片 ng 網卡在處理這個 PPTP Client 的流量,如下可知目前是 ng1 在處理 PPTP Client (192.168.88.56) 的流量。
#ifconfig ng1
 ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1396     
inet 192.168.88.1 --> 192.168.88.56 netmask 0xffffffff




步驟 8. Web 查看 VPN 狀態

您可透過瀏覽器來隨時查看 VPN 狀態,透過上面步驟二所設定設定檔 mpd.conf 資訊中可知登入資訊如下:
  • URL: [http://61.60.59.58:5006]
  • Account: weithenn
  • Password: weithenn1688