本日主題:實際操作網路診斷指令並看懂輸出 預計時間:2 小時(動手日) 對應主教材:第 2.7 節


一、今日學習目標

  • [ ] 實際執行各個網路診斷指令
  • [ ] 看懂每個指令的輸出
  • [ ] 知道每個指令「在驗證什麼」
  • [ ] 能根據輸出判斷問題所在

二、教材內容:逐個指令實作

在 Windows 開「命令提示字元(cmd)」或 PowerShell;Mac/Linux 開終端機。括號內為 Mac/Linux 對應。

2.1 ipconfig /all — 看自己的網路設定

ipconfig /all        # (Mac/Linux: ifconfig 或 ip addr)

看什麼:IPv4 位址、子網路遮罩、預設閘道、DNS 伺服器、實體位址(MAC)、DHCP 是否啟用。 - 若 IP 是 169.254.x.x → 沒拿到 DHCP。 - 記下你的「預設閘道」位址,下一步會用到。

輸出範例與解讀

┌──────────────────────────────────────────────────┐
│  ipconfig /all 輸出重點解讀                        │
├──────────────────────────────────────────────────┤
│                                                  │
│  乙太網路卡 區域連線:                               │
│                                                  │
│    描述 . . . . . . : Intel I219-V               │
│    實體位址 . . . . : AA-BB-CC-11-22-33  ← MAC   │
│    DHCP 已啟用 . . : 是          ← 確認用 DHCP    │
│    IPv4 位址 . . . : 192.168.1.50 ← 你的 IP      │
│    子網路遮罩 . . . : 255.255.255.0 ← /24        │
│    預設閘道 . . . . : 192.168.1.1  ← 路由器       │
│    DNS 伺服器 . . . : 192.168.1.10 ← 內部 DNS    │
│                      8.8.8.8       ← 備用 DNS    │
│    租約取得 . . . . : 2024/01/15 08:30            │
│    租約到期 . . . . : 2024/01/15 16:30            │
│                                                  │
│  ✅ 正常:IP 不是 169.254、閘道和 DNS 都有值        │
│  ❌ 異常:IP 是 169.254 → DHCP 問題               │
│  ❌ 異常:閘道是空的 → 無法對外連線                 │
│                                                  │
└──────────────────────────────────────────────────┘

ipconfig 其他常用參數

指令 功能 使用時機
ipconfig 簡短顯示 IP/遮罩/閘道 快速確認 IP
ipconfig /all 顯示完整設定 詳細排查
ipconfig /release 釋放 DHCP 租約 重新取得 IP 前
ipconfig /renew 重新向 DHCP 取得 IP 解決 DHCP 問題
ipconfig /flushdns 清除 DNS 快取 DNS 查不到正確結果時
ipconfig /displaydns 顯示 DNS 快取內容 檢查快取是否有問題

2.2 ping 127.0.0.1 — 測本機 TCP/IP

ping 127.0.0.1

驗證:本機網路堆疊正不正常(幾乎都會通;不通代表系統層級問題)。

輸出範例:
Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128  ← 正常
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)  ← 0% 丟包
    Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms  ← 延遲幾乎為 0

2.3 ping 閘道 — 測到路由器(區網)

ping 192.168.1.1     # 換成你剛記下的閘道

驗證:到路由器通不通。不通 = 區網問題(線、交換器、IP 設定)。

┌──────────────────────────────────────────┐
│  ping 閘道的結果判讀                       │
├──────────────────────────────────────────┤
│                                          │
│  ✅ Reply → 區網正常                      │
│                                          │
│  ❌ Request timed out → 區網有問題        │
│     → 檢查網路線                          │
│     → 檢查交換器埠                        │
│     → 確認 IP/遮罩是否正確               │
│     → 確認閘道 IP 是否正確               │
│                                          │
│  ⚠️ 高延遲 (time > 10ms) → 區網壅塞     │
│     → 正常區網應該 < 1ms                 │
│                                          │
└──────────────────────────────────────────┘

2.4 ping 8.8.8.8 — 測對外連線

ping 8.8.8.8

驗證:能不能連到網際網路。閘道通但這裡不通 = 對外連線或防火牆問題。

看重點: - time=XXms:數字越小越快。國內通常 10~30ms,連到美國 150~250ms。 - Request timed out:不通。 - Packets Lost:丟包率。丟包 > 5% 就需要關注。

正常範例:
Reply from 8.8.8.8: bytes=32 time=12ms TTL=116  ← 正常
Reply from 8.8.8.8: bytes=32 time=11ms TTL=116

異常範例:
Request timed out.  ← 不通
Request timed out.

丟包範例:
Packets: Sent = 4, Received = 2, Lost = 2 (50% loss)  ← 50% 丟包,嚴重

ping 的常用參數

參數 功能 範例
-t 持續 ping(Windows) ping -t 8.8.8.8(按 Ctrl+C 停止)
-n 次數 指定 ping 幾次 ping -n 10 8.8.8.8
-l 大小 指定封包大小 ping -l 1500 8.8.8.8
-a 反解 IP 為主機名 ping -a 192.168.1.1

2.5 nslookup — 測 DNS

ping www.google.com
nslookup www.google.com

驗證:IP 通但網址不通 = DNS 問題。nslookup 會顯示 DNS 伺服器與解析到的 IP。

nslookup 輸出範例:

Server:  dns.tameco.local    ← 你正在使用的 DNS 伺服器
Address: 192.168.1.10        ← DNS 伺服器的 IP

Non-authoritative answer:    ← 從快取回答(正常)
Name:    www.google.com
Address: 142.250.80.46       ← 解析到的 IP

如果 DNS 有問題會看到:
*** dns.tameco.local can't find www.google.com: Server failed
→ DNS 伺服器無法解析,確認 DNS 伺服器是否正常

nslookup 進階用法

# 指定用不同的 DNS 伺服器查詢
nslookup www.google.com 8.8.8.8

# 查詢 MX 記錄(郵件伺服器)
nslookup -type=mx google.com

# 查詢 NS 記錄(DNS 伺服器)
nslookup -type=ns google.com

# 查詢所有記錄
nslookup -type=any google.com

2.6 tracert / traceroute — 看封包路徑

tracert www.google.com    # (Mac/Linux: traceroute)

驗證:封包經過哪些節點、卡在哪一跳(hop)。

輸出範例:

Tracing route to www.google.com [142.250.80.46]

  1    <1 ms    <1 ms    <1 ms  192.168.1.1       ← 你的閘道
  2     3 ms     2 ms     3 ms  10.0.0.1          ← ISP 第一跳
  3     8 ms     7 ms     8 ms  203.1.2.1         ← ISP 核心
  4    12 ms    11 ms    11 ms  72.14.209.81      ← Google 邊界
  5    12 ms    12 ms    12 ms  142.250.80.46     ← 到達目的地

解讀:
• 每一行 = 一個路由節點(hop)
• 三個時間 = 三次測量的延遲
• 延遲突然大增的那一跳 = 可能的瓶頸
• 出現 * * * = 該節點不回應(不一定是問題,可能是防火牆擋了)
• 如果從某一跳開始全部 * * * = 可能在那裡斷了
┌──────────────────────────────────────────┐
│  tracert 結果判讀技巧                      │
├──────────────────────────────────────────┤
│                                          │
│  正常:每一跳延遲逐漸增加                  │
│  1:  1ms  → 2:  3ms  → 3:  8ms         │
│                                          │
│  異常:某一跳延遲突然暴增                  │
│  1:  1ms  → 2:  3ms  → 3: 500ms ← 瓶頸 │
│                                          │
│  斷線:某一跳之後全部 * * *               │
│  1:  1ms  → 2:  3ms  → 3: * * * ← 斷了 │
│                                          │
└──────────────────────────────────────────┘

2.7 netstat — 看本機連線

netstat -an     # 看本機所有連線與監聽的埠
輸出範例:

Proto  Local Address       Foreign Address      State
TCP    0.0.0.0:80          0.0.0.0:0            LISTENING    ← 正在監聽 80 埠
TCP    0.0.0.0:443         0.0.0.0:0            LISTENING    ← 正在監聽 443 埠
TCP    192.168.1.50:52001  142.250.80.46:443    ESTABLISHED  ← 已連到 Google
TCP    192.168.1.50:52002  13.107.42.14:443     ESTABLISHED  ← 已連到 Microsoft

狀態說明:
  LISTENING    = 正在等待連線(伺服器模式)
  ESTABLISHED  = 已建立連線
  TIME_WAIT    = 連線剛關閉,等待殘餘封包
  CLOSE_WAIT   = 對方已關閉,等待本機關閉

netstat 常用參數

參數 功能 範例
-a 顯示所有連線和監聽埠 netstat -a
-n 用數字顯示(不解析名稱) netstat -n
-o 顯示 PID(程序 ID) netstat -ano(找哪個程式佔了埠)
-b 顯示程式名稱(需管理員) netstat -b

💡 實務技巧netstat -ano | findstr :80 可以找出是哪個程式(PID)佔了 80 埠。

2.8 arp -a — 看區網 MAC 對應

arp -a          # 看區網內 IP 對應的 MAC
輸出範例:

Interface: 192.168.1.50
  Internet Address      Physical Address      Type
  192.168.1.1           aa-bb-cc-11-22-33     dynamic   ← 閘道的 MAC
  192.168.1.10          dd-ee-ff-44-55-66     dynamic   ← 伺服器的 MAC
  192.168.1.20          11-22-33-44-55-66     dynamic   ← 某台電腦的 MAC

Type 說明:
  dynamic = 透過 ARP 學習到的(會過期)
  static  = 手動設定的(不會過期)

ARP(Address Resolution Protocol) 的作用:當電腦要傳資料給同網段的另一台時,需要知道對方的 MAC 位址。電腦會發 ARP 廣播「192.168.1.1 的 MAC 是什麼?」,閘道回應自己的 MAC,結果存入 ARP 快取表。

⚠️ 常見誤解

  • 誤解:「ping 不通就是網路斷了」→ 不一定。有些防火牆會擋 ICMP(ping 使用的協定),導致 ping 不通但其他服務正常。先用其他方式確認(例如開網頁、SSH 連線)。

💡 面試加分小知識

  • pathping(Windows)結合了 ping 和 tracert 的功能,會持續一段時間測量每一跳的延遲和丟包率,輸出更完整的網路路徑分析。
  • mtr(Linux/Mac)也是 ping + traceroute 的結合,即時動態顯示。
  • 面試時能說出「我會用 ipconfig 看設定、ping 測連通、nslookup 測 DNS、tracert 看路徑」這套組合,就能展現你有系統化的排查能力。

三、今日實作任務(產出)

任務:完成「指令練習紀錄」

把以下每個指令跑一遍,記錄輸出重點(截圖或文字)+ 一句「它驗證了什麼」:

  • [ ] ipconfig /all → 驗證:我的 IP、閘道、DNS 設定
  • [ ] ping 127.0.0.1 → 驗證:本機 TCP/IP 堆疊
  • [ ] ping <你的閘道> → 驗證:到路由器的區網連線
  • [ ] ping 8.8.8.8 → 驗證:對外網際網路連線
  • [ ] ping www.google.com → 驗證:DNS 解析 + 對外連線
  • [ ] nslookup www.google.com → 驗證:DNS 伺服器是否正常
  • [ ] tracert www.google.com → 驗證:封包路徑和各節點延遲
  • [ ] netstat -an → 驗證:本機的連線狀態和監聽埠
  • [ ] arp -a → 驗證:區網 IP 與 MAC 的對應

進階實驗: 1. 把電腦 DNS 改成一個錯的位址(如 1.2.3.4),再 ping 網址看會怎樣(記得改回來)。 2. 用 ipconfig /release 釋放 IP,觀察 IP 變化,再用 ipconfig /renew 重新取得。 3. 用 ping -t 8.8.8.8 持續 ping,同時拔掉網路線,觀察什麼時候開始 timeout,插回去後多久恢復。


四、今日練習

Q1. 你的同事說「網路不通」,你拿到他的電腦後,第一個會下什麼指令?為什麼? Q2. ping 8.8.8.8 通但 ping www.google.com 不通,問題出在哪?你會下什麼指令驗證? Q3. tracert 顯示第 3 跳之後全部 * * *,代表什麼?

參考解答 **A1.** 第一個會下 `ipconfig /all`。 **理由**:ipconfig /all 可以一次看到最多的網路資訊:IP 位址(是否為 169.254 → DHCP 問題)、子網路遮罩、預設閘道(是否有值)、DNS 伺服器(是否正確)、DHCP 是否啟用、MAC 位址。這些資訊可以立刻排除一大半可能的問題。例如看到 169.254 就知道是 DHCP 問題,看到閘道是空的就知道是 IP 設定問題。 **A2.** 問題出在 **DNS 解析**。ping 8.8.8.8 通代表網路連線到 L3 都正常,但無法把網址轉成 IP = DNS 問題。 驗證指令: 1. `nslookup www.google.com` → 看 DNS 伺服器是否能回應 2. `nslookup www.google.com 8.8.8.8` → 用公用 DNS 測試,如果這個通代表是自己設定的 DNS 有問題 3. `ipconfig /all` → 確認設定的 DNS 伺服器位址是否正確 4. `ipconfig /flushdns` → 清除 DNS 快取後重試 **A3.** 代表封包在第 3 跳之後的某個節點被阻擋或該節點之後的路由有問題。可能的原因: - 第 3 跳的路由器之後的線路斷了 - 中間某個防火牆擋掉了 tracert 使用的 ICMP/UDP 封包 - ISP 的路由設備有問題 **判斷方式**:如果 ping 8.8.8.8 是通的但 tracert 中間有 * * *,通常只是中間的路由器不回應 ICMP,不是真的斷了。如果 ping 也不通,才是真的在那裡斷了。

五、今日檢核

  • [ ] 我跑過全部 9 個指令
  • [ ] 我看得懂每個輸出的重點
  • [ ] 我能說出每個指令驗證什麼
  • [ ] 我做了至少一個進階實驗

六、延伸閱讀建議

資源 說明
YouTube: NetworkChuck「ping tracert nslookup」 網路指令實作教學(英文有字幕)
YouTube: Professor Messer「Network Troubleshooting」 CompTIA Network+ 的故障排除指令教學
YouTube: 鳥哥的 Linux 私房菜 Linux 網路指令教學(中文)
SS64 Command Line Reference Windows/Linux 指令完整參考
YouTube: David Bombal「Wireshark」 進階:用 Wireshark 抓封包分析(英文)

⬅️ 上一天:Day 4 | 🏠 本週總覽 | ➡️ 下一天:Day 6 — 故障排除 SOP 演練