自建 VPN 慢?按路徑、CPU 與連線數隔離伺服器瓶頸

自建 VPN 慢?按路徑、CPU 與連線數隔離伺服器瓶頸

Marcus Reid
2026年10月11日· 8 分鐘讀完

自建 VPN 慢時,先比較同一授權路徑有沒有隧道的表現,才改伺服器設定。有界基線、CPU 觀察與單連線、多連線對照,有助分辨 VPS、隧道、客戶端或目的地問題,但不保證連線加快。

關鍵要點

  • 只測自有或明確授權端點,先訂流量預算。
  • 可靠基線需要已知路徑,不能只假設「VPN 已關」。
  • 一併觀察 CPU、吞吐量、重傳及介面計數。
  • BBR 與多工復用各有適用層次,並非通用加速開關。
  • 一次只改一個變數,在預算內重測並確認復原及清理。

自建 VPN 慢,可能在哪裏受限?

營運自有伺服器的分工規劃訂明歸屬邊界。VPN VPS 吞吐量排查適用於授權 Linux VPS 與獨立授權客戶端,指令環境參考 Ubuntu 24.04 LTS。IP 隧道例如 WireGuard 可適用;應用程式代理則要用真正承載測試流量的傳輸方式。

作者未完成端到端基準實驗,下文沒有實測速度、丟包或相容結果。本文參考 ESnet iperf3 文件;兩端均須核對 iperf3 --version 及本機手冊,因為選項與實作行為可能不同。[1][2]

iperf VPN 測速需要已知路徑,不能直接送出流量便假設應用程式代理已接管。先界定量度的是 VPS 原始路徑、路由式隧道位址,還是明確支援的代理路徑。瀏覽器測速、單檔下載與 iperf 吞吐量回答不同問題;隔離伺服器路徑後,再用讀者測速方法重測真實任務。

步驟 1:限定授權拓撲及預算

寫清兩端、營運者許可、位址族、預期路由及測試監聽。預留空閒連接埠,供應商與主機入站只允許測試客戶端位址。iperf 是量度服務,不應長期公開。保留獨立管理通道,連接埠歸屬或範圍不明就停止。

示例計劃將 TCP 名義總速率限制為 20 Mbit/s,每次 10 秒,最多 四條串流,初始最多 六次。按目標速率,每次應用資料約 25 MB,六次約 150 MB;這是預算估算,不是結果,也不是網絡位元組的硬上限。須另留開銷、雙向流量及供應商計算差異;額度不足,應先降低速率或次數。

TCP -b 按每條串流生效,四條各 5M,名義總目標即 20 Mbit/s。[2]低於容量的限速測試不能找出最高速度。提高上限須先重審預算,不可因數字不理想便加量。可選 UDP 與重複測試若未計入原計劃,會另耗預算;超過許可總量前停止。

步驟 2:建立已知的無隧道路徑

盤點現行路由、DNS 政策、網絡客戶端及伺服器位址。用獨立授權終端或網絡建立無隧道基線,不關閉或修改日常使用的代理或 VPN 客戶端來製造直連。若不能獨立確認路徑,標明基線未確立,停止因果比較。

在自有伺服器替換實際本地綁定位址。基線可用獲准公網側位址,隧道階段則用伺服器隧道位址。先確認監聽未被佔用且入站受限。以下一次性服務接受測試後退出,每次計劃運行前建立新的自有實例。

SERVER_BIND_IP='REPLACE_WITH_OWNED_LOCAL_ADDRESS'
iperf3 -s -1 -B "$SERVER_BIND_IP" -p 5201

獨立客戶端將目標替換為獲准可達位址。以下是有界單串流 TCP 方法,並非測速結果:

TEST_SERVER_IP='REPLACE_WITH_AUTHORIZED_SERVER_ADDRESS'
iperf3 -c "$TEST_SERVER_IP" -p 5201 -t 10 -P 1 -b 20M

記錄版本、時間、真實路由、傳送端及接收端摘要,以及有否其他負載同時運行。分享時隱藏端點位址。TCP 控制連線開啟,不代表資料路徑與位址族符合預期;不能綁定時不要終止其他監聽,回到歸屬盤點。

步驟 3:比較隧道並觀察伺服器

以路由式隧道位址重跑相同單串流測試,其他客戶端條件、目的地主機及位址族不變。若聲稱互聯網出口改變,從實際測試應用程式核對可見出口位址,另查 DNS、IPv6 與失敗行為。對閘道隧道位址的 iperf 只量度一段,不等於閘道以外的真實應用路徑。

每次運行前、中、後觀察。現有工具支援時記錄每核心 CPU,整體空閒可能掩蓋單一工作線程飽和。虛擬化環境記錄 steal 時間,但不能單憑它指控供應商超賣。檢查記憶體壓力與介面計數變化,保持觀察介面及時間間距一致。

以下為授權 Linux 端點的本機觀察指令。只取相關 socket 與介面,不公開整部主機的流量中繼資料。ss 在可用時提供 TCP 擁塞及重傳資訊。[4]

vmstat 1 12
ss -tin
ip -s link

重傳是 TCP 觀察值,不直接等於 WireGuard 外層 UDP 丟包。介面 drop 也可能包含無關流量;要與測試時段對應,不能加總不同層計數。若做有界 UDP 丟包、抖動實驗,仍限同一自有端點,另獲低速率與時長預算並查本機手冊;結果只描述該測試流,不代表所有互聯網封包。

步驟 4:分辨單連線與多連線

重新啟動一次性自有服務後,以相同名義總上限比較四條串流。不要同時增加並行數及總傳送速率;以下每條 5M,共四條:

iperf3 -c "$TEST_SERVER_IP" -p 5201 -t 10 -P 4 -b 5M

只在初始次數分配內比較基線及隧道。單串流低於上限、多串流改善總吞吐時,應查單流行為、延遲及處理,不可宣稱 VPS 容量無限。兩者均達上限,只量到設定的天花板;探索容量要另訂預算。

按真實運行填寫的觀察可能解釋下一項隔離檢查
兩條路徑都慢,CPU 及計數相似客戶端、供應商或目的地的共同限制換獲准時段或另一自有端點
基線足夠、隧道較慢且單核心忙此路徑的隧道處理或設定限制對應核心與程序,只測一個設定
慢時段重傳增加TCP 路徑或隊列須檢查固定端點,比較方向
小任務正常,大傳輸停滯可能涉及路徑 MTU使用協議專屬 MTU 流程
iperf 正常,真實應用仍慢路徑、解析或應用行為不同單獨重現真實任務

這些是假設,不是診斷結果。高接收速率不證明延遲敏感任務正常。WireGuard 傳輸停滯時先看MTU 排查,不要創作通用 MTU 值;保留原值,只作一項有依據修改後重複同一有界任務。

步驟 5:在正確層次只改一個變數

修改前寫下一個假設、一項變更與預期觀察,記錄原值及復原方式。版本、路由、客戶端與負載保持一致;同時換位置、協議、MTU 及 CPU 計劃會破壞比較。獨立管理連線不穩時,先復原再停止。

Linux tcp_congestion_control 選擇 TCP 擁塞控制,可用演算法取決於所用核心。[3]BBR 不會替換 WireGuard 外層 UDP 的擁塞演算法。轉送 TCP 串流的端點,與伺服器發起 TCP 連線又屬不同情況。不可在共用主機全域改 sysctl,亦不可在無測量下宣稱切換改善隧道。

多工復用只會在支援的實作及傳輸中合併邏輯串流,不是 WireGuard 設定;它可能改變共享及故障關係,不保證降低延遲。代理實作要核實固定版本語義,單獨改 mux,不把欄位搬到無關協議。驗收須包括真實應用。

封裝也是變數,並非免費改善。比較容器與原生閘道前,先讀WireGuard Docker 與原生部署責任,保持相同拓撲及實際政策。不能為取得好看結果加權限或繞過防火牆。

步驟 6:重測、復原及移除測試暴露

剩餘預算容許時作 A/B/A:原設定、單項修改、還原原設定。比較相近條件,報告波動而非挑最好數字;額度內未能重現,就記作未能確定,不無限加測。

實驗看似有效也須還原原設定,除非另有決定保留變更。由實例負責人套用復原,確認原服務、監聽、路由與獨立管理連線。撤銷臨時身份,只移除本次新增防火牆規則、監聽及檔案;一次性程序退出,不代表入站規則已刪除。

復原或原服務健康未確認,便停止後續實驗。不可終止其他程序、重設全機防火牆或修改日常網絡客戶端。保留少量經處理的記錄,包含假設、設定、真實觀察與清理結果,並按證據負責人的期限刪除。

若瓶頸反覆需要伺服器管理,可看VPS 與 VPN 的責任比較,決定誰承擔持續維運。這不保證換服務或升級 VPS 計劃能改善未經量度的路徑。

總結

  • 測試前限定範圍、頻寬、時長、並行數及總次數。
  • 獨立確認無隧道路由,再比較相同隧道路徑。
  • 關聯 CPU、吞吐量與計數,不混淆層次。
  • 一次只改有依據的一個變數,並檢查真實應用。
  • 還原設定,獨立確認所有自有測試資源已移除。

常見問題

測速網站慢就證明 VPS 慢嗎?

不是。客戶端、接入網絡、測試目的地或路由都可能主導結果。先建立授權端到端基線,分開測隧道,再重測真實任務;不能憑一次瀏覽器結果診斷伺服器。

應使用公開 iperf 伺服器嗎?

使用自有或明確獲准且預算合適的端點。公開可達並不等於無限授權。自有監聽亦須限制存取、設定有限計劃,完成後移除暴露。

為何比較單串流與多串流 TCP?

在總傳送速率受控時,它們有助分辨單流行為及總吞吐量。保持總上限不變;兩者達上限,只證明達到所選上限,不代表最高容量。

開啟 BBR 會令 WireGuard UDP 更快嗎?

TCP 擁塞控制選擇不代表這項結論。WireGuard 外層是 UDP;部分 TCP 端點可採用所選演算法,但歸因前必須確認相關端點、核心支援與量度效果。

mux 是通用 VPN 加速設定嗎?

不是。復用屬於指定實作及傳輸,WireGuard 沒有對應 mux 開關。它會影響共享或故障行為;保留修改前須核實實作,並比較真實任務。

這些指令能經過任何應用程式代理嗎?

不會自動成立。直接 iperf 流量可能完全繞過代理。使用路由式隧道位址或明確支援的測試傳輸;否則路徑未確立,不能稱代理基準測試。

何時應停止實驗?

預算用盡、歸屬不明、管理不穩、影響其他服務或復原未驗證時停止。保存有限證據、還原原值、撤銷臨時身份並移除本次暴露,才考慮下一實驗。

免責聲明: 本文提供依據官方文件的量度方法,不是作者基準數據或性能保證。只使用授權端點,遵守法律及供應商限制,分開記錄真實觀察、預算估算與假設。

來源:

  1. iperf3 — ESnet https://software.es.net/iperf/
  2. Invoking iperf3 https://software.es.net/iperf/invoking.html
  3. IP Sysctl — Linux Kernel documentation https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html
  4. ss — socket statistics on Ubuntu 24.04 LTS https://manpages.ubuntu.com/manpages/noble/man8/ss.8.html

Sources checked 2026 年 10 月 11 日。

開啟 3 天免費試用

註冊即可免費體驗全部高級功能。

*只限新用戶;每位用戶只可獲得一次試用。

自建 VPN 慢?按路徑、CPU 與連線數隔離伺服器瓶頸 | AethoVPN