預設路由(default route)
想像一間小郵局,它確切知道怎麼把郵件送到附近少數幾個城鎮,但對於寄往更遠處的任何東西,它就乾脆把信交給區域分揀中心,並信任它去搞定其餘的部分。預設路由(default route)就是路由器裡那條『其餘一切都往這走』的規則:一個包羅一切的條目,用於任何沒被更明確路由匹配到的目的地。
技術上,預設路由在 IPv4 寫作前綴 0.0.0.0/0(在 IPv6 則是 ::/0),這是一個有效位元為零的前綴,所以它能匹配每一個可能的位址。路由器以最長前綴匹配來選轉送條目——最明確的匹配前綴勝出——而既然 0.0.0.0/0 是所有前綴中最不明確的,它就只在沒有任何更明確的匹配時才被使用。舉例來說,一台家用路由器通常只握有本地網路的路由外加一條指向 ISP 的預設路由:『任何不在我區域網路上的,都送給 ISP』。
這件事重要,是因為它讓邊緣裝置與末端網路得以保持極小。你的筆電與家用路由器不需要一份網際網路完整路由表的副本;它們只需要自己的本地路由,外加一條指向某個知道更多的人的預設路由。這條單一條目正是『設定你的預設閘道』所指的東西,也是網路葉端部分路由的骨幹。
一個誠實的提醒:預設路由是一種信任的宣告,而非知識——它說的是『我不知道這往哪去,但我的上游知道』。它在邊緣運作得很漂亮,但在網際網路的核心毫無意義:無預設區(default-free zone)裡的路由器承載完整的路由表,正是因為那裡沒有更大的上游可以推託。此外,設定錯誤的預設路由會無聲地把流量丟進黑洞,因為路由器會盡責地把未匹配的封包轉送給一個可能哪都到不了的下一跳。
一台家用路由器的表:『192.168.1.0/24 -> 本地區域網路』與『0.0.0.0/0 -> 203.0.113.1(ISP)』。一個送往 192.168.1.50 的封包匹配到區域網路條目;一個送往 8.8.8.8 的封包沒有匹配到任何明確條目,於是落到指向 ISP 的預設路由。
0.0.0.0/0 能匹配一切,卻最不明確,所以最長前綴匹配只把它當成最後手段使用。
預設路由能運作,是因為在最長前綴匹配下它是最不明確的前綴。核心網際網路路由器(無預設區)沒有預設路由——它們改而承載完整的路由表。