電腦網路與 Internet 通訊

單元 07 一個介面、多個位址與來源選擇

學習目標與問題

先讀 04 的 CIDR 與下一跳、05 的 MAC 與 ARP。本單元用兩個閘道說明位址不等於出口,而且只用一張 main 表。完成後應能預測指定與未指定來源時的來源、匹配前綴與下一跳,寫出回程的可達條件,並區分來源偏好與 SNAT。SNAT 見 16,依規則選表的政策路由見 17。

問題:一張網卡同時持有兩個 IP,應用指定第二個 IP 後,是否一定走第二個閘道?

7.1 一個介面不只一個位址

介面是收送封包的邊界;IP 位址是三層識別。Linux 可對同一介面加入多個位址,無須建立另一張網卡;舊式「IP alias」名稱或 label 不會自動產生獨立鏈路。兩個位址可屬同一子網或不同子網,但新增位址本身不會建立 VLAN 隔離。

以下文件用位址只在隔離實驗中使用。H 的 eth0、G1、G2 都接同一個交換器/VLAN,G1 與 G2 各有自己的遠端網路。

節點位址角色
H eth0192.0.2.10/24、198.51.100.10/24一個介面、兩個來源候選(下稱來源 1、2)
G1192.0.2.1/24預設出口 1
G2198.51.100.1/24希望來源 2 使用的出口
S203.0.113.80範例遠端目的;兩條路徑均可達的假設
一張介面上的兩個來源,只查 main 表
一張介面上的兩個來源,只查 main 表

兩個不同 IP 子網共用同一個廣播域是可行拓樸;它們仍共用二層廣播,不能達成訪客隔離。若 eth0.10 與 eth0.20 是 802.1Q 子介面,則另有 VLAN 標記與交換器設定,不能與「同 eth0 加兩個位址」混為一談。

新增一般前綴位址時,Linux 通常會建立相應直連前綴路由,並記錄為本機位址(表的機制見 17);noprefixroute 等選項及網路管理程式會影響結果。要看實際表,不靠位址清單猜測。

7.2 三個決策分開回答

bind 是應用指定本機來源位址的動作,細節見 09。

決策例子不代表什麼
應用來源bind 198.51.100.10不自動指定 G2
表內路由default via G1 dev eth0不會改寫來源位址
鏈路交付ARP 取得 G1 的 MAC不保證 G1 有回程或服務可用

Linux 路由的 src 欄位是偏好來源,適用於尚未固定來源的本機發送;它不是 SNAT,不能把已綁定來源或轉送封包一律改成該位址。SNAT 需另讀 16,並記錄改寫前後四元組。

若只有 main 表預設經 G1,應用即使 bind 來源 2,也可能以來源 2、下一跳 G1 送出;G1 及遠端必須知道如何回到來源 2。來源位址與下一跳不是依序排列的一對一配對。

未綁定來源的新連線,初始查表時可能尚未有具體來源可匹配。本例普通未指定來源的查表走 main/G1,再取該路由偏好的來源 1。規則選表見 17。

7.3 main 表的最長前綴匹配

H 的 main 表如下,所有路由皆走 eth0。

前綴下一跳偏好來源
192.0.2.0/24on-link192.0.2.10
198.51.100.0/24on-link198.51.100.10
0.0.0.0/0192.0.2.1192.0.2.10

目的 198.51.100.55 匹配 /24,直接 ARP .55;目的 S 匹配 /0,ARP G1。指定來源 2 並不改變此表的目的查找。若下一跳不在可達鏈路上,不能任意加 onlink 來掩蓋拓樸錯誤;須確認實際鄰居解析可行。

7.4 回程的可達條件

正向正確只是一半。本例經 G1 送出時,G1 與遠端須能把回覆送回來源 2,例如 G1 要有通往 198.51.100.0/24 的路由。狀態檢查與回覆來源見 16、17。

實驗、習題與檢核

做 L15 階段一:先預測,再以 python3 labs/lan_models.py L15 --stage 1 核對兩案,即來源 2 與未指定來源送往 203.0.113.80;只記預測、來源、prefix、next_hop、dev 與模型限制,並回答手冊的階段一判讀,本階段在此提交。其餘七案與 priority、table、trace 屬階段二,讀完 17 再做。必修離線路線不改主機設定;本例未作 Linux 實測,預期輸出須與實測紀錄分開。

  1. 基本:兩個 IP 同 eth0、同 VLAN,為何不等於兩個隔離 LAN?
  2. 分析:僅有 main 表時,bind 來源 2 到 S 會用哪個閘道?還需哪項回程條件?
  3. 基本:main 表預設路由的 src 是來源 1;應用已 bind 來源 2 時,src 能否把它改寫成來源 1?
  4. 基本:應用未指定來源,分別送往 198.51.100.55 與 192.0.2.77。依 7.3 的 main 表,各匹配哪個前綴、選出哪個來源、下一跳是誰?

檢核:能在同一筆紀錄分別寫來源、匹配前綴、下一跳、介面及回程條件;能說明哪些只是模型。

來源(查閱 2026-10-06):ip-address、ip-route。命令以 Linux/iproute2 語義編寫;本文拓樸與題目為獨立設計。