[Bug 1853669] Re: systemd resolves own hostname to link local ipv6 address
Andreas L
avl.ramschbox at gmx.at
Sun Nov 24 15:01:51 UTC 2019
Most of the times, the first hit (namely the ipv4 address) is all that
is used from the DNS query.
In my case, it is essentially a testcase for Tcl's socket, which tries
to establish a connection to an unlistened port, and expects a
"connection refused" error. But Tcl in this case(namely that the
connection gets refused) attempts the connect on the next address-
result, which is then the bad ipv6-address. That one then caused an
"EINVAL" from the connect() syscall, which it reported up, so the
testcase expecting "connection refused" failed.
I'm aware that the impact is not very big, but that just explains, why
it wasn't already noticed long before.
Conclusion is, that DNS should either not return an inet6 link-local
address at all, as this cannot be used that way (namely without the name
of the network-device), or it should only provide it together with the
network-device, if that is possible in the DNS protocol.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1853669
Title:
systemd resolves own hostname to link local ipv6 address
Status in systemd package in Ubuntu:
New
Bug description:
I've got an ethernet-device that only has a configured ipv4 address,
and some auto-generated link-local (aka "scope link") ipv6 address.
Any tool doing a DNS query (and /lib/systemd/systemd-resolved is the
DNS-server listening on 127.0.0.53) for this host's hostname gets back
two addresses: the correct ipv4 address, and a broken ipv6 address.
Unlike on ipv4, it is possible for the same ipv6-address to be
assigned to multiple devices, and therefore the address is only valid
in the context of the eth-device.
Now, if "ifconfig" shows "inet6 fe80::4687:fcff:fe9e:4ac7 prefixlen 64 scopeid 0x20<link>"
then "fe80::4687:fcff:fe9e:4ac7" is NOT a connectable address, and syscall connect() typically fails with EINVAL.
To make it a valid address, it needs to be suffixed with a "%" and the device name, like:
fe80::4687:fcff:fe9e:4ac7%enp4s0
Either the resolver can return the link name attached to the address
separated with a "%" char, or it needs to ignore link-local inet6
addresses.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1853669/+subscriptions
More information about the foundations-bugs
mailing list