Re: Dynamic link-local address not assigned after collision

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



07.01.2025 06:01, Muggeridge, Matt wrote:
I have two systems where I need them to assign link-local addresses in a 169.254.4/24 subnet, regardless of any other addresses configured. I'm using a /24 subnet because I have multiple interfaces on the system that require link-local addresses; I was placing them in their own subnets.

 From this comment<https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html#:~:text=If%20an%20IPv4%20link%2Dlocal%20address%20(169.254.0.0/16)%20is%20specified%2C%20IPv4%20Address%20Conflict%20Detection%20(RFC%205227)%20is%20enabled%20for%20the%20address.> in the man page, I was expecting I could configure the interface address identically on both systems and leave it to collision detection to pick an appropriate available address.

The 1st interface assigns its link-local address (169.254.4.2/24). Unfortunately, the next interface to start doesn't assign any link-local address. I've tried to get more debug information by increasing log-level to debug, but I get no indications around the address assignments.

As an experiment, I change the 2nd system to use a different host address in the same subnet, and it gets assigned correctly.  I guess that collision detection is preventing the address assignment.

How do I achieve this or how can I get more debug information?

The relevant snippet from the network config file is:

[Network]
Address=169.254.4.2/24


This is not "dynamic link-local address". It is the fixed address you assigned. If this address is not available, why do you expect systemd-networkd to silently substitute it with another one?

Link local addressing is more than just the specific prefix. It is a separate procedure to configure interface that follows well defined rules for selecting addresses to use. You cannot really mix it with fixed address assignment.

What could be done is supporting something like

Address=169.254.4.0/24

with the semantic "pick any unused address in this range".


Full contents of the network configuration follows:

$ networkctl cat 10-eno0.network
# /etc/systemd/network/10-eno0.network
[Match]
KernelCommandLine=!nfsroot
Name=eno0

[DHCP]
ClientIdentifier=mac
RouteMetric=10
UseDomains=yes
UseHostname=yes
UseMTU=yes

[IPv6AcceptRA]
UseRedirect=no

[Link]
RequiredForOnline=no

[Network]
DHCP=yes
Domains=labs.company.net
NTP=10.10.135.123
# LinkLocalAddressing=yes
# IPv4LLStartAddress=169.254.1.1
Address=169.254.4.2/24

# /usr/lib/systemd/network/10-eno0.network.d/10-network.conf
[Network]
MulticastDNS=yes

Regards,
Matt.






[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux