Linux
預設路由不在 LAN
我有一個原則上看起來像這樣的網路:
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
。