]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: when configuring 127.0.0.1 as per-interface DNS server, contact it via... 25438/head
authorLennart Poettering <lennart@poettering.net>
Fri, 18 Nov 2022 15:52:06 +0000 (16:52 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 18 Nov 2022 15:54:46 +0000 (16:54 +0100)
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
src/resolve/resolved-dns-server.c

index 04a4f53ed0aced288df19d799e1173d825fe37d6..8ff513fa33f08c62d9790138961d2d3a9d976185 100644 (file)
@@ -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;