Poptop - 建立 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.檢查 Kernel
          步驟2.安裝 poptop 套件
          步驟3.修改 poptop 設定檔 (pptpd.conf)
          步驟4.修改 ppp.conf 設定檔
          步驟5.建立 secure 裝置設定檔
          步驟6.建立 ppp.secret 密碼檔
          步驟7.啟動 poptop 服務
4、參考





2、實作環境

  • FreeBSD 5.3-RELEASE
  • poptop-1.1.4.b4_3





3、安裝及設定

本次實作的 poptop 其穿隧技術 (Tunneling) 為 PPTP

步驟1.檢查 Kernel

在安裝 poptop 前先確定我們的核心是否有開啟 tun 裝置。
/usr/src/sys/i386/conf/GW       //GW 為 kernel name
 device  tun   # Packet tunnel.     //確定此行沒註解掉




步驟2.安裝 poptop 套件

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




步驟3.修改 poptop 設定檔 (pptpd.conf)

修改 poptop 設定檔 (pptpd.conf) 內容如下:
vi /usr/local/etc/pptpd.conf     //修改內容如下
 option /etc/ppp/ppp.conf         //指定 ppp 設定檔路徑
 listen 61.60.59.58               //指定要開放 VPN 連結的 Public IP
 localip 192.168.88.1             //指定 VPN Client 屆時的 Gateway IP
 remoteip 192.168.88.50-60        //指定發給 VPN client IP Range
 pidfile /var/run/pptpd.pid       //指定 pid 檔案路徑




步驟4.修改 ppp.conf 設定檔

其中 set ifaddr 為設定 VPN Client 的 Gateway IP 及發放的 IP Range。
vi /etc/ppp/ppp.conf     //修改 ppp.conf 設定檔內容如下
 loop:
 set timeout 0
 set log phase chat connect lcp ipcp command
 set device localhost:pptp
 set dial
 set login
### Server (local) IP address, Range for Clients, and Netmask
 set ifaddr 192.168.88.1 192.168.88.50-192.168.88.60 255.255.255.0  set server /tmp/loop "" 0177
 loop-in:
 set timeout 0
 set log phase lcp ipcp command
 allow mode direct
 pptp:
 load loop
 enable chap
 enable MSCHAPv2
 disable deflate pred1
 deny deflate pred1
 set mppe 128 stateless
 enable MPPE
 accept MPPE
 enable chap81
 disable pap
 enable proxy
 accept dns
### DNS Servers to assign client
 set dns 192.168.1.1                   //指定 VPN Client 的 DNS IP
 set device !/etc/ppp/secure




步驟5.建立 secure 裝置設定檔

建立裝置設定檔內容如下:
# vi /etc/ppp/secure       //加入如下二行
 #!/bin/sh
 exec /usr/sbin/ppp -direct loop-in


將該檔案權限設為 700 (安全性設定)。
chmod 700 secure



步驟6.建立 ppp.secret 密碼檔

建立 VPN Client 密碼檔 (ppp.secret)。
vi /etc/ppp/ppp.secret   //建立 VPN Client 帳號密碼檔
 weithenn 123               //id、pwd




步驟7.啟動 poptop 服務

鍵入如下指令啟動 poptop 服務。
/usr/local/etc/rc.d/pptpd.sh start   //啟動 poptop 服務
啟動 poptop 服務會開啟 Port 1723 (可參考 /etc/service) 也可利用 sockstat 來查看狀態。
sockstat | grep pptpd
 root  pptpd   23468 15 tcp4   61.60.59.58:1723  *:*   //啟動 poptop 服務






4、參考