openVPN共享访问
一,
版本:OpenVPN-2.5.2-I601-amd64
安装-> Customize
把打X的,都选上。
二,
服务端:
利用EasyRSA3产品凭证
C:Program FilesOpenVPNeasy-rsa 建立
vars.bat
下面的内容
set KEY_COUNTRY=TW
set KEY_PROVINCE=TW
set KEY_CITY=Taipei
set KEY_ORG=MyGroup
set KEY_EMAIL=mail@mymail.com.tw
set KEY_CN=MyServer
set KEY_OU=Dept
管理员入 Powershell或CMD
初始化憑證產生目錄
./easyrsa init-pki
產生ca憑證
./easyrsa build-ca nopass
要注意的是這邊會要你輸入ca的名稱,注意這名字不要跟後面重複到了
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
產生server端憑證
./easyrsa gen-req MyServer nopass
// MyServer为自己定义的名字
Common Name (eg: your user, host, or server name) [MultipointServer]:
簽署憑證
./easyrsa sign-req server MyServer
這裡會詢問是否確認簽發,輸入yes按enter即可
Type the word 'yes' to continue, or any other input to abort.
Confirm request details:
/////////////////////////////////////////////////////////////////////////////
產生client端憑證
./easyrsa gen-req Client01 nopass
如同server憑證一樣,記得名稱不要重複,另外打算讓幾個client連線,就要做幾個client憑證
簽署client憑證
./easyrsa sign-req client Client01
同样的,这里会问你yes no
Type the word 'yes' to continue, or any other input to abort.
Confirm request details:
/////////////////////////////////////////////////////////////////////////////
如要重新添加client,重复上同///的步骤
產生ta.key
cd "C:Program FilesOpenVPNbin" 進入openVPN主程式目錄
.\openvpn --genkey tls-auth ta.key 產生ta.key
[可選] 產生dh2048.pem
openssl dhparam -out dh2048.pem 2048
由於新版的dh加密方式有改變,可以不用自己產生dh2048.pem,這步驟是留給有需要的人參考
完成
server端所需憑證
# 位置:C:\Program Files\OpenVPN\easy-rsa\pki
ca.crt
# 位置:C:\Program Files\OpenVPN\easy-rsa\pki\issued
MyServer.crt (這部份名稱根據你選擇的server憑證名稱而定)
# 位置:C:\Program Files\OpenVPN\easy-rsa\pki\private
MyServer.key (這部份名稱根據你選擇的server憑證名稱而定)
# 位置:C:\Program Files\OpenVPN\bin**
ta.key
dh2048.pem (如果有產生的話)
每個client端所需憑證(以Client01為例)
# 與server端相同
ca.crt
ta.key
# 位置:C:\Program Files\OpenVPN\easy-rsa\pki\issued
Client01.crt (這部份名稱根據你選擇的client憑證名稱而定)
# 位置:C:\Program Files\OpenVPN\easy-rsa\pki\private
Client01.key (這部份名稱根據你選擇的client憑證名稱而定)
P.S.
C:Program FilesOpenVPNeasy-rsapkiprivate 內有產生一個ca.key雖然沒用到,但這個檔案要是洩漏會有重大安全性的問題,請一定要保存在非常安全的地方,像是沒有網路連線的電腦
设定Conf
服务端 .ovpn
# 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端
# 宣告我是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 FilesOpenVPNconfig
這裡我會建議多建立一個目錄,以便日後放其他不同的設定,在這裡我新建目錄 MyServer
將先前憑證連同ovpn總共5個檔案(ca.crt、MyServer.crt、MyServer.key、ta.key、MyServer.ovpn)
複製到剛才的目錄 C:Program FilesOpenVPNconfigMyServer
接著到螢幕左下角找OpenVPN的圖示,長的有點類似網路連線的圖案,上面有一顆鎖。對這個圖示按右鍵選擇連線,便會啟動server端功能
如果順利的話,不會看到任何錯誤視窗,且剛才的icon會變成綠色
client端差不多,我在另外電腦建立 Client01 目錄在 C:Program FilesOpenVPNconfig
將先前憑證連同ovpn總共5個檔案(ca.crt、Client01.crt、Client01.key、ta.key、Client01.ovpn)
放入 C:Program FilesOpenVPNconfigClient01
右鍵OpenVPN圖示連線,
同樣如果沒有任何錯誤視窗,且icon變綠色的話就是順利連上
接著我們要來做ping測試,由於我們設定的網域是10.8.0.0,所以server被分配到的ip就會是10.8.0.1
我們在client端的電腦上,進入到powershell或是cmd裡面,輸入以下指令
ping 10.8.0.1
如果有回應,代表連線已經順利完成,這樣就算是完成了vpn連線
想當然,應該會有不少人在連線遇到錯誤或是ping的問題,之後會在下篇文章介紹解決方式
這邊先大概提點一下,大部分問題都源自於windows系統的防火牆