[systemd-devel] systemd-networkd: IPv6 prefix wrongly applied to every interface

Andreas Schultz aschultz at tpip.net
Mon Jan 18 03:05:13 PST 2016


Hi,

I have a problem with systemd-networkd compiled from
git head (rev dd050decb6ad131ebdeabb71c4f9ecb4733269c0).

On a multi-homed system, when multiple interfaces are
configure with

    LinkLocalAddressing=ipv6

(the default), when a IPv6 prefix received via RA on one
of the interfaces is mistakenly applied to all of them.

This obviously completely screws IPv6 routing.

Sample log:

ge0p5: Flags change: +LOWER_UP +RUNNING
Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/network1/link/_37 interface=org.freedesktop.DBus.Properties 
member=PropertiesChanged cookie=31 reply_cookie=0 error=n/a
ge0p5: Gained carrier
e1000e: ge0p0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
IPv6: ADDRCONF(NETDEV_CHANGE): ge0p0: link becomes ready
ge0p0: Flags change: +LOWER_UP +RUNNING
Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties 
member=PropertiesChanged cookie=32 reply_cookie=0 error=n/a
ge0p0: Gained carrier
Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/network1 interface=org.freedesktop.DBus.Properties 
member=PropertiesChanged cookie=33 reply_cookie=0 error=n/a
ge0p0: Adding address: fe80::290:bff:fe2a:8506/64 (valid forever)
ge0p0: Gained IPv6LL
ge0p0: Discovering IPv6 routers
NDisc CLIENT: Start Router Solicitation
NDisc CLIENT: Sent Router Solicitation
ge0p5: Adding address: fe80::290:bff:fe2a:850b/64 (valid forever)
Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/network1/link/_37 interface=org.freedesktop.DBus.Properties 
member=PropertiesChanged cookie=34 reply_cookie=0 error=n/a
ge0p5: Gained IPv6LL
ge0p5: Discovering IPv6 routers
NDisc CLIENT: Start Router Solicitation
NDisc CLIENT: Sent Router Solicitation
NDisc CLIENT: Sent Router Solicitation
NDisc CLIENT: Sent Router Solicitation
NDisc CLIENT: Received Router Advertisement: flags none preference medium lifetime 1800 sec
NDisc CLIENT: Router Advertisement link MTU 1500 using 1500
NDisc CLIENT: Received Router Advertisement: flags none preference medium lifetime 1800 sec
NDisc CLIENT: Router Advertisement link MTU 1500 using 1500
NDisc CLIENT: Received Router Advertisement: flags none preference medium lifetime 1800 sec
NDisc CLIENT: Received Router Advertisement: flags none preference medium lifetime 1800 sec
NDisc CLIENT: Received Router Advertisement: flags none preference medium lifetime 1800 sec
NDisc CLIENT: New prefix 2001:06f8:12d9:0013:0000:0000:0000:0000/64 lifetime 2592000 expires in 4w 2d
NDisc CLIENT: Received Router Advertisement: flags none preference medium lifetime 1800 sec
NDisc CLIENT: New prefix 2001:06f8:12d9:0013:0000:0000:0000:0000/64 lifetime 2592000 expires in 4w 2d
NDisc CLIENT: Received Router Advertisement: flags none preference medium lifetime 1800 sec
NDisc CLIENT: New prefix 2001:06f8:12d9:0016:0000:0000:0000:0000/64 lifetime 2592000 expires in 4w 2d
NDisc CLIENT: Received Router Advertisement: flags none preference medium lifetime 1800 sec
NDisc CLIENT: New prefix 2001:06f8:12d9:0016:0000:0000:0000:0000/64 lifetime 2592000 expires in 4w 2d
ge0p5: Updating address: 2001:6f8:12d9:16:290:bff:fe2a:850b/64 (valid for 4w 1d 23h 59min 59s)
Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/network1/link/_37 interface=org.freedesktop.DBus.Properties 
member=PropertiesChanged cookie=35 reply_cookie=0 error=n/a
ge0p0: Updating address: 2001:6f8:12d9:13:290:bff:fe2a:8506/64 (valid for 4w 1d 23h 59min 59s)
ge0p5: Updating address: 2001:6f8:12d9:13:290:bff:fe2a:850b/64 (valid for 4w 1d 23h 59min 59s)
ge0p5: Configured
Sent message type=signal sender=n/a destination=n/a object=/org/freedesktop/network1/link/_37 interface=org.freedesktop.DBus.Properties 
member=PropertiesChanged cookie=36 reply_cookie=0 error=n/a
ge0p0: Updating address: 2001:6f8:12d9:16:290:bff:fe2a:8506/64 (valid for 4w 1d 23h 59min 59s)
ge0p0: Configured


The resulting routing table:

~# ip -6 route
2001:6f8:12d9:13::/64 dev ge0p5  proto ra  metric 1024  pref medium
2001:6f8:12d9:13::/64 dev ge0p0  proto ra  metric 1024  pref medium
2001:6f8:12d9:16::/64 dev ge0p5  proto ra  metric 1024  pref medium
2001:6f8:12d9:16::/64 dev ge0p0  proto ra  metric 1024  pref medium

I have verified that the 2001:6f8:12d9:13::/64 prefix is only advertised on ge0p5
and the 2001:6f8:12d9:16::/64 is only advertised on ge0p0.

Regards
Andreas


More information about the systemd-devel mailing list