Networking
網關必須在子網上嗎?
我正在考慮在 /etc/network/interfaces (這是在 debian 上)中提出這樣的介面,網關在子網之外:
iface eth0 inet static address 10.100.10.99 netmask 255.255.255.0 gateway 10.100.0.1
但是“ifup –verbose eth0”只給了我這個錯誤資訊:
ifconfig eth0 10.100.10.99 netmask 255.255.255.0 route add default gw 10.100.0.1 eth0 SIOCADDRT: No such process Failed to bring up eth0
當然,將網路遮罩更改為 255.255.0.0 就可以了。
這甚至可能嗎,還是有其他問題?有沒有辦法從 ifup 中獲取更多資訊?我在網際網路上看到一篇文章表明它應該可以工作。
解決這個問題的另一種方法是:如果您無法訪問本地網路上的預設網關路由器,您如何通過它發送數據包?您必須通過另一個路由器發送它們。
對於一些背景知識,請記住 IP 數據包通常包含源地址和目標地址:它來自哪裡,以及它想去哪裡。通常由路由器決定它如何到達那裡。
因此,當您通過離線預設網關路由器發送 IP 數據包時,需要發生兩件事之一。
- 本地網路路由器知道如何到達預設網關路由器,並且它同意您的想法,即您的數據包應通過預設網關路由器發送以到達其目的地。在這種情況下,為什麼不直接使用本地網路路由器作為預設網關呢?
- 本地網路路由器認為(預設情況下)您的數據包應通過其他路由器發送以到達其目的地。在這種情況下,你必須有一些方法來告訴它。這種能力是存在的,被稱為“源路由”……但它被認為是一種安全風險,大多數路由器都被配置為忽略它。
最後,根據我的經驗,
ip
如果無法通過本地網路介面直接訪問網關,Linux iproute() 工具將不允許您添加路由。幾個源路由參考: