169.254.X.X is always being create in eth0 even with static config

Hi there,

I’m having a hard time figuring our why 169.254.X.X is always being configured along the static ip address on my system.
I’ve created a file named /etc/systemd/network/20-wired.network and setting the following configuration:



Even that the interface have the correct IP, there always a seconds ip after a time (30, 40 seconds):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:14:2d:69:36:91 brd ff:ff:ff:ff:ff:ff
inet brd scope global eth0
valid_lft forever preferred_lft forever
inet brd scope global eth0
valid_lft forever preferred_lft forever
3: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
4: usb0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 00:14:2d:ff:ff:ff brd ff:ff:ff:ff:ff:ff

Is there some way i could force this configuration not being present? The problem is that after it appears the routing table configuration is invalid, and the connections outside my network doesn’t work.

Using tdx-multimedia-reference


Hi @anonymouse,

Are you sure all other network managers are disabled?
Try adding LinkLocalAddressing=no to [Network] section.


Hi @Edward ,

I’ve tried that but if has no effect so far. The ip still appears after a while. Tried DHCP=no, but sill no luck.
If i do systemctl restart systemd-networkd, the ip goes away but the routing table isn’t good anymore. I’ve udhcpc binary (that in fact points to busybox itself), but i’m not sure if is related with this problem, Do you know a way to disable it just to try?


Perhaps you have some network manager or udhcpd running? Doesn’t ps list some processes like that?

I’m using LinkLocalAddressing=yes on purpose, this allows to talk to Colibri, which is directly connected by LAN to Windows PC. Without DHCP running, Windows 10 assigns link local address 169.254.x.x to its PC LAN, Colibri does the same. Both IP’s are from the same subnet and so can talk to each other. The only missing part is avahi, which ignores local scope IP’s. Small service fixes this problem and I can access Colibri from Windows by Colibri host name…

For 169.254.x.x I had to enable LinkLocalAddressing=yes explicitly. It should be disabled by default.


I do have udhcpc and udhcpcd binaries, but there no services that uses it.

After a day or so, i found that was “connman” service who was reponsible for adding a second address, through rtlink message bus. Bah

The solution is stop the connman service: systemctl disable connman