Debian 主机。我有一块 NIC,应该位于两个网络上;172.16.0.0/24
和10.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 上的两个 IP、网桥别名、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
答案1
你的担心是错误的。
在 IP 网络中,多个 IP 地址与同一个 MAC 相关联是很常见的,尽管交换机不会理会这一点。我的意思是,路由器后面网络中的任何地址都只能与路由器 MAC 相关联。在代理 ARP(一种“黑客路由”)的情况下也会发生同样的情况;同样,一切正常,如果出现问题,它们与交换机无关。
廉价的 D-Link 交换机仅检查数据包的以太网报头和尾部,并将其他所有内容视为有效载荷。它会解析报头,查找数据包长度以了解要转发多少字节,它会查找目标 MAC 并将数据包转发到关联端口,或者如果该 MAC 仍然没有关联端口,则将其泛洪到除入口之外的所有端口;同时,它会提取源 MAC 并将其与入口端口(一个数据包来自的端口)关联。它不知道 IP 地址是什么以及它在数据包中的位置,即使有非 IP 以太网数据包,所有这些过程也会正常工作。IPv6、IPX、AoE,您能想到的任何内容 — 所有这些都可以工作,即使在同一时间通过同一廉价的 D-Link 交换机在同一以太网段内。此外,在同一个以太网段中拥有多个 IP 网络也很正常,它会完美运行,不会出现任何混乱。别担心。
因此,您完全没有必要设置另一个 IP 地址和另一个 MAC。事实恰恰相反:通过不使用额外的冗余 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 接口放入另一个网络命名空间,让容器拥有“自己的”网络接口,同时尽可能减少开销。