From: Lennart Poettering Date: Fri, 18 Nov 2022 15:52:06 +0000 (+0100) Subject: resolved: when configuring 127.0.0.1 as per-interface DNS server, contact it via... X-Git-Tag: v253-rc1~490^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6e32414a66ff8dbcef233981a7066684d903ee9f;p=thirdparty%2Fsystemd.git resolved: when configuring 127.0.0.1 as per-interface DNS server, contact it via "lo" always ussually if you specify a DNS server on some interface then we'll use that interface to talk to it. Let's override this for localhost addresses, as they only really make sense on "lo". Fixes: #25397 --- diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c index 04a4f53ed0a..8ff513fa33f 100644 --- a/src/resolve/resolved-dns-server.c +++ b/src/resolve/resolved-dns-server.c @@ -648,6 +648,11 @@ int dns_server_adjust_opt(DnsServer *server, DnsPacket *packet, DnsServerFeature int dns_server_ifindex(const DnsServer *s) { assert(s); + /* For loopback addresses, go via the loopback interface, regardless which interface this is linked + * to. */ + if (in_addr_is_localhost(s->family, &s->address)) + return LOOPBACK_IFINDEX; + /* The link ifindex always takes precedence */ if (s->link) return s->link->ifindex;