Linux

Debian:在同一個 NIC 上,網橋加上不同的 IP 地址,具有不同的 MAC

  • February 19, 2021

Debian 主機。我有一個應該位於兩個網路上的 NIC;172.16.0.0/2410.0.80.0/24。_

  • 172.16.0.0/24網路上,應該有一個網橋,以便本地 KVM 主機可以連接到它;主機應該在172.16.0.99.
  • 10.0.80.0/24網路上,不需要網橋,機器應該在10.0.80.99.

一個便宜的 D-Link 交換機連接到該 NIC;它可能會被與同一個 MAC 關聯的多個 IP 地址混淆。

我嘗試過給 NIC 起別名(例如添加設備enp1s0:0),給網橋起別名(例如vmbr0:0相同的 NIC、網橋別名、MAC 地址修改)。

作為參考,這是橋的設置;如何將10.0.80.99地址添加到同一個 NIC,最好為其強制使用不同的 MAC 地址?

iface enp1s0   inet manual

auto  vmbr0
iface vmbr0 inet static
       address      172.16.0.99/24
       gateway      172.16.0.1
       bridge_ports enp1s0
       bridge_stp   off
       bridge_fd    0

你的擔心是錯誤的。

在 IP 網路中,有多個 IP 地址與同一個 MAC 相關聯是非常典型的,儘管交換機不會為此煩惱。我的意思是,來自路由器後面網路的任何地址都只能與路由器 MAC 相關聯。在代理 ARP 的情況下也會發生同樣的情況(這是一種“黑客路由”);再一次,一切正常,如果出現問題,它們與開關無關。

便宜的 D-Link 交換機只檢查乙太網包的頭和尾,並將其他所有內容視為有效負載。它解析標頭,查找數據包長度以了解要轉發的字節數,查找目標 MAC 並將數據包轉發到關聯埠,或者如果該 MAC 仍然沒有關聯埠,則將其泛洪到除入口之外的所有埠;同時,它提取源 MAC 並將其與入口埠(一個數據包來自)相關聯。它不知道 IP 地址是什麼以及它在數據包中的位置,即使存在非 IP 乙太網數據包,所有這些過程也將起作用。IPv6、IPX、AoE,任何你能想到的東西——所有這些都可以工作,即使在同一個乙太網段中通過同一個便宜的 D-Link 交換機同時工作。在同一乙太網段中擁有多個 IP 網路也是很正常的,它會完美執行,不會混淆。不用擔心。

因此,您絕對不需要使用另一個 MAC 設置另一個 IP 地址。恰恰相反:通過不使用額外的冗餘 MAC,您只會讓您的交換機更輕鬆。通過這種方式,您可以更少地填充其(相當小的)MAC 地址表,減少衝突的可能性等等。對於一台交換機來說,網路中的MAC地址越少,工作就越輕鬆!雖然這個好處只是理論上的,多一個 MAC 不會有任何明顯的區別,但你還是想到了。

只需使用此配置

auto  vmbr0
iface vmbr0 inet static
       address      172.16.0.99/24
       gateway      172.16.0.1
       bridge_ports enp1s0
       bridge_stp   off
       bridge_fd    0

iface vmbr0 inet static
   address 10.0.80.99/24

或者按照上面的連結嘗試“手動配置”(下一個標題)。


如果您絕對確定需要具有兩個不同 MAC 的單個伺服器,則可以使用macvlan虛擬介面:

auto  vmbr0
iface vmbr0 inet static
       address      172.16.0.99/24
       gateway      172.16.0.1
       bridge_ports enp1s0
       bridge_stp   off
       bridge_fd    0

auto vmbr0mv1
iface vmbr0mv1 inet static
   pre-up ip link add vmbr0mv1 link vmbr0 type macvlan mode bridge
   address 10.0.80.99/24
   post-down ip link del vmbr0mv1

它將使用隨機 MAC 地址創建,但您可以添加另一條預設置行來設置您想要的任何 MAC 地址。

但同樣,不要僅僅為了“不要混淆廉價的 D-Link 交換機”而這樣做。有了這個,您反而會更加困惑。這是為完全不同的事情而設計的,例如,將 macvlan 介面放入另一個網路命名空間,讓容器以盡可能少的成本擁有“自己的”網路介面。

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