OpenVPN 之 Windows XP 環境下的設定


OpenVPN 網址 -- openvpn.net, 自由軟體, 免費使用,  開放原始碼, 本例的版本為 2.1.1

* 下載後安裝, 這時您的電腦會多出一塊網路卡, 並且在 XP 右下角出現 "網路電纜已拔除" 的圖示, 這塊虛擬網卡是給 VPN 連線用的.

* 到控制台-->網路連線, 理論上, 如果您的電腦只裝一塊實體網卡, 您在這裡會看到兩塊, 一塊是您的實體網卡, 另一塊是虛擬網卡, 虛擬網卡旁會註明 "已拔除網路電纜", 因為這時您還未啟動 OpenVPN, 所以網卡呈斷線狀態, 您可將下方的 "在這個連線只有有限連線或沒有連線能力時通知我" 的打勾取消, 這樣螢幕右下角的網路斷線圖示就不會顯示.




滑鼠在虛擬網卡上點右鍵-->選"內容", 則可看到 "一般" 頁籤下的 "連線使用" 這個項目寫著 "TAP-Win32 Adapter V8", 就可確定這塊就是虛擬網卡.

* 若您不希望搞混, 可將這塊網卡重新命名為 "VPN",

* OpenVPN 採 SSL 加密, 所以我們得先設定 server; OpenVPN 預設安裝在 c:\Program files\OpenVPN, 打開檔案總管, 在 c:\program files\OpenVPN\easy-rsa\下建立一個空的 keys 資料夾, 並將 c:\program files\OpenVPN\easy-rsa\ 下的所有檔案複製到 c:\program files\OpenVPN\easy-rsa\keys_backup\ 下做為備份, 複製 serial, index.txt

* 將 index.txt.start 更名為 index.txt, 並複製到 c:\program files\OpenVPN\easy-rsa\keys\ 資料夾

* 將 serial.start 更名為 serial, 並複製到 c:\program files\OpenVPN\easy-rsa\keys\ 資料夾


* 將 vars.bat.sample 更名為 vars.bat, 並以文字編輯器打開, 我們要做一些修改
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
...
set KEY_COUNTRY=TW (大寫 2 字元國碼)
set KEY_PROVINCE=TAIWAN (省份)
set KEY_CITY=KAOHSIUNG (城市)
set KEY_ORG=OpenVPN (公司名)
set KEY_EMAIL=mail@domain (電子郵件, 全小寫)

* 將 openssl.cnf.sample 更名為 openssl.cnf

* 建立 CA(Certificate Authority,認證授權機構)
打開命令提示字元視窗, 鍵入
build-ca
輸入一連串關於您的認證資料, 除國碼一定要大寫, 而 email 一定要小寫外, 其餘大小寫均可, 另外, 除 Common Name 為必填外, 其他若不填, 則按 ENTER 鍵, 採寫在 vars.bat 內的預設值.

* 建立 server key
build-key-server  server

會出現類似前面的詢問程序, 在 Common Name, 我們改填 SERVER, 另外多了 2 個要填入的資料 ----
A challenge password, 若您不希望每次 XP 啟動時都要輸入密碼, 那麼這麼就留下空白
An optional company name, 不填

按下 Enter 鍵後, 它會列出您剛填入的資料, 並詢問

Certificate is to be certified until 日期(3650 days, 就是 10 年啦), Sign the certificate?[y/n]

當然要輸入 y

再來又出現

1 out of 1 certificate requests certified, commit? [y/n]

同樣輸入 y

假設您有 3 台 client 要連線進 VPN 來, 就要為 3 台 client 產生各自的金鑰.

build-key client1

* 鍵入 build-key client1, 產生 client1 的金鑰, 步驟類似前面, 不過在 Common Name 處要給各個 client 端不同且唯一的名稱

build-key client2
build-key client3

* 鍵入
build-dh
產生 Diffie Hellman 參數

* 將 C:\Program Files\OpenVPN\sample-config 下的 server.ovpn(config 檔) 複製到 C:\Program Files\OpenVPN\config 下, 用這個檔做修改比較省時.

* 將剛才製作出的 ca.crt, ca.key, server.crt, server.csr, server.key, dh1024.pem 也複製到 C:\Program Files\OpenVPN\config 下,

原則上, server.ovpn 不需修改, 而 client.ovpn 也只要找到
remote x.x.x.x 1194
將 IP 改為 server 端對外的實體 IP, 在本例為 x.x.x.x , 1194 是 OpenVPN 連線要用 port, 另外
ca ca.crt
cert client1.crt
key client1.key
指定這個 client 要用的 ca 及 key 的檔名, 這樣就可以了.

做個小整理, server 端 config 資料夾內應有 ----
ca.crt
ca.key
dh1024.pem
server.crt
server.csr
server.key
server.ovpn

client 端 config 資料夾內應有 ----
ca.crt
ca.key
client.ovpn
client??.crt
client??.csr
client??.key

先啟動 server 端, 滑鼠在 server.ovpn 點右鍵, 選 Start OpenVPN on this config file, 此時會跳出一個 DOS 視窗, 看到程序跑到最後出現
Initialization Sequence Completed
這行字, 就表示 server 已啟動完成.

接下來啟動 client 端, 滑鼠在 client.ovpn 點右鍵, 方法相同. client 端會以 DHCP 取得 server 端給的 IP.

如果希望給 client 端固定 IP, 最偷懶的方法就是 ----

* 如果您的 server 端的 OpenVPN 是以 service 運作的, 得先停止

* 找到 server 端 config 目錄下有個 ipp.txt, 這個檔是用來記錄 client 端上一次連線時所使用的 IP, 如此下次 client1 連上來時就會給它指定的 IP 了.
ipp.txt 的格式為 --> client 名, IP
在前述步驟我們建立了 client1, 如果要給 client1 固定 10.8.0.56, 則就 ipp.txt 輸入
client1, 10.8.0.56
注意大小寫是有分別的.

第二種方法,
假設您希望給 client1 固定 IP 10.8.0.38, 那我們先修改 server.ovpn, 打開 server.ovpn, 找到
client-config-dir ccd
route 10.8.0.0 255.255.0.0
去掉最前的分號, 使其生效, 並修改網段及遮罩(netmask) 以符合您的環境
其中 10.8.0.0 是網段, 255.255.0.0 是 遮罩

再在 server 端 config 資料夾下, 建一個 ccd 資料夾, 在 ccd 資料夾下, 建一個檔名為 client1 (沒有副檔名) 的純文字文件, 裡面只要加上一行
ifconfig-push 10.8.0.38 255.255.0.0
即可

這個設定強度壓過 ipp.txt, 也就是說, 從此 server 端會依這個設定來撥給 client1 IP.