文件

文件

当我将下面的配置文件添加到/etc/systemd/network并重新启动时systemd-networkd,我发现的 MAC 地址bond0eth0eth2都已更改为单个本地管理的地址。这会破坏 DHCP,并且不符合 Linux 内核绑定文档设定的期望,即绑定接口将采用其从属接口之一的 MAC 地址。

根据网络文档,问题似乎是这样的:

MAC地址=

设备使用的 MAC 地址。对于“tun”或“tap”设备,不支持在“[NetDev]”部分中设置 MACAddress=。请在相应的 systemd.network(5) 文件的“[Link]”部分中指定它。如果未设置此选项,“vlan”设备将继承物理接口的 MAC 地址。对于其他类型的 netdev,如果未设置此选项,则根据接口名称和机器 ID (5) 生成 MAC 地址。

(重点是我的。)

我如何防止生成此 MAC 地址并告诉 networkd 只使用从属设备中的一个?

文件

10-bond0.netdev

[NetDev]
Name=bond0
Kind=bond

[Bond]
Mode=802.3ad

10-bond0.网络

[Match]
Name=bond0

[Network]
DHCP=ipv4

20-eth0.网络

[Match]
Name=eth0

[Network]
Bond=bond0

20-eth2.网络

[Match]
Name=eth2

[Network]
Bond=bond0

答案1

我如何防止生成此 MAC 地址并告诉 networkd 只使用从属设备中的一个?

据我所知,这是不可能的。在我的项目中,我确实使用另一个脚本进行了设置。根据Debian Systemd 文档Systemd-networkd 可能会分配与物理接口不同的 MAC 地址。您可以手动添加 MACAddress=xx:xx:xx:xx:xx:xx 来修复此问题。

我知道您没有提到操作系统,但您的症状仍然符合 Debian......

答案2

这是示例界面和债券文件配置,MACADDR可能会解决您的问题。

#Redhat/Centos

#  cat /etc/sysconfig/network-scripts/ifcfg-eno1
DEVICE=eno1
NAME=eno1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no

# cat /etc/sysconfig/network-scripts/ifcfg-eno2
DEVICE=eno2
NAME=eno2
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no

# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
TYPE=Bond
MACADDR=a0:36:9f:0f:b1:70         #Assigning fixed mac address
ONBOOT=yes
BOOTPROTO=dhcp
NM_CONTROLLED=no
BONDING_OPTS="mode=active-backup primary=eno1 miimon=100"

或者对于 Ubuntu

#eth0 接口文件

auto eth0
iface eth0 inet manual
bond-master bond0
bond-primary eth0

#eth1 接口文件

auto eth1
iface eth1 inet manual
bond-master bond0

#bond 文件

auto bond0
iface bond0 inet static
hwaddress ether xx:xx:xx:xx:xx:xx         #fixed mac address
address x.x.x.x                           #Your can remove these lines if it's dhcp
netmask x.x.x.x
gateway x.x.x.x
bond-mode active-backup
bond-miimon 100
bond-slaves none

相关内容