這個腳本在安裝前會先檢查什麼
install_openvpn_client_ubuntu.sh 面向 Ubuntu 20.04、22.04 和 24.04 LTS,適合使用帳號密碼驗證方式的 OpenVPN 客戶端場景。
在真正安裝之前,它會先檢查目前工作目錄裡是否存在 client.conf 和 login.txt。只要這兩個檔案缺少其中一個,腳本就會直接終止,避免系統安裝到一半卻沒有客戶端設定可用。
如何準備本地 client.conf 和 login.txt
把 client.conf 和 login.txt 放在你準備執行 helper.sh 命令的同一個目錄裡。腳本會把它們複製到 /etc/openvpn/client/,然後啟用對應的 systemd 客戶端服務。
如果你使用的是帳號密碼驗證方式,那麼 client.conf 裡應該已經包含 CA 憑證內容,並寫好 auth-user-pass login.txt 這一行。
- ./client.conf
- ./login.txt
- /etc/openvpn/client/client.conf
- /etc/openvpn/client/login.txt
腳本會自動完成哪些設定
腳本會自動安裝 openvpn、建立 /etc/openvpn/client 目錄、複製客戶端檔案、收緊檔案權限,並啟用與重新啟動 openvpn-client@client 服務。
相比手動複製檔案、再一台台主機輸入 systemctl 命令,這樣更適合做交接、標準化部署和後續複查。
DNS 自動切換是怎麼接入的
如果命令所在目錄裡已經有 ./update-resolv-conf,安裝腳本會複製這份本地 helper 到 /etc/openvpn/update-resolv-conf,自動加上執行權限,並確保 client.conf 內存在 script-security 2 與指向這個 helper 的 up / down 鉤子。
如果目前目錄沒有 ./update-resolv-conf,腳本就只安裝 OpenVPN、複製 client.conf 和 login.txt,並啟用 openvpn-client@client;不會自動寫入任何內建 DNS helper。
- /etc/openvpn/update-resolv-conf
- script-security 2
- up /etc/openvpn/update-resolv-conf
- down /etc/openvpn/update-resolv-conf
- /var/log/openvpn-dns-update.log
- helper.sh/openvpn_update_resolv_conf.sh
DNS 值定義在哪裡
安裝器本身不會憑空產生 DNS 值。如果你提供了 update-resolv-conf,那麼 10.7.7.53、114.114.114.114 和 reshub.cn 這些值,都是在這個 helper 腳本裡定義的。
在使用 systemd-resolved 的 Ubuntu 上,/etc/resolv.conf 內看到 127.0.0.53 是正常現象。這種情況下,更建議使用相容 resolvectl 的 helper。helper.sh 現在也託管了一份參考版:helper.sh/openvpn_update_resolv_conf.sh,會優先呼叫 resolvectl,必要時再回退到直接寫 /etc/resolv.conf。
安裝完成後建議這樣檢查
腳本執行完成後,建議先確認服務是否 active,再看最近的 journal 輸出,最後檢查 tun0 是否拿到了位址。如果日誌裡出現 Initialization Sequence Completed,通常就表示 VPN 已經連通。
如果你同時提供了 update-resolv-conf,再額外執行 cat /etc/resolv.conf 和 dig,確認 DNS helper 確實按預期切換了解析器。
- systemctl status openvpn-client@client
- journalctl -u openvpn-client@client -n 100 --no-pager
- ip addr show tun0
- cat /etc/resolv.conf
- dig harbor.reshub.cn +short
- dig baidu.com +short
- systemctl restart openvpn-client@client