VPN 的問題大多集中在少數幾個原因,照正確的順序檢查可以省下一個晚上。除非步驟另有說明,指令都在伺服器上執行。範例使用預設連接埠 51820/udp 的 WireGuard;如果是 OpenVPN 或 Xray,請換成您自己的服務名稱和連接埠。
最後確認於 2026-11-13。
1. 伺服器是有獨立 IPv4 的方案嗎?
VPN 用戶端是從外部連進您的伺服器。NAT 方案從外部只開放一個連接埠,也就是您的專屬 SSH 連接埠,所以任何 VPN 都無法在上面運作。如果控制台顯示的位址帶有像 20xxx 這樣的連接埠,您用的就是 NAT。改用獨立 IPv4 會保留資料,也不需要重灌;請參閱更換 IP 位址。
2. 服務有在執行嗎?
systemctl status wg-quick@wg0
journalctl -u wg-quick@wg0 -n 30 --no-pager
OpenVPN 的單元名稱通常是 openvpn-server@server,Xray 則是 xray。啟動失敗的服務幾乎都會在記錄檔最後幾行寫明原因:設定檔打錯字、缺少金鑰檔案、連接埠已被占用。
3. 它有在您預期的連接埠上監聽嗎?
ss -ulpn | grep 51820 # UDP: WireGuard, OpenVPN over UDP
ss -tlpn | grep 443 # TCP: Xray / VLESS, OpenVPN over TCP
沒有輸出就表示服務沒有在那個連接埠監聽,不管設定檔怎麼寫。請把連接埠和用戶端裡的設定比對一下。
4. 防火牆有放行嗎?
ufw status verbose
如果防火牆已啟用,而清單裡沒有您的連接埠,就把它打開:
ufw allow 51820/udp
注意協定:WireGuard 需要的是 UDP,51820/tcp 規則對它完全沒用。啟用或重新載入防火牆之前,先確認 SSH 規則還在,否則會把自己鎖在外面。萬一真的發生了,控制台裡的瀏覽器主控台可以讓您重新進入。
5. 用戶端真的到達伺服器了嗎?
在 WireGuard 上,看 handshake 就知道:
wg show
某個 peer 顯示 latest handshake: N seconds ago,表示用戶端已到達伺服器,而且金鑰相符。如果完全沒有 handshake 這一行,就表示它從未到達。這時請依序檢查:用戶端設定裡的 Endpoint IP 和連接埠、第 4 步的防火牆,以及用戶端的公鑰是否在伺服器的 [Peer] 區塊裡(反過來也要檢查)。
6. 連上了,但什麼都打不開?
通道是通的,但伺服器沒有把流量送到網際網路。檢查轉送設定:
sysctl net.ipv4.ip_forward
輸出必須是 1。如果不是,就永久開啟:
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-vpn.conf
sysctl --system
接著檢查 NAT 規則。在 WireGuard 設定裡就是含有 MASQUERADE 的 PostUp 那一行,裡面的介面名稱必須是伺服器實際的介面名稱:
ip -br addr
如果那一行寫的是 -o eth0,但您的介面叫別的名字,請修正設定並重新啟動服務。
7. 換個網路測試
不要用家裡的 Wi-Fi,改用行動網路連線,或請其他國家的人試試看。如果在那裡 VPN 可以用,而在您平常的網路不行,表示伺服器沒問題,是中間的某個環節在封鎖連線。
- 想確認伺服器從某個國家到底能不能連到:如何檢查 VPS 的 IP 能否從俄羅斯和伊朗連線。
- 在 WireGuard 和 OpenVPN 會被辨識並封鎖的地方,VLESS + Reality 看起來就像一般的 HTTPS,封鎖難度高得多。
8. 還是不行?
請開一張工單,並寫下您已經檢查過的內容:第 2–5 步的輸出,以及您使用的 VPN 用戶端名稱。有了這些,我們通常在第一次回覆就能告訴您問題出在哪裡。
評論
目前還沒有評論。歡迎成為第一位。