
我有以下路由表
10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.151
10.0.10.0/24 dev eth1 proto kernel scope link src 10.0.10.151
default via 10.0.1.1 dev eth0
我有兩條鏈路,一條透過 LAN,一條透過 10.0.1.1 連接到 Internet。另一個是直接連接到 eth1 的 ADSL 路由器 (10.0.10.1)。
如果我從外部連接到外部 IP 位址 10.0.10.1,則會出現逾時。如果我將預設路由更改為 10.0.10.1,則可以從外部連接到外部 IP 位址 10.0.10.1。所以這看起來像是路由問題(資料包來自 10.0.10.1,但從 10.0.1.1 出去,是預設路由),但我不知道如何解決它。
我實際上希望預設路由為10.0.1.1,我只想透過同一介面應答對10.0.10.1外部IP的請求。
答案1
您需要使用 iproute2 提供的進階路由表。您設定了 2 個表,並將來自某個 ip 的所有流量傳送到特定表,在該表中您可以設定預設閘道。要設定全域預設路由,您只需透過指標更喜歡一個介面而不是其他介面。
一個例子:
- 將預設網關新增至表中:
ip 路由透過 10.0.1.1 表 101 新增預設值
透過 10.0.10.1 表 102 新增預設 ip 路由
- 新增一條規則,將來自特定 ip 的每個流量傳送到表中:
ip 規則從 10.0.1.151 找出 101 加
ip 規則從 10.0.10.151 找出 102 加
- 新增首選網關的指標:
ip 路由透過 10.0.1.151 新增預設度量 1000
ip 路由透過 10.0.10.151 新增預設度量 2000
我希望這有助於您入門:)