[教學] [Step By Step教學]突破防火牆的OpenVPN Windows版(97/8/16修改文章並重新補圖)

98/5/10
本來想說找個時間補一下client圖片的,
網路一找,竟然有人延用我的教學文章耶,
圖還一模一樣(直接用我空間的圖片),

雖然早知道放在網路上,
教學文章一定會被人取走,
不過,反正圖片不是我出錢的伺服器,
我也不該這麼計較。
但想想要再上圖的動力瞬間都沒了,
要轉個文章,密一下我有那麼難嗎?


97/12/11修改文章如紅字。在25點之後。

VPN指的是:虛擬私有網路

為何要架VPN呢?
因為公司防火牆擋的太離譜了,
舉例來說,如果家中電腦的檔案忘了copy,
想要連回家抓檔案時,因為公司網路跟你家的網路不太可能可以直接連。

又或者你想當跳板使用,例如,公司不給連除了HTTP、HTTPS這些port以外的話。
就只能找可以當跳板的伺服器,或者是在家中設定好當伺服器,
如此也可以突破防火牆。

有關於VPN的軟體眾多,
但是因為我用過的,例如:
日本的:
Softether
(以前是免費,但現在申請很麻煩,因為後來發生有不好的事情,詳情可以上google查詢)

Hamachi
(這套有正體中文支援,使用上也很方便,但缺點是免費版只能在一個群組中只有幾台電腦,
要超過多台則需要付費)

中國:
vnn
(我只玩過舊版,新版沒試過,我記得有分個人版跟伺服版)

以上,只有hamachi跟vnn非常好設定,
只需申請帳號即可,不用架伺服器,但相對的,網管人員要鎖這些vpn軟體就更方便了。

而softether我只用過1.x版,也要架個伺服器版,
而且只有日、英文版,設定上較麻煩。
但現在又不開放給一般使用者使用。

所以,目前我只好轉向今天我介紹的這套-OpenVPN。
它可以藉由軟體模擬網路卡,透過特定的port,
連上遠端的server,而模擬像網路卡直接接上hub的樣子,
如此可以跟遠端的server處在同一個local LAN,
從而達到突破公司連外防火牆的目的。

雖然它是英文版,而且不太好設定,但我終於抽空摸出心得來了。
底下就來介紹它的使用法了。

系統為vista的話,請下載2.1 beta版,但gui版似乎尚未更新,
所以,可能必須先裝非gui版,再裝gui,但裝gui時不要裝網卡,
這樣應該就可以了。(不要問我,我沒有一台電腦是vista!)

另,建議使用gui版會比較方便使用喔!


1.首先就是要連到官網:OpenVPN官網
目前版本為2.0.9版,點下連結


2.伺服器版本可以裝在linux或win系統上,今天要介紹的是裝在win系統上,
點選Windows Installer右邊的Download;(如果你的系統是win系統,並且希望有gui可用請跳至第6點下載即可)

3.再點openvpn-2.0.9-install.exe連結


4.點選「存檔」


5.找個好地方儲存吧,找完後,點「儲存」


6.檔案很小,一下子就下載完,請暫時切回ie,下載具gui界面的安裝軟體,
請往下一點,尋找OpenVPN GUI,並點下去。(這邊的安裝法跟gui很像,我就不放教學了)


7.這邊是OpenVPN GUI的官網,點選左邊的Download的「Stable」


8.點選「openvpn-2.0.9-gui-1.0.3-install.exe」


9.點選「存檔」


10.找個好地方儲存吧,找完後,點「儲存」


11.要馬上安裝,就點選「執行」吧


12.安全性警告,點「執行」


13.點選「Next」


14.版權宣告,點選「I Agree」


15.在「My Certificate Wizard」視情況打勾(根據我之前爬文的結果,聽說可以跟apache併用?),
點選「Next」


16.預設的安裝目錄,就不用動它了吧?點「Install」


17.安裝過程中,有個硬體的裝置因為沒有通過微軟認証過,
點選「繼續安裝」


18.看到Completed及successfuly,就表示安裝成功啦,點「Next」


19.點選「Finish」


20.接下來,我們需要備份一個重要的子目錄,按「視窗鍵」+「E」呼叫檔案總管出來後,
在網址列上貼入「C:\Program Files\OpenVPN」後,
在「easy-rsa」子目錄上,點選右鍵,選擇「複製」


21.在空白的地方(紅色虛線圈圈範圍)點右鍵,選「貼上」


22.進入「easy-rsa」子目錄後,如果您沒有畫面中的「DOS在這裡」,
請按「視窗鍵」+「r」呼叫執行視窗,輸入「cmd」,再輸入「cd "C:\Program Files\OpenVPN\easy-rsa"」
在這邊忘了抓一個重要的圖,就是要自己建一個「keys」的子目錄,您可以在命令提示字元中,直接輸入「md keys」
(也就是說「easy-rsa」子目錄下,需有一個子子目錄叫作「keys」)


23.在「vars.bat.sample」按右鍵,選「Open in Nopad++」,
(在這邊使用您喜歡用的文書編輯軟體即可,若無就使用筆記本,不過,會很難作業)


24.這個就是從內建的筆記本開出來的圖片,這個原因是windows系統跟其它系統的不同,
windows在文件中會使用到換行符號,所以,在其它系統的文件,打開來看就都沒有換行。
所以,請務必使用可以偵測並轉換的軟體。


25.如果需要把加密的key由1024(預設)加大為2048,
將「set KEY_SIZE=」後面改為2048,
(原則上1024應該就夠了,但是,2048會使得更難破解,但需要作key的時間會很長!)
另外,要修改的是底下常用的資料:
set KEY_COUNTRY=TW
set KEY_PROVINCE=TW
set KEY_CITY=TaiPei
set KEY_ORG=home
set KEY_EMAIL=sse-cmm@kerobbs.net
第一個是設定國家,第二個是省,第三個是城市,
第四個是組織名稱,第五個是你的e-mail。
變更完成後就存檔吧(Ctrl+S)。


26.如果您不想打字,那就從檔案總管中,將「init-config.bat」拉住不放,
移往命令提示字元吧,不然就直接打上「init-config」


27.確認檔名已出現在命令提示字元後,按「Enter」


28.正常來說會沒有錯誤訊息,它會copy二個檔案出來。



真是抱歉,竟然漏掉一個重要的執行。作好的vars.bat修改好後,
我在這邊竟然忘了作執行它的動作,也因為它沒執行的話,
則很多東西將會失敗,常見的會出現*.old找不到。
我也忘了這個指令該在何時須執行,我查完後再修正。
(12/11修正文章)


29.接下來,請先執行vars.bat,同樣的方法,拉「clean-all.bat」到命令提示字元,
或者直接輸入「clean-all」也可以,按「Enter」
(在這邊要注意,當你執行這個時,keys目錄裡的東西將會被刪除!)

30.這邊也要注意是否有錯誤訊息發生。如無意外,就會copy二個檔案出來。



31.同樣的方法,拉「build-dh.bat」到命令提示字元,
或者直接輸入「build-dh」也可以,按「Enter」
這邊會視你的電腦速度而有所快慢,而且,最好不要動電腦!
我產生2048的key的同時,又動了電腦,結果就是使用了137行才造成功,
約花了46分鐘才產生完!(這邊key的長度是之前你改的vars.bat.sample值)

(不好意思,因重新抓圖,我電腦又舊,所以這以下的圖都是以1024為範例,請見諒!)

32.同樣的方法,拉「build-ca.bat」到命令提示字元,
或者直接輸入「build-ca」也可以,按「Enter」


33.這個指令是要作伺服器的認証,這邊如果在[]之間有資料,
(也就是之前你改的vars.bat.sample值),可以直接按「enter」表示與左邊的預設值相同,
但有些[]是沒有資料的部份,請務必抄下來,
我覺得用戶端的資料若沒有合乎的話,可能會產生不出來!


34.同樣的方法,拉「build-key-server.bat」到命令提示字元,
或者直接輸入「build-key-server」也可以,接下來再輸入「 server」,按「Enter」
(請務必空一格,代表它帶有參數)


35.這邊一樣,如果在[]之間有資料,
(也就是之前你改的vars.bat.sample值),可以直接按「enter」表示與左邊的預設值相同,
但有些[]是沒有資料的部份,請務必抄下來,
資料一定要統一,例如section跟host name等等。
密碼請設長一點,本例是範例,所以才四個字元,請變更成難猜的密碼。
後面是告訴你是否要認証,當然是輸入「y」,後面也是輸入「y」。
到此步驟已經將伺服器所有認証的部份全建立好了。(見下下張圖)

同樣的方法,拉「build-key.bat」到命令提示字元,
或者直接輸入「build-key」也可以,接下來再輸入「 client1」,按「Enter」
(請務必空一格,代表它帶有參數,本參數可以隨意變換,例如:「build-key jack」,或「build-key john」)
(在這邊你有多少台電腦需連到伺服器就建立幾個,名字取自己容易記的,在這邊的主機名稱就不要設一樣的了)




注意一下,當製作client端連線資料時,主機名稱不可重覆,
否則會出現.old的錯誤訊息,只能再重作一次囉!



命令提示字元,大致呈現下面的字樣:
C:\Program Files\OpenVPN\easy-rsa>"C:\Program Files\OpenVPN\easy-rsa\init-config
.bat"

C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
複製了         1 個檔案。

C:\Program Files\OpenVPN\easy-rsa>copy openssl.cnf.sample openssl.cnf
複製了         1 個檔案。

C:\Program Files\OpenVPN\easy-rsa>"C:\Program Files\OpenVPN\easy-rsa\vars.bat"
C:\Program Files\OpenVPN\easy-rsa>"C:\Program Files\OpenVPN\easy-rsa\clean-all.b
at"
複製了         1 個檔案。
複製了         1 個檔案。

C:\Program Files\OpenVPN\easy-rsa>"C:\Program Files\OpenVPN\easy-rsa\build-dh.ba
t"
Loading 'screen' into random state - done
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.......................+.+......................................................
....+..................................+........................................
...............+................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..............................+.................................................
.......................................................................+........
........................................................+.......................
................................................................................
.........................................................+......................
...........................................+....................................
..........................................++*++*

C:\Program Files\OpenVPN\easy-rsa>"C:\Program Files\OpenVPN\easy-rsa\build-ca.ba
t"
Loading 'screen' into random state - done
Generating a 2048 bit RSA private key
...........................................+++
.......................................................+++
writing new private key to 'keys\ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [TW]:
State or Province Name (full name) [TW]:
Locality Name (eg, city) [PingTung]:
Organization Name (eg, company) [home]:
Organizational Unit Name (eg, section) []:home
Common Name (eg, your name or your server's hostname) []:test
Email Address [sse-cmm@kerobbs.net]:

C:\Program Files\OpenVPN\easy-rsa>"C:\Program Files\OpenVPN\easy-rsa\build-key-s
erver.bat" server
Loading 'screen' into random state - done
Generating a 2048 bit RSA private key
................................................................................
........+++
................................+++
writing new private key to 'keys\server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [TW]:
State or Province Name (full name) [TW]:
Locality Name (eg, city) [PingTung]:
Organization Name (eg, company) [home]:
Organizational Unit Name (eg, section) []:home
Common Name (eg, your name or your server's hostname) []:test
Email Address [sse-cmm@kerobbs.net]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:test
An optional company name []:home
Using configuration from openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'TW'
stateOrProvinceName   :PRINTABLE:'TW'
localityName          :PRINTABLE:'PingTung'
organizationName      :PRINTABLE:'home'
organizationalUnitName:PRINTABLE:'home'
commonName            :PRINTABLE:'test'
emailAddress          :IA5STRING:'sse-cmm@kerobbs.net'
Certificate is to be certified until Nov 18 06:46:08 2017 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

C:\Program Files\OpenVPN\easy-rsa>"C:\Program Files\OpenVPN\easy-rsa\build-key.b
at" client1
Loading 'screen' into random state - done
Generating a 2048 bit RSA private key
..................................................................+++
................................................................................
............+++
writing new private key to 'keys\client1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [TW]:
State or Province Name (full name) [TW]:
Locality Name (eg, city) [PingTung]:
Organization Name (eg, company) [home]:
Organizational Unit Name (eg, section) []:home
Common Name (eg, your name or your server's hostname) []:client1
Email Address [sse-cmm@kerobbs.net]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:test
An optional company name []:home
Using configuration from openssl.cnf
Loading 'screen' into random state - done
DEBUG[load_index]: unique_subject = "yes"
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'TW'
stateOrProvinceName   :PRINTABLE:'TW'
localityName          :PRINTABLE:'PingTung'
organizationName      :PRINTABLE:'home'
organizationalUnitName:PRINTABLE:'home'
commonName            :PRINTABLE:'client1'
emailAddress          :IA5STRING:'sse-cmm@kerobbs.net'
Certificate is to be certified until Nov 18 06:49:29 2017 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

C:\Program Files\OpenVPN\easy-rsa>
36.將伺服器端所需要的檔案複製起來(ca.crt、ca.key、dh2048.pem、server.crt、server.key)。
詳細資料請參閱最下面的表格。



37.將剛複製的檔案copy到「config」這個目錄。


38.將目錄切換到「sample-config」,右鍵點「server.ovpn」,選「複製」。


39.目錄再切回「config」這個目錄,空白地方按右鍵,選「貼上」。


40.右鍵點「server.ovpn」,選「Open in Nopad++」。


41.若你有多組ip,可以在local中輸入你要指定的ip,記得前面的分號要拿掉。
port看你的環境是否有擋這個port,有的話,可以改為其它,例如80。
看是要走tcp還是udp,我知道有的防火牆狠一點都擋udp。
接下來看是要走tun模式還是tap(這邊我是用預設,其它都改為自己能用的)。


42.dh這邊,如果你改了預設數字1024,就要改成符合你之前設定的數字!


43.server這邊的參數是指定你的vpn的網段,我是使用192.168.2.0 255.255.255.0


44.開啟push "route 192.168.2.0 255.255.255.0"後可以使用戶端電腦知道要走vpn。


45.開啟client-to-client後可以使用戶端電腦連往別台用戶端電腦。


46.開啟duplicate-cn是怕用戶端電腦名稱可能會取一樣的情況發生。
(這個用途在於,若你想要分享給大家使用,
又不想每個人都建一個連線檔案的話,就必須設定,
設定之後每個人的ip連上來就不會被固定下來!)


47.到此就作好伺服器端電腦的設定了,記得要存檔(Ctrl+S),開始執行看看是否有誤。
右點在OpenGUI的小圖示,選「connect」


48.會另開一視窗,如果沒問題,該視窗會自行關閉。


49.若正確執行無誤的話,此時OpenGUI的小圖示會由紅燈轉綠燈,並且告知ip為何。


50.查看一下網路連線資料,果然多了一個網路卡,並且多了一個ip。


[ 本文最後由 sse-cmm 於 2008-8-16 20:20 編輯 ]
3

評分次數

  • a152222

  • xkeyxkey

以下為用戶端的設定:
51.用戶端也是要安裝OpenVPN GUI才能使用,詳情不再敘述。
安裝完後,在config子目錄中,將用戶端認証需要的檔案置放其中,
例如:ca.crt、client1.crt、client1.key;從「sample-config」目錄中複製「client.ovpn」,
也是複製到config目錄之中,點右鍵,選「Open in Nopad++」

52.伺服器是走tap還是tun,需跟server端設定一致,
另外是走tcp還是udp也需跟server端設定一致。
remote的參數,如果你架的伺服器有DN,可以在此設定,
例如:remote john.dyndns.org 1194
1194指的是port,這也要看伺服器是設成哪一port。


53.ca ca.crt是不動它的,要動的是用戶端,如果你的用戶端名稱為john,
則cert跟key後面接的檔名一定要改為john,否則會找不到檔案。改完後就存檔(Ctrl+S)。


54.右點在右下角找OpenVPN GUI小圖示,選「Connect」


55.執行後,會跳出視窗,若連線成功,此視窗會自動消失。


56.瞧,我們就得到ip了!耶!萬歲!我們成功了!


後記,這套軟體還是有點問題,
有時會出現xxxx找不到*.old,
就不能再作用戶端的key跟license了
此時,請重開伺服器看看,
或許就能作了,萬一不幸還是不行,
則需要重作步驟26開始重作,但....可以不用再作build-dh,
不然會等很久。其它的重作即可。

以上目前是試完的心得,
其實它還有一些功能我還沒試。
例如說跳板,像是公司鎖msn、yahoo,甚至是某網頁,

只要伺服器這邊設定強制要連網路時,一定要從伺服器的話,
那麼就能實現跳版。

除了這個用途外,還可以架一個game的跳板,
如果學校宿舍在某個時段擋掉game的連線,
亦可以使用這套來反破解。

而且,因為使用了加密,
網管應該很難查出到底出了什麼問題,哈!
幸好我也不是網管人員,不用管那麼多。.....

另外,還需要設定regedit機碼才能讓用戶端重開機時,
自動連線,目前我還沒試出來,試完後再編輯文章。

(另外跳板的設定,目前我不需要,就沒有作測試,
如果你試出來的話,也可以在後面文章補述喔。)
奇怪ff無法顯示表格,只好花時間重畫...><"(請copy到記事本看,應該就正常了)
┌──────┬────────────┬─────────────┬────┐
│ 檔  名 │  需 要 放 置 於  │  目       的  │是否加密│
├──────┼────────────┼─────────────┼────┤
│  ca.crt │  伺服器+所有用戶端  │  Root CA certificate  │  NO  │
├──────┼────────────┼─────────────┼────┤
│  ca.key │key signing machine only│    Root CA key    │ YES  │
├──────┼────────────┼─────────────┼────┤
│ dh{n}.pem │ 僅 伺 服 器 專 用 │Diffie Hellman parameters │  NO  │
├──────┼────────────┼─────────────┼────┤
│ server.crt │ 僅 伺 服 器 專 用 │  Server Certificate  │  NO  │
├──────┼────────────┼─────────────┼────┤
│ server.key │ 僅 伺 服 器 專 用 │    Server Key    │ YES  │
├──────┼────────────┼─────────────┼────┤
│client1.crt │ 用 戶 端 1 專 用 │  Client1 Certificate  │  NO  │
├──────┼────────────┼─────────────┼────┤
│client1.key │ 用 戶 端 1 專 用 │    Client1 Key    │ YES  │
├──────┼────────────┼─────────────┼────┤
│ jack.crt │ 用 戶 端 2 專 用 │  Client2 Certificate  │  NO  │
├──────┼────────────┼─────────────┼────┤
│ jack.key │ 用 戶 端 2 專 用 │    Client2 Key    │ YES  │
├──────┼────────────┼─────────────┼────┤
│ john.crt │ 用 戶 端 3 專 用 │  Client3 Certificate  │  NO  │
├──────┼────────────┼─────────────┼────┤
│ john.key │ 用 戶 端 3 專 用 │    Client3 Key    │ YES  │
└──────┴────────────┴─────────────┴────┘
檔名需要放置於目的是否加密
ca.crt伺服器+所有用戶端Root CA certificateNO
ca.keykey signing machine onlyRoot CA keyYES
dh{n}.pem僅伺服器專用Diffie Hellman parametersNO
server.crt僅伺服器專用Server CertificateNO
server.key僅伺服器專用Server KeyYES
client1.crt用戶端1專用Client1 CertificateNO
client1.key用戶端1專用Client1 KeyYES
jack.crt用戶端2專用Client2 CertificateNO
jack.key用戶端2專用Client2 KeyYES
john.crt用戶端3專用Client3 CertificateNO
john.key用戶端3專用Client3 KeyYES
請問一下, 我的機器是 P-3 670的CPU, 512MB SDRAM, 在 key size=1024 時, 有可能花費 24hrs 以上嗎... (目前還在動作中...)?
dos prompt 中只有顯示 : C:\Program Files\OpenVPN\easy-rsa 的字樣....
感謝哦
新聞快報:
原帖由 eddie1 於 2008-8-15 18:12 發表
請問一下, 我的機器是 P-3 670的CPU, 512MB SDRAM, 在 key size=1024 時, 有可能花費 24hrs 以上嗎... (目前還在動作中...)?
dos prompt 中只有顯示 : C:\Program Files\OpenVPN\easy-rsa 的字樣... ...
不太可能耶,都幾秒就ok了說。
我找個時間看看我的設定一下,再修改本回文。
第21步"把它貼在空白的地方"請問到底是哪裡,因為圖我看不到,感激不盡