NetQuality 網路檢測實測:把 VPS 線路優劣跑成一張體檢報告

NetQuality 是一支 AGPL 開源的 Shell 腳本,一行指令就能在伺服器上跑出 BGP 註冊資料、31 省三網延遲、回程路由、境內測速與國際互連組成的七段網路體檢報告。本文實際在 macOS 上跑過一輪並逐段讀它的原始碼,整理七個模組的資料來源、Mac 上真實的半殘體驗與全零延遲的原因,以及報告預設會上傳成分享連結、要用 -p 才能攔下的隱私預設。

用 AI 摘要這篇文章:

一支叫 NetQuality 的開源腳本,最近在租用主機的圈子裡被當成驗貨尺:登入你要評估的那台伺服器,貼上一行指令,幾分鐘後終端機裡出現一張七段式的網路體檢報告,涵蓋 BGP 註冊資料、31 個省級行政區對三家的延遲、回程路由、境內測速與國際互連。我在自己的 Mac 上把它實際跑了一遍,先被 bash 版本檢查擋在門外,換上新版 bash 之後跑出一張半殘的報告:BGP 段有料、本地策略段整段空白、31 省延遲一片全零。這張半殘報告反而逼出兩個多數教學文不會告訴你的問題:它的數字要跑在什麼位置才有意義,以及報告跑完之後預設會流到哪裡。這兩個問題的答案,我從 3,036 行的腳本原始碼裡逐段翻了出來。

這支腳本做什麼:七個模組,資料大多不是它自己的

NetQuality 是中國開發者 xykt 維護的 Shell 腳本,2025 年 3 月首次發布,到我查核的 2026 年 9 月 17 日有 5,671 顆星,授權採 AGPL-3.0。它的安裝方式是一行 bash <(curl -Ls Net.Check.Place),也提供 Docker 映像檔給 Windows 使用者繞道。整支腳本沒有圖形介面,跑完直接在終端機裡排版輸出,設計目的就是讓你截圖分享。

NetQuality 官方 README 的完整報告範例,七個區段全部有資料Pin
官方 README 展示的完整報告範例:BGP、本地策略、接入、三網延遲、回程路由、境內測速、國際互連七段全有值(圖源:xykt/NetQuality)

值得先看清的是它的工作本質:這支腳本自己幾乎不產生知識,它把一串現成的工具與公開資料庫組裝成一張報告。

模組內容資料來源
BGP 資訊IP 段的註冊組織、ASN、前綴長度BGP.TOOLS 與 HE.NET 資料庫
本地策略TCP 擁塞控制、佇列調度、緩衝區作業系統 sysctl 參數
接入資訊交換點、上游、對等互連數量BGP.TOOLS
境內延遲31 省到電信、聯通、移動的 TCP 延遲社群維護的測試端點
回程路由從目標返回的完整路徑與線路標註NextTrace
境內測速下載上傳速度Speedtest.net CLI
國際互連五大洲節點的速率與延遲iperf3 對外測試

這裡的「電信、聯通、移動」指中國電信、中國聯通、中國移動三家業者,對岸社群慣稱三網。所謂回程路由,則是資料從對方返回你這台機器時走的線,同樣兩點之間,走普通線路與走商家標榜的優化線路,晚間尖峰的體感可以差到數倍,這正是租用主機時最難從規格表看出來、也最常被話術包裝的一段。想複習測速數字本身怎麼判讀,可以回頭看我們之前寫過的 nPerf 網路測速教學

我在自己 Mac 上跑出的半張報告

實測環境是 macOS 26.6.2 的 Mac。第一個撞上的門檻就很有代表性:macOS 內建的 bash 是 3.2 版,腳本開頭的版本檢查直接拒絕執行,訊息寫得明白,需要 4.3 以上。它建議你跑另一段升級腳本,那段腳本在 Mac 上走的同樣是 Homebrew,連 brew 還沒裝都會先幫你裝;自己直接用 Homebrew 裝新版 bash 也一樣,我裝到 5.3.20 之後就過了這關。

跑起來之後,BGP 段是整張報告裡最紮實的部分。它正確查出這條家用的對外 IP 屬於 AS9416、前綴長度 18、註冊於 APNIC,地址欄顯示一家登記在台北的公司。這裡有個容易誤讀的地方值得點破:地址欄寫的是這個 IP 段在註冊資料庫裡的登記地址,屬於配發紀錄的一部分,不是你家的所在位置。另外地區欄顯示的英文名稱,是 BGP 資料庫照 ISO 3166 標準登錄的名稱,台灣的 IP 會以該標準的正式名稱呈現,資料來源就是這樣登錄的。

在 macOS 實跑 NetQuality 的部分報告,BGP 段有資料、本地策略段空白、31 省延遲全為 0Pin
我在 macOS 實跑的報告原件:BGP 段正常查出 AS9416 與台北市登記地址,本地策略段空白、31 省延遲全為 0,原因見正文

後面三個段落就沒這麼體面了。本地策略段全部空白,翻原始碼後原因很單純:腳本讀的是 net.ipv4.tcp_congestion_control 這類 Linux 專屬的 sysctl 參數,macOS 根本沒有這幾個名字,所以這一段在 Mac 上永遠不會有字,屬於設計上的 Linux 本位。真正的插曲是 31 省延遲:整片數字都是 0。乍看很像「對外被封鎖」,但我把腳本用的測試端點拿出來,挑了幾個省的電信與移動端點,用 TCP 連線時間另外驗證,北京與上海電信約 0.20 到 0.22 秒、四川電信 0.22 秒、廣東移動 0.34 秒,抽測的端點全部可達。全零的真正原因在原始碼裡:延遲模組的探測交給 mtr 的 TCP 模式執行,而 mtr 在 macOS 上需要管理者權限才能開 socket,一般權限執行只會安靜地失敗,回報 0。預設模式下每個省分每家業者會跑 10 輪探測,延遲模式 -P 加碼到 44 輪,輪數再多次,權限不夠就是全零。

把這些湊起來,macOS 的處境就清楚了:名義上在支援清單裡,實際上你要自己補新版 bash,想看延遲要給 root 權限跑 mtr,回程路由與測速還得另外裝 nexttrace 與 Speedtest CLI。想在 Mac 上湊齊整張報告不是不可能,但這支腳本舒服的主場在 Linux 伺服器,或者丟進 Docker 跑。

跑對位置:它的主場是被評估的那台伺服器

延遲模組的設計視角解釋了它該跑在哪。九十多個延遲端點全在中國大陸,每個端點一輪打 10 次探測,量的是「這台機器到大陸各省有多快」,回程路由看的也是「資料怎麼回到這台機器」。換句話說,它的假設是你站在被測的那台機器上。這也是它在租主機圈子流行的原因:買一台標榜中國線路優化的 VPS,與其信商家頁面上的示意圖,登入機器跑一次,31 省延遲、回程走的線、晚間測速掉的幅度,全是自己機器上量出來的數字,續約或退租的判斷就有所本。

參數面上,照原始碼與說明文件整理出實用的組合:-4-6 分開跑單一堆疊;-P 是延遲模式,只測延遲不跑測速,適合快速看線路體質;-R 加省名可指定完整路由的目標省分,預設測北京、上海、廣東;-L 低流量模式省頻寬;-S 加數字跳過任意章節;-o 把報告存成檔案;-j 輸出 JSON 給後續分析。Docker 版用 docker run --rm --net=host -it xykt/netquality,參數接在後面即可。這種把一串指令收進單行腳本的思路,跟我們介紹過的 yt-dlp 批次下載選單是同一種終端機文化。

不喜歡背參數的人有另一個入口:bash <(curl -Ls Check.Place) -N 會進互動選單,我追了轉址,這條指向作者的另一個倉庫 ScriptMenu,把 NetQuality 與同系列腳本收進數字選單裡,選一個數字就開跑。輸出語言也照顧到了,加 -E 切英文,或 -l cn-l en 明定,省名在英文模式下改以 BJ、SH 這類兩字母代碼呈現。境內測速模組的鋪點也比想像裡密:說明文件引註 Speedtest.net 官方 CLI,跑電信、聯通、移動三家多節點,另含大灣區節點,等於把晚間尖峰的擁塞程度攤開給你看。同一位作者還有一支更早走紅的姊妹作 IPQuality,到同日查核有 10,381 顆星,量的是 IP 段的註冊與風險資訊,兩支搭著用,一台伺服器的身世與體質就都齊了。

有一條邊界要說清楚:延遲、回程、境內測速這三個模組的完整表現,我這次沒有在大陸連線環境的伺服器上實跑,以上的跑法說明來自腳本原始碼與說明文件,不是實測結論。從台灣家用網路跑它,只有 BGP 與接入段有參考價值,延遲段量到的是跨境距離,跟商家標榜的境內體驗是兩件事。

報告跑完會去哪:預設上傳,-p 才攔得住

這是整支腳本我認為最該放在燈光下的行為。預設情況下,報告跑完後腳本會把兩樣東西 POST 到 upload.check.place:一份 JSON 資料,內容包含遮罩後的 IP、ASN、組織名稱、前綴、31 省延遲陣列與測速結果;外加 ANSI 報告全文。伺服器回給你一個掛在 Report.Check.Place 下的連結,設計用途就是分享,讓你把報告貼進論壇或群組。參數表裡的 -p 可以關掉這個上傳行為,說明文件稱它為隱私模式;反向的開關還有一個 -f,加上之後報告改為顯示完整 IP,此時上傳內容裡的位址也會是完整的。

兩個細節讓這個預設值得你知道再跑。其一,-p 在說明文件裡排在參數清單的後段,多數教學文抄的只有基本指令,照抄的人不會知道報告預設會離開這台機器。其二,就算帶了 -p,腳本開頭仍然會連一次 hits.xykt.de 做次數統計,我帶著 -p 實跑,報告尾行照樣顯示當日 1,988 次、總計 934,721 次的全球執行量。這個 beacon 只回報計數,內容不上傳,但「隱私模式」四個字管不到它是事實。從更新時間軸看,這個設計順序也有痕跡可循:報告的圖片分享連結在 2025 年 5 月就加入了,隱私模式要到同年 8 月才補上,分享是這支腳本的核心設計軸,私有是後來才讓步出來的選項。我的建議很簡單:在租來的伺服器上跑,永遠帶 -p,你對那台機器是過客,沒理由把它的線路體質留在公開連結上;要分享再自己貼圖。

信任模型與它的尺:直跑 main 分支、AGPL、同業贊助

安裝指令裡那個好記的 Net.Check.Place,實際上是一個轉址別名,我追了轉址鏈,它 302 到 GitHub main 分支的 net.sh 原始檔。這個設計的兩面都要看:方便是真的方便,但專案從沒發過 release,你每次執行的都是當下 main 的最新內容,沒有版本可釘選,這是 curl 直跑腳本這類工具共同的信任模型,用它的同時等於信任作者的倉庫紀律。介意的人有折衷做法:先把腳本下載成檔案,看過或存檔再執行,AGPL 授權讓整支腳本攤在陽光下任人審,這是它跟閉源一鍵腳本最實質的差別。值得肯定的是這條紀錄:更新日誌顯示 2025 年 7 月底作者把所有請求從 HTTP 換成 HTTPS,之後又補上隱私模式與 Docker 路線,腳本本體持續在修。

兩個結構性的事實也擺進來。測試端點與路由標註依賴外部資源:延遲端點掛在社群維護的網域上,線路標註資料來自 NextTrace 的官方 API,歷史 issue 裡有測試節點故障的回報紀錄,數字失準時先懷疑節點再懷疑線路。另外 README 公開列著五家贊助商,全是 VPS 與代理業者,贊助名單隨 commit 紀錄有進有出。一把量測主機線路的尺,金流來自主機同業,這層關係作者選擇公開揭露而非隱藏,知情之後怎麼看待它的中立性,判斷留給你。授權是 AGPL-3.0,個人使用無妨,想改作再散布的人要先讀懂它的傳染條款。

誰該裝:有中國線路訴求的租機人

該裝的人輪廓很清楚:手上管理或正要買賣租約的 VPS 有中國連線訴求,需要在幾分鐘內拿到一張可對比的線路報告,而且看得懂終端機。它把 mtr、Speedtest、NextTrace 各自的專業輸出縫成一張表,這是它的價值,也代表單項深度要拆開看時,你還是會回到那些工具本身。不必裝的人也一樣清楚:只想知道家裡網路速度的,測速站更省事;Mac 使用者要有組依賴的心理準備,或者直接走 Docker。

回到那張半殘報告。它給我的結論是:這支腳本對數字的來源相當誠實,每個模組都標明出處,碼也攤開在 AGPL 授權下任人檢驗;它對預設值就不那麼體貼,分享優先於隱私,關閉的開關藏在參數表深處。用它的正確姿勢,是把腳本放到被評估的機器上、帶著 -p 跑、把報告留在自己手裡,數字是你的,判斷也是你的。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1388

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...