[systemd-devel] Upgraded multiple systems to systemd 249.3 and all had eth1 not started / configured
Amish
anon.amish at gmail.com
Mon Aug 16 10:39:05 UTC 2021
Hello everyone,
So I have around seven Arch Linux based systems.
All systems have 2 or 3 network cards.
eth0 is LAN side (192.168.x.x/24 range). eth1 and eth2 has WAN (public
internet) connectivity.
Today I upgraded all systems to systemd 249.3 and Linux kernel
5.13.10.arch1-1.
Everything worked fine before upgrading. And to my horror I started
getting complaints from all sites that internet is not working.
*Then I realized that all machines have interface eth1 down.*
Here is the journal log showing error after upgrading (journalctl -b 0
-u systemd-networkd)
Aug 16 09:30:18 kk systemd[1]: Starting Network Configuration...
Aug 16 09:30:18 kk systemd-networkd[429]: lo: Link UP
Aug 16 09:30:18 kk systemd-networkd[429]: lo: Gained carrier
Aug 16 09:30:18 kk systemd-networkd[429]: Enumeration completed
Aug 16 09:30:18 kk systemd[1]: Started Network Configuration.
*Aug 16 09:30:18 kk systemd-networkd[429]: eth1: Interface name change
detected, renamed to eth0.**
**Aug 16 09:30:18 kk systemd-networkd[429]: Could not process link
message: File exists**
**Aug 16 09:30:18 kk systemd-networkd[429]: eth0: Failed**
*Aug 16 09:30:18 kk systemd-networkd[429]: eth2: Interface name change
detected, renamed to eth1.
Aug 16 09:30:18 kk systemd-networkd[429]: eth0: Interface name change
detected, renamed to tmpeth1.
Aug 16 09:30:18 kk systemd-networkd[429]: eth1: Interface name change
detected, renamed to tmpeth2.
Aug 16 09:30:18 kk systemd-networkd[429]: eth0: Interface name change
detected, renamed to tmpeth0.
Aug 16 09:30:18 kk systemd-networkd[429]: tmpeth0: Interface name change
detected, renamed to eth0.
Aug 16 09:30:18 kk systemd-networkd[429]: tmpeth1: Interface name change
detected, renamed to eth1.
Aug 16 09:30:18 kk systemd-networkd[429]: tmpeth2: Interface name change
detected, renamed to eth2.
Aug 16 09:30:19 kk systemd-networkd[429]: eth0: Link UP
Aug 16 09:30:19 kk systemd-networkd[429]: eth2: Link UP
Aug 16 09:30:19 kk systemd-networkd[429]: eth2: Gained carrier
Aug 16 09:30:22 kk systemd-networkd[429]: eth0: Gained carrier
Explanation about tmpeth* naming is below but that is probably not
related to this issue. So can be ignored.
Notice how there is an error about renaming eth1 to eth0. I dont know
what is doing this renaming of eth1 to eth0. This renaming didn't happen
before upgrade. (see journal log below)
And also notice that there is no line stating eth1: Link UP.
*Here is the journal log when systems worked perfectly.**
*
Aug 13 09:17:20 kk systemd[1]: Starting Network Service...
Aug 13 09:17:21 kk systemd-networkd[421]: Enumeration completed
Aug 13 09:17:21 kk systemd[1]: Started Network Service.
Aug 13 09:17:21 kk systemd-networkd[421]: eth0: Interface name change
detected, eth0 has been renamed to tmpeth0.
Aug 13 09:17:21 kk systemd-networkd[421]: eth2: Interface name change
detected, eth2 has been renamed to eth0.
Aug 13 09:17:21 kk systemd-networkd[421]: eth0: Interface name change
detected, eth0 has been renamed to tmpeth2.
Aug 13 09:17:21 kk systemd-networkd[421]: eth1: Interface name change
detected, eth1 has been renamed to eth0.
Aug 13 09:17:21 kk systemd-networkd[421]: eth0: Interface name change
detected, eth0 has been renamed to tmpeth1.
Aug 13 09:17:21 kk systemd-networkd[421]: tmpeth1: Interface name change
detected, tmpeth1 has been renamed to eth1.
Aug 13 09:17:21 kk systemd-networkd[421]: tmpeth2: Interface name change
detected, tmpeth2 has been renamed to eth2.
Aug 13 09:17:21 kk systemd-networkd[421]: tmpeth0: Interface name change
detected, tmpeth0 has been renamed to eth0.
Aug 13 09:17:21 kk systemd-networkd[421]: eth1: Link UP
Aug 13 09:17:21 kk systemd-networkd[421]: eth2: Link UP
Aug 13 09:17:21 kk systemd-networkd[421]: eth2: Gained carrier
Aug 13 09:17:21 kk systemd-networkd[421]: eth0: Link UP
Aug 13 09:17:26 kk systemd-networkd[421]: eth0: Gained carrier
Notice how there was no attempt to rename eth1 to eth0 at the beginning
(i.e. when everything worked fine)
And notice how all interfaces showed Link UP.
So something changed either in systemd or in Linux kernel.
Any idea what is wrong where? And which process is trying to rename eth1
to eth0 at system startup?
All systems are production systems and after today's long downtime, I
can not downgrade any system to check what is wrong as management would
be on fire if there is another downtime.
Thank you in advance,
Amish
PS:
Little about tmpeth* naming.
Some old scripts that we have expect interface names starting with eth.
But those names are not predictable.
So to get predictable names starting with eth*, first I temporarily
rename all interface with tmpeth*. This is done via udev rules.
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="XX:XX:XX:XX:XX:XX",
NAME="tmpeth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="XX:XX:XX:XX:XX:YY",
NAME="tmpeth1"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="XX:XX:XX:XX:XX:ZZ",
NAME="tmpeth2"
Then I have a small service (script) which runs before
network-pre.target to convert these names back to eth*
#search for network interface with name starting from "tmpeth" and
rename them to "eth"
/usr/bin/find /sys/class/net -maxdepth 1 -name "tmpeth[0-9]" -type l
-printf "%f\n" | while read tmpiface; do /usr/bin/ip link set dev
"$tmpiface" name "$(echo $tmpiface | sed s/tmpeth/eth/)"; done
This ensures that I have predictable names starting with eth*. And it is
working fine from 2-3 years. Even with current issue, name assignment is
working fine.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20210816/9f73dda1/attachment.htm>
More information about the systemd-devel
mailing list