0%

OpenVPN 2.5 .ovpn的設定

本篇描述如何製作基本的連線設定檔.ovpn,只要有這個檔案以及憑證就可以做初步的連線

簡單介紹.ovpn

ovpn是用來描述server或是client端如何連線的設定檔案,當然所有的設定都可以以命令列參數的方式直接使用,然而會用到的指令真的太多,還是匯集成一個檔案方便。
在檔案內 # 或是 ; 開頭的內容都會被OpenVPN忽略,因此很適合作為註解說明使用。
在剛安裝好OpenVPN時,內部會附有ovpn的sample設定,位置在 C:\Program Files\OpenVPN\sample-config,裡面共有三個檔案。
從檔名可以看出 client.ovpnserver.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系統的防火牆