
一般來說,如果要測試網路速度,大概有 90% 的人會說用 Speedtest 之類的 App 來測試就可以了。但你知道嗎?這種測試方式是綜合測試,就是加入了頻寬、基地台、對方網站限速的多種因素,如果你是要測試這種泛數據,確實 Speedtest 就能滿足你當下的需求,反正你只是要測看看當下的網路在多重因素下「能跑多快」?
不過如果你是一個網路管理員,那麼假設測出來的結果是不優的,接下來你要如何解決問題?
假設如果我們猜測是內部的設備、網段的配置有問題,我們要如何測出真正的問題點?哪個地方比較慢?或者,我要「測試無線網路基地台」的速度……
用 Speedtest 能測出無線網路的實際速度嗎?
原則上是可以,不過你要理解它的測試方式。
Speedtest 會把整段網路路徑先串起來:
你的裝置 (電腦/手機)> Wi-Fi 無線連線 > 你的路由器 > ISP(中華電信/台灣大寬頻等)> Speedtest 測速伺服器

然後才去測試這整段網路的實際傳輸上下載,可以測到很精準的數據,但是沒辦法只針對「無線網路基地台」來測試速度。
如果你覺得公司網路太慢,用 Speedtest 測試給網管、MIS 看,他們一定不會理你的,因為他們的知道任何一個環節變慢,都會導致 Speedtest 測試的結果是不好的。
用 ping 封包能夠測出速度嗎?
ping(Packet Internet Groper)主要會發送 ICMP Echo Request 封包給目標主機,並等待回應 (Echo Reply)。藉由記錄回覆所需時間,就能估算出「往返延遲(RTT, Round Trip Time)」。
例如 ping Google 的 DNS(假設我們設定 ping 10 次)ping -c 10 8.8.8.8,然後你會得到下面類似的資訊:

從它回覆的資訊來看,第四個封包(seq 3)發生 Request timeout(回覆時間超時),以每一個回覆 time 的 ms 來看,時間落差很大,通常結果不應該超過 130 ms,超過代表網路雍塞、或是基地台的網路不穩定。
不過你能得到的資訊還是非常模糊,即便你把目標替換成基地台的 ip,因為用 ping 不是真正的速度測試(Throughput test),只能反映「延遲(latency)」、「封包遺失(packet loss)」、「穩定度(jitter)」等品質指標。
簡單來說,ping 真正的功用其實是丟封包去目標位置上,然後透過封包回傳的方式可以得知回傳時間、存活率,藉此可以得知你要測試的網址、IP 是否存在。
而且,面對 ping 的需求,伺服器(或任何網路設備)可以設定不回應 ICMP Echo Request(ping),這是非常常見的安全作法,主要是針對「安全防禦」,避免網路攻擊主機的先前探測,例如攻擊者常用 ping sweep 就可以掃整個網段找出開機中的主機。但是若主機不回應 ping,就難以被快速偵測到。
另一個則是「DDoS 防護」,有些網路攻擊是使用大量 ICMP 封包來消耗網路頻寬與 CPU。有些防火牆會直接封鎖 ICMP,以減少被這些機械化的攻擊。
如果 MIS 帶一台電腦來,然後用 ping 的方式測試網路給你看,我要告訴你,他百分之百是來演戲給你看的,因為 ping 和網路品質根本無關,我可以把 timeout 的容許時間拉長,這樣就不容易出現封包丟失的情況。
使用無線網路監測工具呢?
很多網管、MIS 會針對無線網路設置使用專用工具來檢查,例如我最常用的一套名為「WiFi Explorer Pro 3.app」。
WiFi Explorer Pro 3 是一款專業級的 macOS 無線網路分析工具,由 Adrian Granados 開發,專為網路管理員、IT 技術人員與進階使用者設計。它能即時掃描附近的 Wi-Fi 網路,並以圖表和表格方式呈現各項技術資訊,方便使用者診斷、優化與除錯無線環境。

WiFi Explorer Pro 3 的主要功能
- 即時掃描與分析:顯示所有可見的 Wi-Fi 網路(SSID),包括頻道、BSSID、頻寬、RSSI(訊號強度)、雜訊、SNR(訊號雜訊比)、安全性類型、協定(802.11a/b/g/n/ac/ax)等。
- 頻譜與干擾分析:用視覺化圖表呈現 2.4GHz 與 5GHz 頻段的頻道分佈,協助判斷頻道重疊與干擾。
- 進階濾鏡與比較:可以篩選出特定製造商、SSID 或頻段的基地台,並比較同 SSID 的多個接取點。
- 歷史紀錄與資料匯出:可保存掃描結果(CSV、TXT、JSON),或匯出為報告以供後續分析。
- 整合外部硬體:支援外接 Wi-Fi 網卡與 USB Adapter 進行更精確的分析。
在「無線基地台速度測試」上的用途
WiFi Explorer Pro 本身並非速度測試工具(它不會傳輸資料來測速),但它能為速度測試提供極佳的輔助分析:
- 協助選擇最佳頻道:透過頻譜分析找到干擾最少、最穩定的頻道,有助提升實際速度。
- 觀察訊號強度與 SNR:在不同位置測量 RSSI 與 SNR,判斷速度慢是否因為訊號弱或干擾高。
- 比較多個基地台(Mesh/多AP):觀察漫遊時連線到哪個 BSSID、切換是否順暢。
- 實際還是需要配合速度測試工具。
你可以用 WiFi Explorer Pro 找出最佳位置與頻道,再搭配其他工具測試實際的上傳、下載速度。這樣能對照「理論無線品質」與「實際速度」之間的差異。
無線網路測試工具的功能,主要還是在網點訊號,頻段覆蓋率……沒有時際速度測試的功能。
直接用瀏覽器下載/上傳來測速度呢?
直接用瀏覽器下載或上傳大檔案,確實可以測出真實使用情境下的「有效速度」,但它和專業測速工具(如 iperf3、Speedtest、WiFi Explorer Pro 搭配使用)相比,有一些差異與限制。

當你用 Safari、Chrome 或 Edge 等瀏覽器去:
- 下載一個大檔案(例如 1GB ISO 或影片檔)
- 上傳大檔案(例如到 Google Drive、Dropbox 或你自己的伺服器)
系統會顯示下載速度(Download Rate)或上傳進度,這其實就是在測試:
- 實際應用層速度(TCP throughput)
- 經過所有網路層級(Wi-Fi、路由器、ISP、伺服端)的真實傳輸效率
也就是說,這樣測到的結果非常「貼近真實使用體驗」。
但相較於專業工具,它無法細分:無線連線品質(RSSI、SNR、干擾、封包重傳率)、哪個基地台在服務你(BSSID)、頻道擁擠度與頻寬(20/40/80 MHz)、實際協定速率(PHY rate,例如 866 Mbps ≠ 真實速度)。
換句話說,你會知道「慢」,但不知道「為什麼慢」。更不用說你要測試的基地台是不是真的效率不彰。
用專用測試工具 iperf3
話說,如果不排斥用終端機工具的話,開源套件「iperf3」就是一個非常棒的網路測試工具,而且只要有對外 IP,不限內網或是外網都可以直接用點對點來測試傳輸速度,非常的好用。
iperf3 的安裝方式
- mac 上的安裝方式是透過 Homebrew:
brew install iperf3 - Linux 或是 WSL 則是透過 apt:
sudo apt update && sudo apt install -y iperf3
如果你的 Windows 沒有安裝 WSL 的話,就是可以透過直接下載 exe 執行檔,或是透過 Power Shell 裡面的管理程式來安裝:
- https://iperf.fr/iperf-download.php#windows
- 也可以用 scoop 來安裝:
scoop install iperf3 - 活是用 Chocolatey 來安裝(執行需要用管理員權限執行 Power Shell ):
choco install iperf3 -y
不過無論是 scoop 或是 Chocolatey,都需要安裝管理程式才能執行我上面提供的安裝指令。(我個人會更推薦 WSL 的環境)
啟動目標 iperf3 Server
由於我們需要點對點測試,所以我們需要在被測試的目標上也裝上 iperf3。當你安裝完成後需要幫測試目標的環境啟動 iperf3 Server 模式,以下我提供幾個常用的指令:
iperf3 -s #啟動 Server 模式(預設的 Port 為 5201)
iperf3 -s -p 5002 #啟動 Server 模式並指定 Port 為 5002)
如果你是安裝 Windows 的 exe 安裝的話要在 Power Shell 指定它是 exe:
iperf3.exe -s
iperf3 Client 端
現在我們要透過區域網路的 Client 端去測試剛才那台主機,假設 IP 為 192.168.0.2,於是在終端機輸入:
iperf3 -c 192.168.1.2 -t 30 -P 4
這邊說明一下這個指令的意思:
- -c 代表是用 Client 模式
- -t 30 代表你要測試 30 秒的時間(時間太短會因為網路抖動而失準,30 秒是一個較為準確的時間)
- -P 4 則是我希望開四條 TCP 通道去同時測試(這樣會更客觀、準確)
執行結果
因為設定 30 秒的關係,過程中你會一直看到「過程數據」大概會更新 10 幾次,最後就會整理數據結果。

- Transfer:傳送的總資料量
- Bandwidth:平均頻寬(Mbps / Gbps)
- sender:client 端統計
- receiver:server 端統計(通常相近)
科技始終來自於懶惰
就如同上面這句話,我就是很懶得每次寫指令,而且我希望能用引數的方式來帶我想測試的 IP,所以我就寫了一支自動化的程式。
#!/bin/bash
# iperf3_wifi_speed_test_v0.3
# CopyRight (c) 2025 Alrin
set -euo pipefail
SERVER_IP="${1:-192.168.0.2}"
SERVER_PORT="${SERVER_PORT:-5201}"
WIFI_IF="${WIFI_IF:-en0}"
TEST_TIME="${TEST_TIME:-30}"
PARALLEL="${PARALLEL:-4}"
# ---------------------------------
# 函式:檢查或安裝 iperf3
# ---------------------------------
check_or_install_iperf3() {
if command -v iperf3 >/dev/null 2>&1; then
return 0
fi
echo "❌ 找不到 iperf3"
echo -n "是否要立即安裝?(y/n):"
read -r ans
if [[ "$ans" =~ ^[Yy]$ ]]; then
OS_TYPE="$(uname -s)"
if [[ "$OS_TYPE" == "Darwin" ]]; then
if ! command -v brew >/dev/null 2>&1; then
echo "⚠️ 找不到 Homebrew,請先安裝:https://brew.sh/"
exit 1
fi
echo "🍺 使用 Homebrew 安裝 iperf3..."
brew install iperf3 || { echo "❌ 安裝失敗"; exit 1; }
elif [[ "$OS_TYPE" == "Linux" ]]; then
if grep -qi microsoft /proc/version 2>/dev/null; then
echo "🐧 WSL 環境偵測,使用 apt 安裝 iperf3..."
else
echo "🐧 Linux 環境偵測,使用 apt 安裝 iperf3..."
fi
sudo apt update && sudo apt install -y iperf3 || { echo "❌ 安裝失敗"; exit 1; }
else
echo "⚠️ 不支援的系統類型:$OS_TYPE"
exit 1
fi
else
echo "🚫 使用者取消安裝。"
exit 1
fi
}
# ---------------------------------
# 主程式開始
# ---------------------------------
check_or_install_iperf3
echo "📡 目標伺服端:$SERVER_IP:$SERVER_PORT"
echo "📍 Wi-Fi 介面:$WIFI_IF"
LOCAL_IP="$(ipconfig getifaddr "$WIFI_IF" 2>/dev/null || hostname -I | awk '{print $1}')"
echo "🌐 本機 Wi-Fi IP:$LOCAL_IP"
echo "🕐 測試時間:${TEST_TIME}s × ${PARALLEL} 並行"
extract_mbps_all() {
grep -Eo '[0-9]+(\.[0-9]+)? Mbits/sec' | awk '{print $1}'
}
calc_stats() {
local vals=("$@")
[[ ${#vals[@]} -eq 0 ]] && { echo "❌ 無測試數據"; return; }
local min=$(printf '%s\n' "${vals[@]}" | sort -n | head -1)
local max=$(printf '%s\n' "${vals[@]}" | sort -n | tail -1)
local avg=$(awk '{sum+=$1} END{if(NR>0) printf "%.2f", sum/NR}' <<<"${vals[*]}")
echo "📊 最低 ${min} Mbps | 最高 ${max} Mbps | 平均 ${avg} Mbps"
}
# ============================
# ⬆️ 上傳測試(Client → Server)
# ============================
echo "----------------------------"
echo "⬆️ 上傳測試(Client → Server)"
UPLOAD_RAW="$(iperf3 -B "$LOCAL_IP" -c "$SERVER_IP" -p "$SERVER_PORT" -P "$PARALLEL" -t "$TEST_TIME" 2>&1)"
UPLOAD_VALUES=($(echo "$UPLOAD_RAW" | extract_mbps_all))
calc_stats "${UPLOAD_VALUES[@]}"
# ============================
# ⬇️ 下載測試(Server → Client)
# ============================
echo "----------------------------"
echo "⬇️ 下載測試(Server → Client)"
DOWNLOAD_RAW="$(iperf3 -B "$LOCAL_IP" -c "$SERVER_IP" -p "$SERVER_PORT" -P "$PARALLEL" -t "$TEST_TIME" -R 2>&1)"
DOWNLOAD_VALUES=($(echo "$DOWNLOAD_RAW" | extract_mbps_all))
calc_stats "${DOWNLOAD_VALUES[@]}"
echo "----------------------------"
echo "🎯 測試完成。"
把它存下來並依照你喜歡的命名,如果你不知道要叫什麼,那就用我的「iperf3_wifi_speed_test_v0.3.sh」
這個程式內建的測試主機是我自己環境設定的 iperf3 Server「192.168.0.2」,你直接執行他就會測這個主機的連線,但是會經過網際網路,造成失準,所以如果你要測試自己的主機就是改成:
iperf3_wifi_speed_test_v0.3.sh [你的 IP] [指定的 Port]
假設你的主機在公司內部的 IP 是「172.24.0.1」埠號是「5200」於是:
iperf3_wifi_speed_test_v0.3.sh 172.24.0.1 5200
然後程式會自動幫你執行並計算,實際會得到結果像這樣:

這個是預設你用 Mac 的無線網路介面卡去測試,如果你用了其他的網卡,en0 可能就要改成其他數字。
你可以不用自己重新計算,就能夠得到 30 秒 + 4 TCP 的測試平均值,對於網路管理人員來說應該會是很方便的工具。
同樣,如果你要分享這個指令我不反對,但請不要刪掉我前面的版權註記,我會在程式裡面標暗號,但是希望大家能在取用的時候尊重一下創作者,我會非常感激~
我的觀點
iperf3 是一個不太困難的測試工具,但是免錢,而且我比對過和實際下載檔案的速度幾乎是完全一樣的,對於要管理無線網路設備或是找出網路中間的某個網點可能發生問題,這會是一個很實用的工具,搭配 WiFi Explorer Pro 3 這種訊號工具,其實準確度還是很高的~
















