Linux 上設定 VPN 的完整教學 文章首圖

Linux 上設定 VPN 的完整教學

Linux 上設定 VPN 的完整教學

在現代網路環境中,虛擬私人網路(VPN)已不僅僅是企業內部通訊的工具,更是個人使用者保護隱私、繞過地理限制或安全存取遠端資源的重要手段。對於 Linux 使用者而言,雖然 GUI 工具日益普及,但掌握透過命令列(CLI)設定 VPN 的能力,能讓你更靈活地處理伺服器管理、自動化腳本以及各種進階網路情境。

本文將以目前主流的 Ubuntu 22.04 和 Debian 12 為例,介紹如何使用系統內建的 NetworkManager 來設定 OpenVPN 連線。這是大多數桌面與伺服器環境中最穩定且易於維護的方式。

前置準備與環境安裝

在開始之前,請確保你的系統已安裝必要的套件。雖然 Ubuntu 和 Debian 通常預裝了 NetworkManager,但我們仍需安裝 OpenVPN 的客戶端支援套件以及相關的工具鏈。

打開終端機,執行以下指令來更新套件清單並安裝 OpenVPN 和 NetworkManager 的 OpenVPN 外掛:

sudo apt update
sudo apt install openvpn network-manager-openvpn network-manager-openvpn-gnome

註:如果你使用的是純伺服器環境(無圖形介面),可以省略最後一個 network-manager-openvpn-gnome 套件,因為它主要提供 GTK+ 圖形介面支援。

安裝完成後,請確認 NetworkManager 服務正在運行:

sudo systemctl status NetworkManager

如果服務未啟動,請執行 sudo systemctl start NetworkManager 並設定開機啟動。

準備 VPN 設定檔

大多數 VPN 供應商會提供 .ovpn 格式的設定檔,其中包含了伺服器位址、憑證、金鑰以及連線參數。你需要將這些檔案下載到你的 Linux 主機上。

為了方便管理,建議在 /etc/openvpn/ 目錄下建立一個專屬資料夾,並將所有相關檔案(包含 .ovpn 檔、憑證 .crt、私鑰 .key 等)複製至此。

sudo mkdir -p /etc/openvpn/client
sudo cp your_vpn_config.ovpn /etc/openvpn/client/
sudo cp -r /path/to/certificates /etc/openvpn/client/

安全提醒:請務必調整檔案權限,確保私密金鑰僅有 root 可讀,避免資訊洩漏。

sudo chmod 600 /etc/openvpn/client/*.key
sudo chown root:root /etc/openvpn/client/*

透過命令行建立 VPN 連線

NetworkManager 提供了一個強大的命令列工具 nmcli,可以讓我們在不依賴圖形介面的情況下管理網路連線。我們將使用 nmcli connection import 指令,直接將 OpenVPN 設定檔匯入 NetworkManager。

假設你的設定檔為 vpn_config.ovpn,執行以下指令:

sudo nmcli connection import type openvpn file /etc/openvpn/client/vpn_config.ovpn

匯入成功後,你可以透過 nmcli connection show 來檢查新的連線是否已出現在列表中,並確認連線名稱(例如 vpn-connection-1)。

啟用連線與驗證狀態

現在,你可以使用 nmcli 來啟用 VPN 連線:

nmcli connection up vpn-connection-1

若一切正常,終端機會顯示 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/...)

為了驗證 VPN 是否真的生效,你可以使用 curl 查詢你的對外 IP,並與 VPN 供應商提供的 IP 進行比對:

curl ifconfig.me

如果返回的 IP 地址屬於 VPN 伺服器所在的網段,則表示連線成功。

常見問題與排解

1. 連線失敗或超時(Connection timeout)

這通常是由於防火牆阻擋了 UDP 或 TCP 端口所致。請檢查你的伺服器防火牆(如 ufwiptables),確保 VPN 使用的端口(常見為 1194 UDP 或 443 TCP)已開放。

sudo ufw allow 1194/udp
sudo ufw reload

此外,若你位於嚴格過濾網路的區域,嘗試將 .ovpn 檔中的 proto udp 改為 proto tcp,並修改端口為 443,往往能繞過阻擋。

2. DNS 解析問題

有時 VPN 連線成功,但無法瀏覽網頁,這通常是因為 DNS 設定未正確切換至 VPN 供應商提供的 DNS 伺服器。你可以在匯入連線後,使用 nmcli 修改 DNS 設定:

nmcli connection modify vpn-connection-1 ipv4.dns "8.8.8.8,8.8.4.4"
nmcli connection up vpn-connection-1

或者,在 .ovpn 檔案中加入 dhcp-option DNS 8.8.8.8 來強制指定 DNS。

小結

透過 NetworkManager 和 nmcli,我們在 Linux 上設定 VPN 變得既簡單又強大。這種方法不僅適用於桌面環境,同樣適用於無頭(Headless)伺服器,提供了極高的靈活性與自動化潛力。掌握這些基礎指令,你便能輕鬆應對各種網路連線需求,無論是在家辦公還是管理雲端伺服器。希望這篇教學能幫助你順利建立安全穩定的 VPN 連線。