OpenVPN 指南

在 Ubuntu 上安裝 OpenVPN 客戶端:執行前檢查本地 client.conf 和 login.txt

一篇面向實作的說明,講清楚如何使用 install_openvpn_client_ubuntu.sh 在 Ubuntu 上安裝 OpenVPN、檢查目前目錄中的 client.conf 和 login.txt,並啟用 openvpn-client@client 服務。

閱讀約 6 分鐘 · 2026-03-24

這個腳本在安裝前會先檢查什麼

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 確實按預期切換了解析器。

install_openvpn_client_ubuntu.sh 成功執行並且 openvpn-client@client 進入 active 狀態時的終端輸出
成功執行時,摘要內應看到 openvpn-client@client 已經進入 active。如果同時提供了 update-resolv-conf,這裡也會顯示 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

相關專題

OpenVPN 客戶端接入與 DNS 處理

面向 Ubuntu 和 CentOS 7 主機的 OpenVPN 客戶端接入專題,重點覆蓋 client.conf、login.txt、DNS 腳本、systemd 服務和按需路由。

查看專題

問題頁面

為什麼 OpenVPN update-resolv-conf 不生效

定位 OpenVPN 私網 DNS 不生效時最常見的幾個原因:CRLF、腳本不可執行、systemd-resolved 接管等。

打開頁面