簡介
OpenVPN是一個基於OpenSSL庫的應用層VPN實現。和傳統VPN相比,它的優點是簡單易用。 這裡簡單介紹一下基於 CA ,采用數字證書認證,可以劃分多個網段的 OpenVPN 配置方法。 Note 1: VNN 和 OpenVPN 很像。 Note 2: 這個東西對於突破國內網絡封鎖,保護通信自由很有意義,值得大力推廣。 安裝 OpenVPN Linux 下的安裝 首先,Kernel 必須支持 TUN/TAP 設備。在 2.6.x 內核中,對應的 Kernel 選項是 “Universal TUN/TAP device driver support”。 確認 Kernel 支持 TUN/TAP 後,可以下載 OpenVPN 編譯並安裝。這一步很 easy,不多說了。 Windows 下的安裝 從 http://www.openvpn.se (http://www.openvpn.se/) 下載安裝包安裝,這裡的安裝包帶一個 Client GUI 工具,很好用。 配置 OpenVPN 配置 OpenVPN Server 只說明在 Linux 下的配置。Windows 類似。創建 /etc/vpn/server.conf,內容如下:
port 1494 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem server 10.1.0.0 255.255.255.0 push "route 10.1.0.0 255.255.255.0" push "route 10.1.1.0 255.255.255.0" client-config-dir /etc/vpn/ccd route 10.1.1.0 255.255.255.0 client-to-client keepalive 10 120 user nobody group nobody persist-key persist-tun log-append openvpn.log verb 3 其中 ca.crt, server.key,server.crt 可以用以前貼出的 ca 工具創建,dh1024.pem 用 OpenVPN 自帶的工具創建。 這個配置文件創建了兩個網段:10.1.0.* 和 10.1.1.*,VPN 服務器將從這兩個網段中給 Client 分配 IP 地址。VPN Server 自身 IP 將是 10.0.0.1。 “client-config-dir”指明 Client 的專有配置文件目錄。在這個目錄下可以針對特定用戶建立配置文件。例如,要為用戶 abc 指定一個 IP 地址(如10.1.1.5)而不是讓 VPN Server 自動分配,可以在配置目錄/etc/vpn/ccd下建立一個 abc 文件,內容如下:
ifconfig-push 10.1.1.5 10.1.1.6
那麼 VPN Server 就會自動給 abc 用戶分配 10.1.1.5 這個地址。注意第一個IP地址 的最後一個數字(這裡是 5)必須是 4*n + 1 的數。 問題是,VPN Server 怎麼知道哪個用戶是 abc 呢?它是 Client 數字證書中的 Common Name 域來判斷的。就是說,在連接協商時如果 Client 端數字證書的 Common Name 是 abc,那麼 VPN Server 就找配置目錄下 abc 這個文件。
配置 OpenVPN Client 在 Client 機器上 OpenVPN 安裝目錄的 config 目錄下建立如下 client.ovpn 文件:
client dev tun proto udp remote vpn_server_ip 1494 ca ca.crt cryptoapicert "SUBJ: abc" nobind persist-key persist-tun verb 2
修改 remote 一行填上對應 VPN Server 的 IP 和 端口。ca.crt 和服務端 ca.crt 一樣,必須把這個 ca.crt 也放在 config 目錄下。 關鍵是 cryptoapicert "SUBJ: abc" 這行。這一行指定客戶端的數字證書從 Windows 證書 Store 裡取。在 IE 的“選項 -> 內容 -> 證書”頁面能看到你的個人數字證書。 SUBJ:abc 指明選擇證書主題中含有 abc 的證書。客戶端數字證書也可以用以前貼的 ca 工具生成,如果要給用戶 abc 簽發數字證書,只用指明 Common Name 是 abc 即可,然後把生成的 abc.p12 傳給 abc 用戶並告訴導入口令。abc 導入這個數字證書後,VPN Client 就可以工作了。 啟動 OpenVPN 服務端啟動 在 /etc/vpn 目錄下,執行:
openvpn --daemon --config server.conf
客戶端啟動 OpenVPN 帶一個 GUI 小工具,會裝在系統托盤裡。點菜單裡的 connect 即可。 常見問題 無法得到 IP 地址 通常是因為 DHCP Client 服務沒有啟動。在服務管理裡啟動即可。 更多內容請看Linux安全應用寶典 Linux安裝 Linux安裝專題,或