路由器防火牆怎麼設:實測 SPI 與 DoS 防護的實際效果
在實測之前,先界定我們到底在防什麼。以一般家庭網路來看,實際會遇到威脅大致有三類:
第一類:針對路由器的直接掃描與探測。 公網上隨時都有自動化掃描器在找尋開放 Port 的路由器,特別是 80、443、8080、22、23 這些管理介面常用的埠。一旦找到未改預設密碼的設備,就可能被植入殭屍網路程式,成為 DDoS 攻擊的跳板。這一類威脅與 SPI 的關係最直接。
第二類:資源耗盡型攻擊(DoS)。 攻擊者不需要破解任何密碼,只要送出大量看似正常但不完整的連線請求,就能把路由器的連線追蹤表(connection tracking table)或 CPU 佔滿。這在小型路由器上尤其明顯,因為它們的記憶體與 CPU 本來就吃緊。
第三類:內網橫向移動。 一旦家中某一台裝置(例如老舊的網路攝影機、智慧家電)被攻破,攻擊者會嘗試在內網掃描其他裝置。這一層其實不是 SPI 的守備範圍,需要靠網段隔離(VLAN/訪客網路)來處理,後面會再提到。
二、SPI 狀態封包檢測是什麼?關閉與開啟的封包差異實測
SPI(Stateful Packet Inspection,狀態封包檢測)的核心概念是:防火牆會「記住」每一條連線的狀態,只有符合狀態機邏輯的封包才允許通過。它不像早期的靜態封包過濾只看「來源 IP/目的 IP/Port」的規則表,而是會維護一張連線狀態表,記錄每一條連線目前處於 SYN_SENT、ESTABLISHED、FIN_WAIT 等哪個階段。
具體來說,當內部電腦對外发起 TCP 連線時:
電腦送出 SYN 封包,路由器建立一筆狀態記錄,狀態標記為「等待回應」。
外部伺服器回傳 SYN-ACK,路由器核對序號與埠號後,將狀態改為「已建立」,並放行。
之後這條連線上的所有封包都直接比對狀態表放行,不需要逐包重新檢查規則。
連線結束(FIN 或 RST)後,狀態記錄會保留一小段時間(通常數十秒到數分鐘)再清除。
關鍵在於:如果外部主動送來一個不屬於任何既有連線的封包,SPI 會直接丟棄,即使那個封包的埠號看起來像是「應該要開的」。這就是它與靜態規則最大的差別。
測試平台與工具準備
本次實測使用一台中階家用路由器(BCM 四核心、512MB RAM、原廠韌體),對外採用 PPPoE 連線、取得實體公網 IP,對內網段為 192.168.50.0/24。測試端點如下:
測試項目分為三組:A 組關閉 SPI、B 組開啟 SPI(預設設定)、C 組開啟 SPI 並自訂規則。每組重複三次取中位數。
SPI 開啟與關閉的封包差異實測
第一個測試是「外部主動連線」。從 VPS 對路由器的公網 IP 發送 TCP SYN 到 8080 埠,同時在路由器後方開一台虛擬機監聽 8080。
A 組(SPI 關閉): 由於路由器有開 Port Forwarding 規則把 8080 轉到內網主機,外部 SYN 被封包轉送進去,內網主機回覆 SYN-ACK。但測試中發現一個現象:即使沒有 Port Forwarding 規則,部分封包仍然能觸發路由器回應 RST 或 ICMP Port Unreachable,等於對外「洩漏了這台裝置存在」的資訊。
B 組(SPI 開啟): 沒有對應狀態記錄的 SYN 封包被直接丟棄,外部掃描器得到的結果是「封包被過濾(filtered)」,而非「埠關閉(closed)」。這個差異在防禦上很重要——攻擊者無法判斷該 IP 後面是否有主機,掃描效率大幅下降。
第二個測試是「序號偽造」。用 Scapy 從外部偽造一個看似屬於既有連線的 ACK 封包送入。A 組情況下,路由器因為沒有狀態檢查,會直接放行給內網主機;B 組則因序號與狀態表不符而丟棄。這正是 SPI 阻止「TCP 會話劫持」與「ACK 掃描」的機制。
第三個測試是「連線追蹤表容量」。用 hping3 從外部對不同埠號連續發送 SYN,觀察路由器狀態表的增長與正常連線的影響:
這個數據帶出一個重點:SPI 本身會消耗資源,而家用路由器的狀態表上限通常不大。因此 SPI 該開,但如果你家常住裝置超過三、四十台(例如大量 IoT 設備),就要注意狀態表耗盡的問題,這時需要調整閒置逾時(TCP Established Timeout)或改用較高階的機種。
至於吞吐量影響,實測在 Gigabit 區網環境下,SPI 開啟與關閉的 iperf3 結果分別為 941 Mbps 與 948 Mbps,差異不到 1%,對一般寬頻(300M~1G)來說完全可以忽略。網路上常說「開防火牆會掉速」,在中高階機種上已經是過時的說法;真正造成掉速的通常是 QoS、流量分析或防毒掃描等加值功能。
三、DoS 防護實測:SYN Flood、Ping of Death 與 UDP 洪泛
路由器後台的「DoS 防護」其實是一組功能的統稱,各家實作不同,但常見的項目包括:SYN Flood 防護、ICMP Flood 防護、UDP Flood 防護、Ping of Death 防護、IP 碎片攻擊防護,以及 Port Scan 偵測。這些功能的共同點是——它們保護的是路由器自己,而不是你的電腦。很多人以為開了之後電腦就不會被攻擊,這是很大的誤解。
SYN Flood 實測數據
SYN Flood 的原理是:攻擊者大量發送 SYN 封包但不完成三次握手,讓目標主機的「半開連線佇列」被塞滿,無法再接受正常連線。測試時從 VPS 以 hping3 對路由器公網 IP 發送 SYN,速率設定為每秒 20,000 個封包,持續 60 秒,同時從內網測試機持續對外建立 HTTP 連線,記錄成功率與延遲。
DoS 防護關閉: 約在第 8 秒開始,內網測試機對外連線成功率從 100% 掉到 43%,平均延遲從 18ms 暴增到 3,200ms;第 25 秒後完全無法建立新連線,路由器管理頁面也幾乎打不開。這是因為路由器的 CPU 忙於處理大量 SYN 封包,加上狀態表被半開連線佔滿。
DoS 防護開啟(Syn Flood Protection 開啟,閾值採預設): 路由器在偵測到來源 IP 的 SYN 速率超過閾值後,啟動「SYN Cookie」機制——不立即為每個 SYN 配置資源,而是回傳一個經過雜湊計算的 SYN-ACK,只有當對方完成最後的 ACK 時才真正建立連線。實測結果:內網測試機的對外連線成功率維持在 96~99%,平均延遲約 45ms,僅在攻擊初期有短暫波動。
值得注意的是,開啟防護後路由器管理頁面仍然可以正常登入,這表示 CPU 負載已被有效控制。從後台「DoS 攻擊記錄」可以看到來源 IP、攻擊類型與觸發次數,這也是判斷是否遭到持續攻擊的重要依據。
ICMP 與 UDP 洪泛的實際表現,以及防護的副作用
Ping of Death 是早期針對 ICMP 封包大小的攻擊手法(送出超過 65,535 位元組的片段),現代路由器幾乎都已免疫,實測中即使關閉防護也無法造成重啟或崩潰。但如果你的路由器是十年前的機種,這個選項還是建議開啟。
ICMP Flood 的測試結果與 SYN Flood 類似:關閉防護時,每秒 10,000 個 ping 封包會讓路由器 CPU 使用率衝到 95% 以上;開啟防護後,超過閾值的 ICMP 會被丟棄,CPU 維持在 30% 左右。
UDP Flood 則比較麻煩。UDP 是無連線協定,沒有握手過程可以驗證,而且許多正當應用(DNS、VoIP、線上遊戲、影音串流)都依賴大量 UDP 封包。實測中發現一個明顯的副作用:當 UDP Flood 防護的閾值設得太低(例如每秒 500 個封包),某些線上遊戲會出現隨機斷線,語音通話也會出現破音。這是因為防護機制無法區分「攻擊」與「正常的大量 UDP」。
另一個常見副作用是 ICMP 防護。如果你有使用「ping 來測試連線」的習慣,或是某些遠端監控服務依賴 ping 來判斷主機存活,開啟「忽略來自 WAN 的 Ping」之後這些功能就會失效。這不是故障,而是設定上的取捨。
還有一個容易被忽略的點:DoS 防護記錄本身會占用資源。如果攻擊來自大量不同的來源 IP,記錄檔會快速膨脹,部分路由器的記錄功能在短時間內寫入大量資料時,反而會拖慢系統。建議定期清除記錄,或只保留摘要統計。
四、路由器防火牆設定的實務建議:從清單到調校
看完實測數據,接著把結論轉換成可執行的設定步驟。以下按照「一般使用者」與「進階使用者」分流,你可以依自己的需求選擇。
一般家庭使用者的設定清單
如果你不想研究太多細節,只要照著以下順序設定,就能達到九成以上的防護效果:
進階使用者的調校方向
如果你對網路有一定理解,以下幾個方向可以進一步強化:
一、調整連線追蹤逾時。 在部分可刷機的韌體(如 OpenWrt、FreshTomato)中,可以調整 nf_conntrack_tcp_timeout_established 等參數,把已建立連線的閒置逾時從預設的 5 天縮短到數小時,能有效釋放狀態表空間,降低被 SYN Flood 耗盡的風險。
二、建立明確的防火牆規則順序。 防火牆規則是「由上而下、首條符合即生效」。建議順序為:允許已建立的連線(ESTABLISHED,RELATED)→ 允許必要的內部服務 → 丟棄其餘所有來自 WAN 的封包。多數家用路由器的 SPI 已經幫你做了第一條,但自訂規則時仍要注意順序。
三、限制管理介面的來源 IP。 如果你的路由器支援「只允許特定 IP 存取管理介面」,把範圍限制在內網網段,即使在區網內也能多一層保護。
四、開啟記錄並定期檢視。 至少每週看一次 DoS 攻擊記錄與系統日誌,觀察是否有異常的來源 IP 或攻擊模式。若某個 IP 持續攻擊,可以在防火牆規則中直接封鎖。
五、考慮網段隔離。 若路由器支援 VLAN,把 IoT 裝置、辦公電腦、訪客裝置分到不同 VLAN,並在 VLAN 之間設定防火牆規則。這是防禦內網橫向移動最有效的方式,但需要一定的網路知識。
常見迷思與錯誤設定
最後整理幾個實測過程中反覆遇到的錯誤觀念:
迷思一:「開了防火牆就會影響網速。」 實測顯示在高階機種上影響低於 1%,在中階機種上也多在 3% 以內。真正影響網速的是 QoS、流量分析、即時防毒等功能,而非 SPI 本身。如果你覺得開了防火牆後變慢,先檢查是否有其他加值功能被連帶開啟。
迷思二:「DoS 防護開了,我的電腦就安全了。」 錯。路由器的 DoS 防護只保護路由器本身。你電腦的防毒、防火牆、系統更新才是保護電腦的關鍵。兩者不能互相取代。
迷思三:「把 DMZ 打開比較方便,反正我有防火牆。」 DMZ 的定義就是把某台主機完全暴露在公網,等於繞過所有 NAT 與防火牆保護。除非你在該主機上另有完整的防護措施,否則不建議使用。
迷思四:「防火牆規則開越多越安全。」 過多且不明確的規則反而容易產生衝突與疏漏。建議遵循「預設拒絕、最小開放」原則:只開真正需要的 Port,其餘一律封鎖。
迷思五:「UPnP 很方便,開著沒關係。」 UPnP 讓應用程式可以自動要求路由器開 Port,這對便利性有幫助,但同時也讓惡意程式有機會自行打通對外通道。建議需要時再開,平時關閉。
五、結語:把防火牆當成「持續的習慣」,而不是一次性的開關
回到最初的問題:SPI 與 DoS 防護該不該開?從實測數據來看,答案很清楚——SPI 應該保持開啟,它在阻擋外部掃描、防禦會話劫持上的效果顯著,而對效能的影響微乎其微;DoS 防護也建議開啟,但要把閾值與細項設定調整到適合自己網路環境的程度,並且理解它的保護範圍僅限於路由器本身。
不過,設定完這兩個開關並不代表「網路安全任務完成」。路由器防火牆只是整個家庭網路安全的第一道門,後面還有裝置更新、密碼管理、網段隔離、備份習慣等環節。真正有效的防護,是把這些動作變成日常習慣:定期更新韌體、定期檢視日誌、不隨意開啟遠端管理、不用預設密碼。
如果你家的路由器已經用了五、六年以上,而且原廠早已停止更新韌體,那麼與其花時間研究怎麼設定防火牆,不如直接換一台支援長期更新的機種——這往往是最划算的安全投資。畢竟,一個沒有修補漏洞的防火牆,即使開著,能提供的保護也相當有限。
希望這篇實測與設定整理,能讓你在下次打開路由器後台時,不再只是「看不懂就保持預設」,而是清楚知道每一個選項背後的意義與取捨。
```
💬 想說點什麼?
歡迎到留言板分享你的想法、心得或疑問。
💬 前往留言板 →