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
Touch seeded packages, 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

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to