如何使用Windows建立OpenVPN伺服器
寫在前面
這篇文寫於2021/1/10 11:30左右,寫完大概12:57,原本想當天放在個人的blog上,結果github上留著的是編譯過的hex blog,source file 留在家裡,冏= =
前言
會有這個需求是因為學校網路的流量是有限制的,每一個IP一日的用量就只有10G
我本身有3個IP可以使用,分別是實驗室的2個IP和宿舍的1個IP,總共30GB的流量可以使用 之前用過很多種方法都不可行,自己就是不太會設定,
有試過使用windows內建的、開虛擬機使用openvpn、開虛擬機使用docker建立openvpn…等等
均以失敗告終,教學不是太複雜就是根本不知道在寫什麼,我照著步驟一步一步做還TM不能用,當初寫教程的人根本沒有好好測試…
後來研究出直接在windows上面架設OpenVpn的伺服器,姑且紀錄一下
設定步驟
PS: 本篇教學是以Easy-RSA 3.0.8作為示範
以下是Server部分
下載並安裝OpenVPN for Windows(下載點),一開始選擇Customize,進入後中間會有兩個套件是打X的(預設不安裝,架設Server則必須要安裝),點擊打X的圖示,在下拉的選單中點選Will be installed on local hard drive,來安裝這兩個套件,之後就一直無腦下一步就好= =




去這邊下載EasyRSA-3.0.8-win64.zip,解壓縮到桌面、文件,只要你爽就好的地方
去EasyRSA的資料夾中,建立一個名為”vars”的檔案,打開文字編輯器,寫入以下的code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18set_var EASYRSA "$PWD"
set_var EASYRSA_PKI "$EASYRSA/pki"
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "TW"
set_var EASYRSA_REQ_PROVINCE "Taipei"
set_var EASYRSA_REQ_CITY "Taipei"
set_var EASYRSA_REQ_ORG "組織名稱_自己寫"
set_var EASYRSA_REQ_EMAIL "填一個email"
set_var EASYRSA_REQ_OU "組織名稱_自己寫"
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 365
set_var EASYRSA_NS_SUPPORT "no"
set_var EASYRSA_NS_COMMENT "組織名稱_自己寫"
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST "sha256"打開EasyRSA-Start.bat,會跳出一個console視窗,輸入./easyrsa init-pki,回車

輸入./easyrsa build-ca,回車,輸入密碼和自訂的server名稱

輸入./easyrsa gen-req [自訂的server名稱] nopass,回車,再輸入一次自訂的server名稱

輸入./easyrsa sign-req server *[自訂的server名稱]*,回車,並輸入yes跟第5步設定的密碼(圖片跟上面差不多就懶得放了= =)
openssl verify -CAfile pki/ca.crt pki/issued/自訂的server名稱.crt,回車,畫面上必須顯示pki/issued/[自訂的server名稱]: OK,如果不OK就前面步驟再做一遍
輸入./easyrsa gen-req [自訂的client名稱] nopass,回車,再輸入一次自訂的client名稱
輸入./easyrsa sign-req client *[自訂的client名稱]*,回車,並輸入yes跟第5步設定的密碼
輸入openssl verify -CAfile pki/ca.crt pki/issued/[自訂的client名稱].crt,回車,如果不OK就9~11重做
輸入./easyrsa gen-dh,回車,會跑出一堆點和+。等他跑完
輸入./easyrsa gen-crl,回車,並輸入密碼
取得server和client所需的檔案,都在EasyRSA-3.0.8\pki目錄下,先複製一份出來到某個資料夾備用
- Server(4個): ca.crt , dh.pem , issued\[自訂的server名稱].crt , private\[自訂的server名稱].key
- Client(4個): ca.crt , dh.pem , issued\[自訂的client名稱].crt , private\[自訂的client名稱].key
建立server.ovpn檔案,打開文字編輯器寫入(中括號內的要改成自己的內容):
其中,server [server ip 位址] [server ipmask]的部分,可以填server所在的網段,比如說我的server ip在10.10.10.5,則IP就能填10.10.10.0,mask就可以填255.255.255.0,則client就可以被分配到10.10.10.0~10.10.10.255的IP1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19port 1194
proto udp
dev tun
ca ca.crt
cert [自訂的server名稱].crt
key [自訂的server名稱].key
dh dh.pem
server [server ip 位址] [server ipmask]
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS [DNS server #1(可以用google的8.8.8.8)]"
push "dhcp-option DNS [DNS server #2(可以用google的8.8.4.4)]"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
mute 20將server.ovpn和剛剛第14步備用的4個server檔案複製到openvpn安裝目錄下的config資料夾,則server部分設置完成
可能需要設定Windows防火牆放行UDP的port 1194的連入連線,詳細設定教學請自己找google
以下是Server部分
- 下載並安裝OpenVPN for Windows,一開始install now,無腦下一步就好,不用設定有的沒的
- 建立client.ovpn文件,使用文字編輯器編輯,寫入以下內容(中括號內的要改成自己的內容)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15client
dev tun
proto udp
remote [Server的IP位址] 1194
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert cg1422-client.crt
key cg1422-client.key
comp-lzo
verb 3
redirect-gateway def1 bypass-dhcp - 將client.ovpn和剛剛第14步備用的4個client檔案複製到openvpn安裝目錄下的config資料夾,則client部分設置完成

使用
Server端: 右下角常駐程式找到OpenVPN GUI右鍵,找到server名稱並按連線,等待它跑完
Client端: 右下角常駐程式找到OpenVPN GUI右鍵,找到client名稱並按連線,等待它跑完