修復工具
在 SimNet 的 網路修復(Network Repair) 類別中,網路一開始就是壞的——路由缺了一條、DNS 伺服器沒開機、IP 位址設錯了。你的任務是像個網路工程師一樣,找出問題、修好它、讓資料順利流通。
這就像你接手了一台剛買的二手車,發動之後才發現煞車線斷了、GPS 亂導航、輪胎壓力不對。你得一個一個排除。
路由管理 — 修復封包迷路問題
什麼時候用?
當你 ping 一台設備,得到 destination unreachable(目的地不可達)或完全沒回應時,很可能是 Router 上缺少通往目標網路的路由。封包到了路由器,路由器翻了翻路由表,發現沒有這條路,就只好把封包丟掉——就像 GPS 上找不到目的地。
指令
查看路由表:
simnet@router1:~$ ip route
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1如果你期望 Router 能到達 10.0.1.0/24 這個子網路,但路由表裡沒有,那就是問題所在。
新增路由:
simnet@router1:~$ ip route add 10.0.1.0/24 dev eth1
Route added: 10.0.1.0/24 dev eth1這告訴 Router:「要去 10.0.1.0/24 這個網段的話,從 eth1 介面送出去。」
也可以透過另一台路由器轉送:
simnet@router1:~$ ip route add 172.16.0.0/24 via 10.0.0.2
Route added: 172.16.0.0/24 via 10.0.0.2via 表示「經由」——封包先送到 10.0.0.2,再由那台設備繼續轉發。
診斷流程
- 在 PC 上
ping目標 → 失敗 - SSH 到 Router →
ip route檢查路由表 - 找出缺少的路由 →
ip route add新增 - 退回 PC → 再
ping一次確認
怎麼知道該加什麼路由?
看拓撲圖。如果 Server 的 IP 是 10.0.1.3,它所在的子網路就是 10.0.1.0/24。找到 Router 上連到那個子網路的介面(例如 eth1),路由就是 ip route add 10.0.1.0/24 dev eth1。
相關挑戰
範本內無內附 Network Repair 範例挑戰;下游採用本模板的專案可依 挑戰範例首頁 的 quickstart 自行新增。
DNS 服務管理 — 修復域名查詢故障
什麼時候用?
當你 curl http://flag.simnet.local/flag 失敗,錯誤訊息是 DNS 相關的(例如 Could not resolve host),表示 DNS 伺服器出問題了。常見原因:DNS 服務沒有啟動,或是 A Record(域名對應的 IP 記錄)不存在。
DNS 就像網路世界的電話簿——如果電話簿服務關門了,你就算知道朋友的名字也打不了電話。
指令
檢查 DNS 服務狀態:
simnet@dns-server:~$ systemctl status dns
● dns.service - DNS Server
Loaded: loaded
Active: inactive (dead)inactive (dead) 表示服務沒有在跑。
啟動 DNS 服務:
simnet@dns-server:~$ systemctl start dns
● dns.service - DNS Server
Active: active (running)或者用簡化版:
simnet@dns-server:~$ service dns start
Starting DNS server... OK停止服務(如果需要重啟):
simnet@dns-server:~$ systemctl stop dns
simnet@dns-server:~$ systemctl start dns診斷流程
- 在 PC 上
nslookup flag.simnet.local→ 查不到 - SSH 到 DNS Server →
systemctl status dns檢查狀態 - 如果服務沒跑 →
systemctl start dns啟動 - 退回 PC → 再
nslookup確認能解析了 - 用
curl取得 Flag
相關挑戰
範本內無內附 Network Repair 範例挑戰;下游可自行新增。
IP 設定 — 修復位址錯誤
什麼時候用?
當一台設備的 IP 位址設定錯誤——例如 Server 本來應該在 10.0.1.0/24 這個子網路,但 IP 卻被設成 10.0.2.100——那其他設備就算路由正確,封包到了那個子網路也找不到這台 Server。
就像你的地址登記錯了,快遞員跑到正確的社區,卻找不到你家門牌。
指令
查看目前的 IP 設定:
simnet@server1:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP>
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
link/ether aa:bb:cc:00:03:00
inet 10.0.2.100/24 scope global eth0如果拓撲圖顯示 Server 應該在 10.0.1.0/24 子網路,但這裡顯示 10.0.2.100/24,那 IP 就是錯的。
修改 IP 位址:
simnet@server1:~$ ip addr set 10.0.1.3/24 dev eth0
IP address updated: eth0 → 10.0.1.3/24診斷流程
- 看拓撲圖,確認每台設備「應該」有什麼 IP
- SSH 到可疑的設備 →
ip addr檢查實際設定 - 如果 IP 不對 →
ip addr set修正 - 回 PC 測試連通性
相關挑戰
範本內無內附 IP 設定錯誤的範例挑戰;下游可自行新增。
服務管理 — 重啟故障服務
什麼時候用?
Server 上跑著各種服務(HTTP Server、DNS Server 等),如果服務掛了或是設定檔不正確,你就算能連到 Server,也得不到你要的回應。
就像餐廳的廚房著火了——餐廳大門開著、客人坐著、服務生在場,但就是沒有菜出來。
指令
查看服務狀態:
simnet@web-server:~$ systemctl status http
● http.service - HTTP Server
Active: active (running)
Listening: 0.0.0.0:80simnet@web-server:~$ systemctl status http
● http.service - HTTP Server
Active: failed (exit code: 1)啟動 / 停止 / 重啟服務:
simnet@web-server:~$ systemctl start http # 啟動
simnet@web-server:~$ systemctl stop http # 停止
simnet@web-server:~$ systemctl start http # 停了再開 = 重啟簡化版:
simnet@web-server:~$ service http start
simnet@web-server:~$ service http stop查看設定檔:
simnet@web-server:~$ cat /etc/nginx/nginx.conf如果設定檔指向錯誤的目錄或監聽錯誤的通訊埠,那就算服務在跑,也不會正常工作。
診斷流程
- 在 PC 上
curl或nslookup→ 失敗 - SSH 到 Server →
systemctl status <service>看狀態 - 如果服務沒跑 →
systemctl start <service> - 如果服務跑了但不正常 →
cat設定檔看看有沒有問題 - 修好後退回 PC 驗證
相關挑戰
範本內無內附服務管理範例挑戰;下游可自行新增。
修復工作流程總覽
面對一個壞掉的網路,建議按照這個順序排查:
1. 從 PC ping 目標
├─ 連通 → 問題可能不在網路層,檢查應用層服務
└─ 不通 → 繼續往下查
│
2. 檢查 PC 自己的設定
└─ ip addr → IP 正確嗎?
└─ ip route → 有 default route 嗎?
│
3. SSH 到 Router 檢查
└─ ip route → 有沒有通往目標的路由?
└─ show interfaces → 介面有 UP 嗎?
│
4. SSH 到目標 Server 檢查
└─ ip addr → IP 正確嗎?
└─ systemctl status → 服務有在跑嗎?這個由近到遠的排查方法,在真實的網路管理中也是標準做法——先確認自己沒問題,再檢查中間的路由,最後看目的地。
速查表
| 工具 | 指令 | 在哪台設備上用 | 修復什麼 |
|---|---|---|---|
| 查看路由 | ip route | Router | 確認路由表是否完整 |
| 新增路由 | ip route add <net> dev <iface> | Router | 修復封包無法到達的子網路 |
| 查看服務 | systemctl status <svc> | Server | 確認服務是否在跑 |
| 啟動服務 | systemctl start <svc> | Server | 重啟故障的服務 |
| 查看 IP | ip addr | 任何設備 | 確認 IP 設定是否正確 |
| 修改 IP | ip addr set <ip>/<mask> dev <iface> | 目標設備 | 修正錯誤的 IP 位址 |
| 查看設定 | cat <config-file> | Server | 檢查服務設定檔 |