之前寫過兩篇介紹在樹莓派搭 IKEv2 VPN Server,以及按需連線(On Demand)的文章
當時很多人跟我說步驟太多太複雜,其中一個步驟搞錯就搭不起來
最近我新入手一台 Intel i5 mini PC,主要想把群暉 NAS 上面很多在跑的軟體都移轉過去,順手整理一下內部網路環境
因為我發現我給群暉 NAS 太多工作,他有點不是很開心,速度越來越慢了。。。
然後我看了一看之前文章,我自己也覺得很繁瑣,就乾脆重新用 Docker 來搭建 VPN Server 🤣
當初會用原生來搭建是因為擔心樹莓派用 Docker 模擬的方法效能不足。。
搜尋一下 Docker Hub 相關資源,找到一個不錯的版本
只要兩行指令就能搭好 IKEv2 VPN Server 與 On Demand 的 iOS / macOS 描述檔,非常方便!
原始程式網站在這: https://github.com/billimek/ikev2-vpn-server
不過在開始前,要先製作一個 strongswan.conf 的設定檔
因為作者 Docker 映像檔裡面塞了一個國外的 DNS Server,我們在台灣使用的話速度超慢
所以我們要另外做一個設定檔,把它換成 CloudFlare 跟 Google 的 DNS 速度就會快上許多
當然你也可以改成你自己的,甚至是你自己搭的 AdGuard Home or PiHole 廣告阻擋器
# SSH 登入到你要安裝的主機中
$ ssh username@IP
# 建立一個設定檔
$ nano ~/strongswan.conf
複製貼上以下內容:
charon {
load_modular = yes
plugins {
include strongswan.d/charon/*.conf
attr {
dns = 1.1.1.2, 8.8.8.8
}
}
}
include strongswan.d/*.conf
然後保存退出
接著複製以下指令(需替換成你的設定),直接執行就能順利跑一個 IKEv2 VPN Server
$ docker run --cap-add=NET_ADMIN -d --name vpn-server --restart=always \
-p 500:500/udp -p 4500:4500/udp \
-v ~/strongswan.conf:/etc/strongswan.conf \
-e "HOST=你的域名或者 IP" -e "HOSTNAME=你主機名" \
-e "EXCLUDE_SSID=你的 SSID" \
billimek/ikev2-vpn-server
其中「你的 SSID」要輸入你家中或者公司的 WiFi SSID,只要遇到這些 SSID,系統就會自動把 VPN 斷線
連到其他名稱的 WiFi 包含在行動網路時都會自動連回 VPN
接下來我們需要讓 Docker 內這個 VPN 容器製作一個 iOS /macOS 的描述檔
作者也已經把這腳本放進去容器了,我們只要執行下面指定即可自動產生一個可以在 iOS / macOS 上面安裝的描述檔
docker exec -it vpn-server generate-mobileconfig > ikev2-vpn.mobileconfig
以上 .mobileconfig 描述檔完成後你可以使用 scp、ftp 或者其他方法把檔案傳輸到你電腦上面
弄到電腦上以後你可以發 email 給自己 iOS 設備,或者是用 AirDrop 直接丟給 iOS 設備都可以
丟到 iOS 上面之後,會跳出一個視窗,告訴你要去設定裡面找出來安裝
![](/media/2019/11/jkgtwblog1220.png)
在「設定」、「一般」裡面就會看見「描述檔」,點進去就會看見剛剛丟過來的檔案
![](/media/2019/11/jkgtwblog1221.png)
如果你 iOS 有設定密碼的話,這邊會跳出讓你輸入密碼的提醒,注意!是平常 iOS 解鎖的密碼,不是你 Apple ID 或者其他的
![](/media/2019/11/jkgtwblog1222.png)
接下來會有一段警告,但不用管他,這是自己架的伺服器,沒什麼好擔心的,直接點右上角的「安裝」即可
![](/media/2019/11/jkgtwblog1223.png)
Docker 真是一個偉大的發明!
把以前要花 30 分鐘來回測試繁瑣的操作過程簡化到變成幾行指令就搞定。。