本篇描述如何製作基本的連線設定檔.ovpn,只要有這個檔案以及憑證就可以做初步的連線
簡單介紹.ovpn
ovpn是用來描述server或是client端如何連線的設定檔案,當然所有的設定都可以以命令列參數的方式直接使用,然而會用到的指令真的太多,還是匯集成一個檔案方便。
在檔案內 # 或是 ; 開頭的內容都會被OpenVPN忽略,因此很適合作為註解說明使用。
在剛安裝好OpenVPN時,內部會附有ovpn的sample設定,位置在 C:\Program Files\OpenVPN\sample-config
,裡面共有三個檔案。
從檔名可以看出 client.ovpn
及 server.ovpn
分別是 client及server端的設定,而 sample.ovpn
則是可以用作兩台機器對連
檔案豐富,詳細介紹各個設定的內含以及使用方式,有興趣蠻建議閱讀一遍,可以深入了解各個設定的內涵
server端
首先建立server端的ovpn,這邊檔名會建議與上一篇建立的server憑證名稱相同(以我的範例來說,就是 MyServer.ovpn)
內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| # OpenVPN連線使用的port,這邊要與client使用的一致,另外也要注意防火牆及路由器是否有開啟該port # port建議在1023以上可以避免權限問題,另外為了安全性避免使用預設的1194,可在1024~65535挑一個 port 20000 # 連線方式,可選tcp或是udp,這邊建議先選udp,速度較快而且安全性高 proto udp # 建立通道方式,可選tap或是tun,兩者有缺可以另外寫文章介紹,這邊先選tun,主要為了手機也能支援,有興趣可以先google一下差別 dev tun # 先前建立的ca憑證檔名,如果與ovpn放在不同位置需要標示完整路徑 ca ca.crt # 先前建立的server憑證,如果與ovpn放在不同位置需要標示完整路徑 cert MyServer.crt key MyServer.key # ta憑證,後面數字0代表server端 tls-auth ta.key 0
# 不使用dh憑證,如果在上一篇有做dh2048.pem,這行要改為 dh dh2048.pem,同時檔案也要跟其他憑證放在一起 dh none
# 設定VPN加密方式 cipher AES-256-GCM data-ciphers AES-256-GCM:AES-128-GCM
# 每10秒確認client是否還在,如果120秒內都沒回應,當作該client斷線 keepalive 10 120
# 設定網路遮罩,可選net30/subnet/p2p,其中windows只支援前兩種,第一種是預設但比較舊的方式,這邊我們先用新的subnet,日後會出專文介紹差異 topology subnet
# 設定vpn的網域,如果設定10.8.0.0就是代表10.8.0.1~10.8.0.254會分配給各client,後面那組則固定為255.255.255.0 server 10.8.0.0 255.255.255.0 # 注意,建議設定ip域時只有10.0.0.0~10.255.255.0、172.16.0.0~172.31.255.0、192.168.0.0~192.168.255.0這3種組合,另外要注意有沒有跟現有區網撞號 # 一般路由器大多設定192.168開頭,避掉這組應該就蠻安全的
# 設定每個client只有10.8.0.x的相關連線才走VPN通道, 如果是希望所有網路連線都走VPN,得去掉這行,並在client端做設定 push "route 10.8.0.0 255.255.255.0 vpn_gateway" # 這邊的10.8.0.0要與server那邊的IP一致
# 讓client之間能互相連線 client-to-client
# 使用新版虛擬網卡,速度遠遠超越舊版,如同wireguard般的快速 windows-driver wintun
|
client端
除了server外,我們要為每一個client端都製作ovpn,同樣檔名可與憑證相同便於管理(以我的範例來說是Client01.ovpn)
內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| # 宣告我是client端 client
# 連線方式,需要與server一致 proto udp # 建立通道方式,需要與server一致 dev tun
# server連線的IP與port,這邊IP用110.30.5.7舉例,實際上我不是用這組 remote 110.30.5.7 20000 # 表明連線後可以還能使用別的port提昇連線效率 nobind
# 憑證設定 ca ca.crt cert Client01.crt key Client01.key tls-auth ta.key 1 remote-cert-tls server
# 設定VPN加密方式,這邊要跟server端一致 cipher AES-256-GCM
# 設定所有連線都走VPN從server端連出去, 若需要請將下面2行開頭的;去掉 ;redirect-gateway def1 ;dhcp-option DNS 8.8.8.8 # 之所以把這個設定放在這邊是因為如果由server端push這個設定,雖然方便,但是萬一日後改設定出了差錯,就有得跑到server主機處理的風險
# 使用新版虛擬網卡,速度遠遠超越舊版,如同wireguard般的快速,可與server端不同 windows-driver wintun
|
連線測試
設定完了之後接下來就要測試是否可以使用,首先是server端
我們先進入放置的位置,預設是在 C:\Program Files\OpenVPN\config
這裡我會建議多建立一個目錄,以便日後放其他不同的設定,在這裡我新建目錄 MyServer
將先前憑證連同ovpn總共5個檔案(ca.crt、MyServer.crt、MyServer.key、ta.key、MyServer.ovpn)
複製到剛才的目錄 C:\Program Files\OpenVPN\config\MyServer
接著到螢幕左下角找OpenVPN的圖示,長的有點類似網路連線的圖案,上面有一顆鎖。對這個圖示按右鍵選擇連線,便會啟動server端功能
如果順利的話,不會看到任何錯誤視窗,且剛才的icon會變成綠色
client端差不多,我在另外電腦建立 Client01
目錄在 C:\Program Files\OpenVPN\config
將先前憑證連同ovpn總共5個檔案(ca.crt、Client01.crt、Client01.key、ta.key、Client01.ovpn)
放入 C:\Program Files\OpenVPN\config\Client01
右鍵OpenVPN圖示連線,
同樣如果沒有任何錯誤視窗,且icon變綠色的話就是順利連上
接著我們要來做ping測試,由於我們設定的網域是10.8.0.0,所以server被分配到的ip就會是10.8.0.1
我們在client端的電腦上,進入到powershell或是cmd裡面,輸入以下指令
ping 10.8.0.1
如果有回應,代表連線已經順利完成,這樣就算是完成了vpn連線
想當然,應該會有不少人在連線遇到錯誤或是ping的問題,之後會在下篇文章介紹解決方式
這邊先大概提點一下,大部分問題都源自於windows系統的防火牆