Oddity with network interfaces and bridges

cwakefield

New Member
Aug 10, 2023
12
0
1
My home server has two onboard 1Gbps interfaces and have added a PCI-E 4x 1Gbps network card and is running Proxmox 8.0.4, upgraded from Proxmox 7.x.

The hardware as reported by dmesg

Code:
root@proxmox:/etc/network# dmesg | grep -i ethernet
[    2.275542] igb: Intel(R) Gigabit Ethernet Network Driver
[    2.469170] igb 0000:04:00.0: Intel(R) Gigabit Ethernet Network Connection
[    2.657115] igb 0000:04:00.1: Intel(R) Gigabit Ethernet Network Connection
[    2.841172] igb 0000:05:00.0: Intel(R) Gigabit Ethernet Network Connection
[    3.025164] igb 0000:05:00.1: Intel(R) Gigabit Ethernet Network Connection
[    3.053149] igb 0000:0c:00.0: Intel(R) Gigabit Ethernet Network Connection

The interfaces as reported by ip link are
Code:
...
2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 34:17:eb:ce:7a:a9 brd ff:ff:ff:ff:ff:ff
3: ens1f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:1b:21:ca:6a:90 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f0
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:1b:21:ca:6a:91 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f1
5: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:1b:21:ca:6a:94 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f0
6: ens1f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:1b:21:ca:6a:95 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f1
...

The contents of /etc/network/interfaces is
Code:
...
iface lo inet loopback

iface enp12s0 inet manual

iface enp0s25 inet manual

iface enp4s0f0 inet manual

iface enp4s0f1 inet manual

iface enp5s0f0 inet manual

iface enp5s0f1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 192.168.4.128/22
    gateway 192.168.4.1
    bridge-ports enp12s0
    bridge-stp off
    bridge-fd 0

However, in the System/Network web interface of Proxmox it shows the following.

CleanShot 2023-08-14 at 21.20.16.png

I am not clear why both the interface name and the interface alternate name are being shown in the web interface.

Also, if I attempt to define a new Linux Bridge using the alternat name for an interface it errors as follows
Code:
root@proxmox:/etc/network# ifreload -a
error: vmbr1: bridge port enp4s0f0 does not exist
warning: vmbr1: apply bridge ports settings: bridge configuration failed (missing ports)

Where the definition for vmbr1 created in the web interface is

Code:
...
auto vmbr1
iface vmbr1 inet static
    address 192.168.100.0/24
    bridge-ports enp4s0f0
    bridge-stp off
    bridge-fd 0
#WAN

If I try and create vmrb1 using ens1f0 which is the underlying interface name it succeds.

So, a few things.
  • I don't understand how Linux is naming these interfaces...
  • I thought I could use the enp version of interface for consistency regardless of whether its onboard or on the addon
  • I don't understand why Proxmox is showing both names of an interface
  • I don't understand why Proxmox persists both names of an interface in /etc/network/interfaces when you make changes in the web interface
  • I can't find any remnants from Proxmox 7.x that should have been removed as part of the Proxmox 8.x upgrade.
Any ideas?
 
Last edited:
Can you post the output of ip a? That lists the current NICs available in the running system and their configuration.
 
Output from ip a, but it shows no more than the ip link I originally posted.

Code:
...
2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 34:17:eb:ce:7a:a9 brd ff:ff:ff:ff:ff:ff
3: ens1f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:90 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f0
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:91 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f1
5: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:94 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f0
6: ens1f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:95 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f1
7: enp12s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr0 state UP group default qlen 1000
    link/ether 34:17:eb:ce:7a:aa brd ff:ff:ff:ff:ff:ff
8: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 34:17:eb:ce:7a:aa brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.128/22 scope global vmbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::3617:ebff:fece:7aaa/64 scope link
       valid_lft forever preferred_lft forever
...
 
Did a little more digging, but still confused.

Code:
root@proxmox:/etc/systemd/network# dmesg | grep -i e1000
[    2.271828] e1000e: Intel(R) PRO/1000 Network Driver
[    2.271831] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    2.272071] e1000e 0000:00:19.0: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    2.360278] e1000e 0000:00:19.0 0000:00:19.0 (uninitialized): registered PHC clock
[    2.427282] e1000e 0000:00:19.0 eth0: (PCI Express:2.5GT/s:Width x1) 34:17:eb:ce:7a:a9
[    2.427286] e1000e 0000:00:19.0 eth0: Intel(R) PRO/1000 Network Connection
[    2.427313] e1000e 0000:00:19.0 eth0: MAC: 11, PHY: 12, PBA No: FFFFFF-0FF
[    2.756709] e1000e 0000:00:19.0 enp0s25: renamed from eth0

Code:
root@proxmox:/etc/systemd/network# dmesg | grep -i igb
[    2.275542] igb: Intel(R) Gigabit Ethernet Network Driver
[    2.275546] igb: Copyright (c) 2007-2014 Intel Corporation.
[    2.469167] igb 0000:04:00.0: added PHC on eth1
[    2.469170] igb 0000:04:00.0: Intel(R) Gigabit Ethernet Network Connection
[    2.469172] igb 0000:04:00.0: eth1: (PCIe:2.5Gb/s:Width x4) 00:1b:21:ca:6a:90
[    2.469488] igb 0000:04:00.0: eth1: PBA No: G18771-002
[    2.469489] igb 0000:04:00.0: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
[    2.657112] igb 0000:04:00.1: added PHC on eth2
[    2.657115] igb 0000:04:00.1: Intel(R) Gigabit Ethernet Network Connection
[    2.657117] igb 0000:04:00.1: eth2: (PCIe:2.5Gb/s:Width x4) 00:1b:21:ca:6a:91
[    2.657435] igb 0000:04:00.1: eth2: PBA No: G18771-002
[    2.657437] igb 0000:04:00.1: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
[    2.841169] igb 0000:05:00.0: added PHC on eth0
[    2.841172] igb 0000:05:00.0: Intel(R) Gigabit Ethernet Network Connection
[    2.841174] igb 0000:05:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:1b:21:ca:6a:94
[    2.841488] igb 0000:05:00.0: eth0: PBA No: G18771-002
[    2.841492] igb 0000:05:00.0: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
[    3.025161] igb 0000:05:00.1: added PHC on eth3
[    3.025164] igb 0000:05:00.1: Intel(R) Gigabit Ethernet Network Connection
[    3.025166] igb 0000:05:00.1: eth3: (PCIe:2.5Gb/s:Width x4) 00:1b:21:ca:6a:95
[    3.025495] igb 0000:05:00.1: eth3: PBA No: G18771-002
[    3.025500] igb 0000:05:00.1: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
[    3.053147] igb 0000:0c:00.0: added PHC on eth4
[    3.053149] igb 0000:0c:00.0: Intel(R) Gigabit Ethernet Network Connection
[    3.053150] igb 0000:0c:00.0: eth4: (PCIe:2.5Gb/s:Width x1) 34:17:eb:ce:7a:aa
[    3.053215] igb 0000:0c:00.0: eth4: PBA No: 000300-000
[    3.053219] igb 0000:0c:00.0: Using MSI-X interrupts. 4 rx queue(s), 4 tx queue(s)
[    3.054845] igb 0000:0c:00.0 enp12s0: renamed from eth4
[    3.089089] igb 0000:04:00.0 ens1f0: renamed from eth1
[    3.124788] igb 0000:05:00.1 ens1f1: renamed from eth3
[   21.977136] igb 0000:0c:00.0 enp12s0: igb: enp12s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX

Also picked up on this when running networkctl status -all

Code:
root@proxmox:/etc/systemd/network# grep -i udev-worker /var/log/syslog
2023-08-14T21:14:52.082769+10:00 proxmox (udev-worker)[767]: eth0: Could not set AlternativeName= or apply AlternativeNamesPolicy=, ignoring: File exists
2023-08-14T21:14:52.082773+10:00 proxmox (udev-worker)[778]: eth2: Could not set AlternativeName= or apply AlternativeNamesPolicy=, ignoring: File exists
2023-08-14T21:14:52.082777+10:00 proxmox (udev-worker)[778]: ens1f1: Failed to rename network interface 4 from 'eth2' to 'ens1f1': File exists
2023-08-14T21:14:52.082793+10:00 proxmox (udev-worker)[778]: ens1f1: Failed to process device, ignoring: File exists
2023-08-14T21:14:52.082798+10:00 proxmox (udev-worker)[767]: ens1f0: Failed to rename network interface 5 from 'eth0' to 'ens1f0': File exists
2023-08-14T21:14:52.082802+10:00 proxmox (udev-worker)[767]: ens1f0: Failed to process device, ignoring: File exists
 
My only work around at the moment is to create .link files based on MAC addresses to consistently name the interfaces.

Really don't like doing it.
 
Ah sorry, missed the responses. Was there no vmbr1 in the ip a output?

Do you see the logs regarding renaming failed even after a reboot? Did you change or add any custom udev rules?
 
Ah sorry, missed the responses. Was there no vmbr1 in the ip a output?

Do you see the logs regarding renaming failed even after a reboot? Did you change or add any custom udev rules?

The system wouldn't let vmbr1 come up as it was referring to an altname that was my whole issue.

I am quite ok to use the enpXsY names for interfaces and understand why they are that, but when I tried to use them in a bridge config it wouldn't let me despite them appearing in both the webui and the ip a output.

I have ended up using systemd network .link files to get consistent names for my interfaces now, but I am not liking that approach.
Code:
root@proxmox:~# cat /etc/systemd/network/10-en0.link
[Match]
MACAddress=34:17:eb:ce:7a:a9


[Link]
Name=en0

But now I see
Code:
...
2: en0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 34:17:eb:ce:7a:a9 brd ff:ff:ff:ff:ff:ff
3: en2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:90 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f0
4: en3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:91 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f1
5: en4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:94 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f0
6: en5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:95 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f1
7: en1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr0 state UP group default qlen 1000
    link/ether 34:17:eb:ce:7a:aa brd ff:ff:ff:ff:ff:ff
...

CleanShot 2023-08-19 at 08.00.02@2x.png

I'm even able to create a new Linux Bridge successfully using one of the ports

Code:
...
31: vmbr2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:90 brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.128/24 scope global vmbr2
       valid_lft forever preferred_lft forever

CleanShot 2023-08-19 at 08.04.09@2x.png

Code:
...
auto vmbr2
iface vmbr2 inet static
    address 192.168.9.128/24
    bridge-ports en2
    bridge-stp off
    bridge-fd 0
#Test bridge
 
If I remove the .link files, remove the entries for the 4 port card from /etc/network/interfaces and reboot I get the same mess of interface names again.

Code:
...
2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 34:17:eb:ce:7a:a9 brd ff:ff:ff:ff:ff:ff
3: ens1f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:90 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f0
4: ens1f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:91 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f1
5: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:94 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f0
6: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:95 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f1
7: enp12s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr0 state UP group default qlen 1000
    link/ether 34:17:eb:ce:7a:aa brd ff:ff:ff:ff:ff:ff
...

Creating a bridge using the link name works, but not the altname.
Code:
...
auto vmbr2
iface vmbr2 inet static
    address 192.168.9.128/24
    bridge-ports ens1f0
    bridge-stp off
    bridge-fd 0

auto vmbr3
iface vmbr3 inet static
    address 192.168.10.128/24
    bridge-ports enp4s0f1
    bridge-stp off
    bridge-fd 0
...

Code:
root@proxmox:/etc/network# ifreload -a
error: vmbr3: bridge port enp4s0f1 does not exist
warning: vmbr3: apply bridge ports settings: bridge configuration failed (missing ports)

So, if altnames are not supported when defining a linux bridge then why does Proxmox show them in the interfaces section?
 
Rebooted with the following in /etc/network/interfaces and no .link files in place.

Code:
...
auto lo
iface lo inet loopback

iface enp0s25 inet manual
#Onboard #1

iface enp12s0 inet manual
#Onboard #2

auto vmbr0
iface vmbr0 inet static
    address 192.168.4.128/22
    gateway 192.168.4.1
    bridge-ports enp12s0
    bridge-stp off
    bridge-fd 0

auto vmbr1
iface vmbr1 inet manual
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094
#Host only

auto vmbr1.8
iface vmbr1.8 inet static
    address 192.168.8.128/24

Checked for renaming errors and sure enough
Code:
root@proxmox:~# grep -i udev-worker /var/log/syslog
2023-08-22T12:16:22.214700+10:00 proxmox (udev-worker)[807]: eth0: Could not set AlternativeName= or apply AlternativeNamesPolicy=, ignoring: File exists
2023-08-22T12:16:22.214711+10:00 proxmox (udev-worker)[738]: eth3: Could not set AlternativeName= or apply AlternativeNamesPolicy=, ignoring: File exists
2023-08-22T12:16:22.214726+10:00 proxmox (udev-worker)[807]: ens1f0: Failed to rename network interface 5 from 'eth0' to 'ens1f0': File exists
2023-08-22T12:16:22.214732+10:00 proxmox (udev-worker)[738]: ens1f1: Failed to rename network interface 6 from 'eth3' to 'ens1f1': File exists
2023-08-22T12:16:22.214738+10:00 proxmox (udev-worker)[807]: ens1f0: Failed to process device, ignoring: File exists
2023-08-22T12:16:22.214746+10:00 proxmox (udev-worker)[738]: ens1f1: Failed to process device, ignoring: File exists

And ip a reports
Code:
...
2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 34:17:eb:ce:7a:a9 brd ff:ff:ff:ff:ff:ff
3: ens1f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:90 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f0
4: ens1f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:91 brd ff:ff:ff:ff:ff:ff
    altname enp4s0f1
5: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:94 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f0
6: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:21:ca:6a:95 brd ff:ff:ff:ff:ff:ff
    altname enp5s0f1
7: enp12s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr0 state UP group default qlen 1000
    link/ether 34:17:eb:ce:7a:aa brd ff:ff:ff:ff:ff:ff

And dmesg reports
Code:
root@proxmox:~# dmesg | grep -i igb
[    2.153202] igb: Intel(R) Gigabit Ethernet Network Driver
[    2.153205] igb: Copyright (c) 2007-2014 Intel Corporation.
[    2.357181] igb 0000:04:00.0: added PHC on eth1
[    2.357184] igb 0000:04:00.0: Intel(R) Gigabit Ethernet Network Connection
[    2.357186] igb 0000:04:00.0: eth1: (PCIe:2.5Gb/s:Width x4) 00:1b:21:ca:6a:90
[    2.357505] igb 0000:04:00.0: eth1: PBA No: G18771-002
[    2.357506] igb 0000:04:00.0: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
[    2.541193] igb 0000:04:00.1: added PHC on eth2
[    2.541197] igb 0000:04:00.1: Intel(R) Gigabit Ethernet Network Connection
[    2.541199] igb 0000:04:00.1: eth2: (PCIe:2.5Gb/s:Width x4) 00:1b:21:ca:6a:91
[    2.541519] igb 0000:04:00.1: eth2: PBA No: G18771-002
[    2.541522] igb 0000:04:00.1: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
[    2.725295] igb 0000:05:00.0: added PHC on eth0
[    2.725301] igb 0000:05:00.0: Intel(R) Gigabit Ethernet Network Connection
[    2.725303] igb 0000:05:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:1b:21:ca:6a:94
[    2.725623] igb 0000:05:00.0: eth0: PBA No: G18771-002
[    2.725629] igb 0000:05:00.0: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
[    2.909169] igb 0000:05:00.1: added PHC on eth3
[    2.909172] igb 0000:05:00.1: Intel(R) Gigabit Ethernet Network Connection
[    2.909174] igb 0000:05:00.1: eth3: (PCIe:2.5Gb/s:Width x4) 00:1b:21:ca:6a:95
[    2.909500] igb 0000:05:00.1: eth3: PBA No: G18771-002
[    2.909505] igb 0000:05:00.1: Using MSI-X interrupts. 8 rx queue(s), 8 tx queue(s)
[    2.937152] igb 0000:0c:00.0: added PHC on eth4
[    2.937153] igb 0000:0c:00.0: Intel(R) Gigabit Ethernet Network Connection
[    2.937155] igb 0000:0c:00.0: eth4: (PCIe:2.5Gb/s:Width x1) 34:17:eb:ce:7a:aa
[    2.937219] igb 0000:0c:00.0: eth4: PBA No: 000300-000
[    2.937223] igb 0000:0c:00.0: Using MSI-X interrupts. 4 rx queue(s), 4 tx queue(s)
[    2.938876] igb 0000:04:00.1 ens1f1: renamed from eth2
[    2.977047] igb 0000:04:00.0 ens1f0: renamed from eth1
[    3.008961] igb 0000:0c:00.0 enp12s0: renamed from eth4
[   22.149160] igb 0000:0c:00.0 enp12s0: igb: enp12s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
root@proxmox:~# dmesg | grep -i e1000
[    2.147575] e1000e: Intel(R) PRO/1000 Network Driver
[    2.147578] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    2.149710] e1000e 0000:00:19.0: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    2.231198] e1000e 0000:00:19.0 0000:00:19.0 (uninitialized): registered PHC clock
[    2.298837] e1000e 0000:00:19.0 eth0: (PCI Express:2.5GT/s:Width x1) 34:17:eb:ce:7a:a9
[    2.298842] e1000e 0000:00:19.0 eth0: Intel(R) PRO/1000 Network Connection
[    2.298870] e1000e 0000:00:19.0 eth0: MAC: 11, PHY: 12, PBA No: FFFFFF-0FF
[    2.628701] e1000e 0000:00:19.0 enp0s25: renamed from eth0
 
Anything else that was customized? Custom udev rules or other systemd based ones for example?
Because
Code:
2023-08-22T12:16:22.214726+10:00 proxmox (udev-worker)[807]: ens1f0: Failed to rename network interface 5 from 'eth0' to 'ens1f0': File exists
hints that something is probably there, interfering.

How many files are in /usr/lib/udev/rules.d?
Code:
la -l /usr/lib/udev/rules.d/ | wc -l
On a bare Proxmox VE 8.0 installation I have 53.

What does the kernel cmdline look like?
Code:
cat /proc/cmdline
 
Last edited:
This system upgraded to Proxmox 8.x from Proxmox 7.x
Code:
root@proxmox:~# ls -1 /usr/lib/udev/rules.d/ | wc -l
63

I don't believe I have modified any of these.
Code:
root@proxmox:~# ls -1 /usr/lib/udev/rules.d/
01-md-raid-creating.rules
50-firmware.rules
50-rbd-pve.rules
50-rbd.rules
50-udev-default.rules
55-dm.rules
56-dm-parts.rules
56-lvm.rules
60-autosuspend.rules
60-block.rules
60-bridge-network-interface.rules
60-cdrom_id.rules
60-drm.rules
60-evdev.rules
60-fido-id.rules
60-infiniband.rules
60-input-id.rules
60-kpartx.rules
60-persistent-alsa.rules
60-persistent-input.rules
60-persistent-storage-dm.rules
60-persistent-storage.rules
60-persistent-storage-tape.rules
60-persistent-v4l.rules
60-sensor.rules
60-serial.rules
60-zvol.rules
63-md-raid-arrays.rules
64-btrfs-dm.rules
64-btrfs.rules
64-btrfs-zoned.rules
64-md-raid-assembly.rules
68-del-part-nodes.rules
69-lvm.rules
69-md-clustered-confirm-device.rules
69-vdev.rules
70-camera.rules
70-iscsi-network-interface.rules
70-joystick.rules
70-memory.rules
70-mouse.rules
70-open-iscsi.rules
70-power-switch.rules
70-touchpad.rules
70-uaccess.rules
71-seat.rules
73-seat-late.rules
73-special-net-names.rules
75-net-description.rules
75-probe_mtd.rules
78-sound-card.rules
80-debian-compat.rules
80-drivers.rules
80-net-setup-link.rules
81-net-dhcp.rules
85-hdparm.rules
85-hwclock.rules
90-console-setup.rules
90-zfs.rules
95-dm-notify.rules
96-e2scrub.rules
99-nfs.rules
99-systemd.rules

I'm not sure where most of them originate from as they don't come from a package according to dpkg -S.

Code:
root@proxmox:~# find /usr/lib/udev/rules.d/ -type f -exec grep --with-filename --ignore-case --line-number 'SUBSYSTEM=="net"' \{\} \;
/usr/lib/udev/rules.d/99-systemd.rules:52:SUBSYSTEM=="net", KERNEL!="lo", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/net/devices/$name"
/usr/lib/udev/rules.d/99-systemd.rules:66:ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name"
/usr/lib/udev/rules.d/73-special-net-names.rules:3:ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", ATTRS{idVendor}=="413c", ATTRS{idProduct}=="a102", NAME="idrac"
/usr/lib/udev/rules.d/73-special-net-names.rules:7:ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", \
/usr/lib/udev/rules.d/73-special-net-names.rules:14:ACTION=="add", SUBSYSTEM=="net", NAME=="", DRIVERS=="ibmveth", PROGRAM="/bin/sh -ec 'D=$${DEVPATH#*/vio/}; D=$${D%%%%/*}; D=$${D#????}; D=$${D#0}; D=$${D#0}; D=$${D#0}; D=$${D#0}; echo $${D:-0}'", NAME="ibmveth$result"
/usr/lib/udev/rules.d/60-bridge-network-interface.rules:1:ACTION=="add", SUBSYSTEM=="net", RUN+="bridge-network-interface"
/usr/lib/udev/rules.d/70-iscsi-network-interface.rules:2:SUBSYSTEM=="net", ACTION=="add", RUN+="/lib/open-iscsi/net-interface-handler start"
/usr/lib/udev/rules.d/70-iscsi-network-interface.rules:3:SUBSYSTEM=="net", ACTION=="remove", RUN+="/lib/open-iscsi/net-interface-handler stop"

Code:
root@proxmox:~# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-6.2.16-6-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on iommu=pt video=vesafb:off video=efifb:off initcall_blacklist=sysfb_init
 
I'm actually having a very similar issue after upgrading to proxmox 8. Booting to the previous kernel fixes the problem for me.

Each boot seems to create different interface names (causing the network config to not be correct). The naming doesn't seem to be consistent either.
 
  • Like
Reactions: cwakefield
I was able to fix this behavior on my proxmox host. I added a copy of /lib/udev/rules.d/80-net-setup-link.rules to /etc/udev/rules.d/80-net-setup-link.rules. I then replaced ID_NET_NAME with ID_NET_NAME_PATH in the new file under /etc/udev/rules.d/. After a reboot, I'm getting consistent interface names again.

Code:
SUBSYSTEM!="net", GOTO="net_setup_link_end"

IMPORT{builtin}="path_id"

ACTION=="remove", GOTO="net_setup_link_end"

IMPORT{builtin}="net_setup_link"

NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"

LABEL="net_setup_link_end"

These links were helpful.

https://unix.stackexchange.com/ques...ng-scheme-for-network-interfaces-use-by-predi

https://wiki.debian.org/NetworkInterfaceNames
 
  • Like
Reactions: mhagen
I was able to fix this behavior on my proxmox host. I added a copy of /lib/udev/rules.d/80-net-setup-link.rules to /etc/udev/rules.d/80-net-setup-link.rules. I then replaced ID_NET_NAME with ID_NET_NAME_PATH in the new file under /etc/udev/rules.d/. After a reboot, I'm getting consistent interface names again.

Code:
SUBSYSTEM!="net", GOTO="net_setup_link_end"

IMPORT{builtin}="path_id"

ACTION=="remove", GOTO="net_setup_link_end"

IMPORT{builtin}="net_setup_link"

NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"

LABEL="net_setup_link_end"

These links were helpful.

https://unix.stackexchange.com/ques...ng-scheme-for-network-interfaces-use-by-predi

https://wiki.debian.org/NetworkInterfaceNames
Appreciate your response, will try this out this evening.
 
I was able to fix this behavior on my proxmox host. I added a copy of /lib/udev/rules.d/80-net-setup-link.rules to /etc/udev/rules.d/80-net-setup-link.rules. I then replaced ID_NET_NAME with ID_NET_NAME_PATH in the new file under /etc/udev/rules.d/. After a reboot, I'm getting consistent interface names again.

Code:
SUBSYSTEM!="net", GOTO="net_setup_link_end"

IMPORT{builtin}="path_id"

ACTION=="remove", GOTO="net_setup_link_end"

IMPORT{builtin}="net_setup_link"

NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"

LABEL="net_setup_link_end"

These links were helpful.

https://unix.stackexchange.com/ques...ng-scheme-for-network-interfaces-use-by-predi

https://wiki.debian.org/NetworkInterfaceNames

That did the trick, thank you!

Never had to do this under Proxmox 7.x maybe /lib/udev/rules.d/80-net-setup-link.rules was different between the releases.
 
Having the same issue with a brand new Proxmox 8 install from 3-4 days ago, interface names change all over the place per reboot.. not able to consistently use one interface as the primary vmbr* one as for every reboot it's a gamble which name's used. Quasi impossible to use that way :(
 
Strange /lib/udev/rules.d/80-net-setup-link.rules is the same in Proxmox 7.x and 8.x, so next guess would be a kernel difference?
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!