network:
renderer: networkd
ethernets:
eth0: # usb ethernet 1
match:
macaddress: f8:e4:3b:55:72:71
set-name: eth0
dhcp4: no
eth1: # builtin
match:
macaddress: e6:30:ac:f2:31:63
set-name: eth1
dhcp4: no
bonds:
bond0:
dhcp4: no
interfaces:
- eth0
- eth1
addresses:
- 192.168.0.4/24
routes:
- to: default
via: 192.168.0.1
metric: 0
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
- 8.8.8.8
- 8.4.4.8
parameters:
mode: active-backup
primary: eth0
mii-monitor-interval: 1
version: 2
基本上,我有 3 个以太网端口,它们被绑定成一个。但是,此绑定会重新分配 MAC 地址:
2: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether e6:30:ac:f2:31:63 brd ff:ff:ff:ff:ff:ff
4: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
link/ether e6:30:ac:f2:31:63 brd ff:ff:ff:ff:ff:ff
因此在启动时一切正常(即它找到匹配的 NIC 并重命名它们),但是当我运行时netplan apply
:
WARNING:root:Cannot find unique matching interface for eth1
WARNING:root:Cannot find unique matching interface for eth0
我认为这不会导致任何问题,因为 NIC 的名称在启动时已经重新分配 - 但这是一个令人讨厌的警告 - 并且可能会使在没有不断重启的情况下进行更改变得更加困难。
有没有办法根据“真实”MAC 地址使用 netplan - 并且它不会给我警告?
答案1
绑定接口必须具有相同的 mac 地址,因此一旦创建绑定,就不可能在 mac 地址上唯一匹配接口。接口没有“真实”mac 地址的概念 - 一旦 mac 更新,这就是内核、udev、systemd-networkd 和 netplan 所知的接口的唯一 mac 地址。
一般情况下,不建议将网络接口重命名为“传统”命名约定 (ethN),不过我看到您的接口中有一个被列为 USB 的接口被注释为 USB,因此可以理解为什么您想要一个更简洁的接口名称。您可能会发现按驱动程序匹配以重命名 USB 接口并保留非 USB 接口的名称是合理的。