同一子網路中的兩個網路卡--需要設定路由

同一子網路中的兩個網路卡--需要設定路由

我有一個棘手的案例:

+---+                      +----+
|D1 +->eth0---------<-eth0-+D2  |
|   |                      |    |
|   +->eth1---------<-eth1-+    |
+---+                      +----+

在 D2 上eth0並且eth1具有來自相同子網路的 IP 位址:eth0 10.1.1.1/24, eth1 10.1.1.2/24。 D1 上的介面沒有分配位址,它的作用類似交換器。

現在,我希望 D2 能夠將流量傳送到10.1.1.2via eth0,因此封包路徑必須是:D2(eth0)--D1(eth0)--D1(eth1)--D2(eth1)。

當我10.1.1.2從 D2 ping 時,它在本地發送資料包,即 D1 沒有收到任何資料包。我應該在 D2 上更改哪些內容才能實現所需的行為?

謝謝。

答案1

你想要的東西在 Linux 下是不可能實現的。至少不在路由層內。如果目標位址屬於本機接口,則封包始終透過環回接口,從該接口無法(透過 RfC)路由到外部。

我認為可能可以使用目標iptables並將DNAT其更改為子網路中未使用的位址,並使用ip neigh靜態將 MAC 位址設定為另一個 NIC 之一,但甚至不DNAT匹配到本機位址的封包的規則。

可以使用虛擬機器或網路命名空間,這樣核心就看不到10.1.1.1on eth0。但是您需要代理 ARP 和 DNAT 將傳入資料包從實體介面移至虛擬介面。

如果值得這麼努力嗎?

答案2

網路命名空間可能是一種選擇。它們本質上是網路堆疊的獨立實例,因此它們至少在理論上應該能夠分離兩個介面。

上次我嘗試和它們一起玩,但我無法讓它們正常工作。

相關內容