現在由於學校的無線網路 仍然處於門戶大開的階段(完全沒有加密),也因此在我之前的小黑上完全不敢裝 KKMAN / PCMAN 之類的軟體,也不敢連 MUD ,所以在打密碼的時後都得再三確認這網頁到底有沒有加密。雖然說用 ssh tunnel (經由 putty or pietty 來建立)到某台機器的 proxy 可以解決大部分的問題,不過這只限於 http protocol 。也因此又讓我興起了再來裝 OpenVPN 的念頭。擇日不如撞日,於是乎昨天帶完os的課後輔導後就在 LAB 動手了。
到 OpenVPN 看到當前 release 的 2.0 版本是 OpenVPN 2.0.2 不過到 OpenVPN GUI for Windows 的網頁看的時候卻只看到 2.0.1 ,但是明明 release 的時間才差四天左右,不死心找了找,果然在他的目錄中發現了 openvpn-2.0.2-gui-1.0.3-install.exe ,並且在 FreeBSD 的 Ports 中也看到了 openvpn-2.0.2_1 ,於是就決定馬上下手了。
由於之前的經驗,所以在設定上還算熟悉,一切都如預期中順暢,甚至連翻上次在官網上拼命參考的的 example 都不需要,不過為了備忘還是把步驟給記一下比較保險。以免下次又暴走了。
安裝:
- Server (FreeBSD)
- cd /usr/ports
- make update
- cd /usr/ports/security/openvpn
- make install clean
- Download openvpn-2.0.2-gui-1.0.3-install.exe
- 一直下一步
設定:
- Server
dev tap
ca keys/ca.crt
cert keys/lab.crt
key keys/lab.key # This file should be kept secret
dh keys/dh2048.pem
ifconfig 192.168.211.254 255.255.255.0
server-bridge 192.168.211.254 255.255.255.0 192.168.211.1 192.168.211.250
push "redirect-gateway"
ifconfig-pool-persist ipp.txt
client-to-client
;duplicate-cn
keepalive 10 120
user nobody
group nobody
comp-lzo
status openvpn-status.log
log-append openvpn.log
verb 3
- Client
client
dev tap
proto udp
remote serverip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca keys/ca.crt
cert keys/cookys-nb.crt
key keys/cookys-nb.key
comp-lzo
verb 4
- 生憑證
- 參考官方網頁的 PKI 文件
- 編輯 var 檔案的內容、修改 KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL 欄位(我很惡搞的把 KEY_SIZE 調到了 2048)
- 處理以下將執行的檔頭的 #!/bin/bash 將其改正為對應的 interpreter
- 依序執行:
- ./vars
- ./clean-all
- ./build-ca
- ./vars
- 為 server 作 key
- ./build-key-server server
- 為 client 作 key
- ./build-key client1
- Generate Diffie Hellman parameters
- ./build-dh (剛剛惡搞亂改KEY_SIZE的這裡就慢慢等吧)
- 把 client 打包並且想辦法「安全的」傳到 client 的機器上,需要打包的有:
- client-conf.ovpn (OpenVPN 的設定檔)
- ca.crt (Root CA certificate)
- client.crt (Client Certificate)
- client.csr (好像不需要)
- client.key (Client Key)
- 參考官方網頁的 PKI 文件
- 去設定 server 上的 Bridge (這裡是 FreeBSD 7.0-CURRENT)
- 在 /usr/src/UPDATING 裡面看到
- 所以 man 4 if_bridge 發現 FreeBSD 的 Bridge 變得超神奇了:
- 或是在 /etc/rc.conf 加上設定
- 記得在這之前要加上 OpenVPN 的起始設定:
- 然後就可以跑起來試看看了。如果還想要開啟 NAT 的功能的話(因為前面有 redirect-default-gateway)就去 /etc/pf.conf (因為我很久以前就開始換用 OpenBSD port 過來的 PacketFilter了)裡面上一條
- 然後 pfctl -f /etc/pf.conf 就 ok 了。
20050927:
The old bridge(4) implementation was retired. The new
if_bridge(4) serves as a full functional replacement.
ifconfig bridge0 create
ifconfig bridge0 addm fxp0 stp fxp0 addm fxp1 stp fxp1
cloned_interfaces="bridge0"
ifconfig_bridge0="addm sis0 addm tap0 up"
openvpn_enable="YES"
openvpn_if="tap"
nat on $ext_if from 192.168.211.254/24 to any -> ($ext_if)
不過我發現一件很有趣的問題是,當我連回這台 vpn gateway 的時候「所有連線」會由於 routing table 上得設定而導致全部都走原來的 default gateway 而不是走重導後的 vpn gateway ,這是比較困擾的一點,不過因為他的 routing table 是蛋生雞雞生蛋的問題,似乎不能直接改,暫時就先放著吧。
多回應是好事,不過沒人回應的狀態下我都能拼兩百多篇了 XD
回覆刪除而且那時人氣一點都不高,不像現在每天每頁都有很多蜘蛛來爬 orz
Hi there.
回覆刪除Is there any "English" translated version of this document?
Regards
Gregory
请有空回我的email,大家交流一下,我也是openvpn的爱好者.
回覆刪除