Linux

預設路由不在 LAN

  • October 14, 2012

我有一個原則上看起來像這樣的網路:

H1---\           /----Inet1
H2---->---GW1---<
H3---/           \----GW2-----Inet2
  • H1 和 H2 = 需要通過 GW1 訪問 Internet 的主機
  • Inet1 = 通過 3G 連接的 Internet 連結
  • Inet2 = 5GHz 連結到 Internet(並不總是打開)
  • GW1 = 作為路由器工作,自動選擇 Inet1 和 Inet2 之間的“最佳”連接(後者通過 GW2)。
  • GW2 = 5GHz 無線路由器

這就是問題所在: H3 僅在 Inet2 啟動時才需要訪問 Internet。我想做的是一個看起來像這樣的路由表:

  • 通過 GW1 路由到 GW2
  • 預設路由是通過 GW2

我首先通過 GW1 設置到 GW2 的路由沒有問題。但是當我嘗試

路由添加預設gw 1.2.3.4

(1.2.3.4 是 GW2 的 IP),它抱怨“SIOCADDRT:沒有這樣的設備”是我嘗試設置的預設 gw 無法直接訪問的問題嗎?是否有不同的方法可以讓我實現這一目標?

**另一種(和假設的)方法:**由於 H3 將使用靜態 IP,是否有可能使用 GW1 上的 iptables 來將任何數據包從 H3 轉發到 GW3,從而“欺騙”H3 使用 GW2 作為其預設路由器?

PS:這個問題是這個問題的後續問題。

您的替代方法可以通過使用基於策略的路由來實現。類似於(命令應在 GW1 上執行):

# Create rule for matching the source address in route table 999
ip rule add from 1.2.3.4/32 table 999
# Add default router to the table
ip route add default via <GW2> table 999

我無法測試這些命令,但它們應該是正確的。表 999 中的路由規則在正常情況下是不可見的$ ip route show- 您需要附加表 id: $ ip route show table 999

引用自:https://serverfault.com/questions/435772