<?xml version='1.0'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="systemd-resolved.service" conditional='ENABLE_RESOLVE'>

  <refentryinfo>
    <title>systemd-resolved.service</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>systemd-resolved.service</refentrytitle>
    <manvolnum>8</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd-resolved.service</refname>
    <refname>systemd-resolved</refname>
    <refpurpose>Network Name Resolution manager</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename>systemd-resolved.service</filename></para>
    <para><filename>/usr/lib/systemd/systemd-resolved</filename></para>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><command>systemd-resolved</command> is a system service that provides network name resolution to
    local applications. It implements a caching and validating DNS/DNSSEC stub resolver, as well as an LLMNR
    and MulticastDNS resolver and responder. Local applications may submit network name resolution requests
    via three interfaces:</para>

    <itemizedlist>
      <listitem><para>The native, fully-featured API <command>systemd-resolved</command> exposes on the bus,
      see
      <citerefentry><refentrytitle>org.freedesktop.resolve1</refentrytitle><manvolnum>5</manvolnum></citerefentry>
      and
      <citerefentry><refentrytitle>org.freedesktop.LogControl1</refentrytitle><manvolnum>5</manvolnum></citerefentry>
      for details. Usage of this API is generally recommended to clients as it is asynchronous and fully
      featured (for example, properly returns DNSSEC validation status and interface scope for addresses as
      necessary for supporting link-local networking).</para></listitem>

      <listitem><para>The glibc
      <citerefentry project='man-pages'><refentrytitle>getaddrinfo</refentrytitle><manvolnum>3</manvolnum></citerefentry>
      API as defined by <ulink url="https://tools.ietf.org/html/rfc3493">RFC3493</ulink> and its related
      resolver functions, including
      <citerefentry project='man-pages'><refentrytitle>gethostbyname</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
      This API is widely supported, including beyond the Linux platform. In its current form it does not
      expose DNSSEC validation status information however, and is synchronous only. This API is backed by the
      glibc Name Service Switch
      (<citerefentry project='man-pages'><refentrytitle>nss</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
      Usage of the glibc NSS module
      <citerefentry><refentrytitle>nss-resolve</refentrytitle><manvolnum>8</manvolnum></citerefentry> is
      required in order to allow glibc's NSS resolver functions to resolve hostnames via
      <command>systemd-resolved</command>.</para></listitem>

      <listitem><para>Additionally, <command>systemd-resolved</command> provides a local DNS stub listener on
      IP address 127.0.0.53 on the local loopback interface. Programs issuing DNS requests directly,
      bypassing any local API may be directed to this stub, in order to connect them to
      <command>systemd-resolved</command>. Note however that it is strongly recommended that local programs
      use the glibc NSS or bus APIs instead (as described above), as various network resolution concepts
      (such as link-local addressing, or LLMNR Unicode domains) cannot be mapped to the unicast DNS
      protocol.</para></listitem>
    </itemizedlist>

    <para>The DNS servers contacted are determined from the global settings in
    <filename>/etc/systemd/resolved.conf</filename>, the per-link static settings in
    <filename>/etc/systemd/network/*.network</filename> files (in case
    <citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    is used), the per-link dynamic settings received over DHCP, information provided via
    <citerefentry><refentrytitle>resolvectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, and any
    DNS server information made available by other system services. See
    <citerefentry><refentrytitle>resolved.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> and
    <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
    details about systemd's own configuration files for DNS servers. To improve compatibility,
    <filename>/etc/resolv.conf</filename> is read in order to discover configured system DNS servers, but
    only if it is not a symlink to <filename>/run/systemd/resolve/stub-resolv.conf</filename>,
    <filename>/usr/lib/systemd/resolv.conf</filename> or
    <filename>/run/systemd/resolve/resolv.conf</filename> (see below).</para>

  </refsect1>

  <refsect1>
    <title>Synthetic Records</title>

    <para><command>systemd-resolved</command> synthesizes DNS resource records (RRs) for the following
    cases:</para>

    <itemizedlist>
      <listitem><para>The local, configured hostname is resolved to all locally configured IP addresses
      ordered by their scope, or — if none are configured — the IPv4 address 127.0.0.2 (which is on the local
      loopback interface) and the IPv6 address ::1 (which is the local host).</para></listitem>

      <listitem><para>The hostnames <literal>localhost</literal> and <literal>localhost.localdomain</literal>
      as well as any hostname ending in <literal>.localhost</literal> or
      <literal>.localhost.localdomain</literal> are resolved to the IP addresses 127.0.0.1 and ::1.
      </para></listitem>

      <listitem><para>The hostname <literal>_gateway</literal> is resolved to all current default routing
      gateway addresses, ordered by their metric. This assigns a stable hostname to the current gateway,
      useful for referencing it independently of the current network configuration state.</para></listitem>

      <listitem><para>The hostname <literal>_outbound</literal> is resolved to the local IPv4 and IPv6
      addresses that are most likely used for communication with other hosts. This is determined by
      requesting a routing decision to the configured default gateways from the kernel and then using the
      local IP addresses selected by this decision. This hostname is only available if there is at least one
      local default gateway configured. This assigns a stable hostname to the local outbound IP addresses,
      useful for referencing them independently of the current network configuration state.</para></listitem>

      <listitem><para>The mappings defined in <filename>/etc/hosts</filename> are resolved to their
      configured addresses and back, but they will not affect lookups for non-address types (like MX).
      Support for <filename>/etc/hosts</filename> may be disabled with <varname>ReadEtcHosts=no</varname>,
      see <citerefentry><refentrytitle>resolved.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
      </para></listitem>
    </itemizedlist>
  </refsect1>

  <refsect1>
    <title>Protocols and Routing</title>

    <para>The lookup requests that <filename>systemd-resolved.service</filename> receives are routed to the
    available DNS servers, LLMNR, and MulticastDNS interfaces according to the following rules:</para>

    <itemizedlist>
      <listitem><para>Names for which synthetic records are generated (the local hostname,
      <literal>localhost</literal> and <literal>localdomain</literal>, local gateway, as listed in the
      previous section) and addresses configured in <filename>/etc/hosts</filename> are never routed to the
      network and a reply is sent immediately.</para></listitem>

      <listitem><para>Single-label names are resolved using LLMNR on all local interfaces where LLMNR is
      enabled. Lookups for IPv4 addresses are only sent via LLMNR on IPv4, and lookups for IPv6 addresses are
      only sent via LLMNR on IPv6. Note that lookups for single-label synthesized names are not routed to
      LLMNR, MulticastDNS or unicast DNS.</para></listitem>

      <listitem><para>Queries for the address records (A and AAAA) of single-label non-synthesized names are
      resolved via unicast DNS using search domains. For any interface which defines search domains, such
      look-ups are routed to the servers defined for that interface, suffixed with each of those search
      domains. When global search domains are defined, such look-ups are routed to the global servers. For
      each search domain, queries are performed by suffixing the name with each of the search domains in
      turn. Additionally, lookup of single-label names via unicast DNS may be enabled with the
      <varname>ResolveUnicastSingleLabel=yes</varname> setting. The details of which servers are queried and
      how the final reply is chosen are described below. Note that this means that address queries for
      single-label names are never sent out to remote DNS servers by default, and resolution is only
      possible if search domains are defined.</para></listitem>

      <listitem><para>Multi-label names with the domain suffix <literal>.local</literal> are resolved using
      MulticastDNS on all local interfaces where MulticastDNS is enabled. As with LLMNR, IPv4 address lookups
      are sent via IPv4 and IPv6 address lookups are sent via IPv6.</para></listitem>

      <listitem><para>Queries for multi-label names are routed via unicast DNS on local interfaces that have
      a DNS server configured, plus the globally configured DNS servers if there are any. Which interfaces
      are used is determined by the routing logic based on search and route-only domains, described below.
      Note that by default, lookups for domains with the <literal>.local</literal> suffix are not routed to
      DNS servers, unless the domain is specified explicitly as routing or search domain for the DNS server
      and interface. This means that on networks where the <literal>.local</literal> domain is defined in a
      site-specific DNS server, explicit search or routing domains need to be configured to make lookups work
      within this DNS domain. Note that these days, it's generally recommended to avoid defining
      <literal>.local</literal> in a DNS server, as <ulink
      url="https://tools.ietf.org/html/rfc6762">RFC6762</ulink> reserves this domain for exclusive
      MulticastDNS use.</para></listitem>

      <listitem><para>Address lookups (reverse lookups) are routed similarly to multi-label names, with the
      exception that addresses from the link-local address range are never routed to unicast DNS and are only
      resolved using LLMNR and MulticastDNS (when enabled).</para></listitem>
    </itemizedlist>

    <para>If lookups are routed to multiple interfaces, the first successful response is returned (thus
    effectively merging the lookup zones on all matching interfaces). If the lookup failed on all interfaces,
    the last failing response is returned.</para>

    <para>Routing of lookups is determined by the per-interface routing domains (search and route-only) and
    global search domains. See
    <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry> and
    <citerefentry><refentrytitle>resolvectl</refentrytitle><manvolnum>1</manvolnum></citerefentry> for a
    description how those settings are set dynamically and the discussion of <varname>Domains=</varname> in
    <citerefentry><refentrytitle>resolved.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> for a
    description of globally configured DNS settings.</para>

    <para>The following query routing logic applies for unicast DNS lookups initiated by
    <filename>systemd-resolved.service</filename>:</para>

    <itemizedlist>
      <listitem><para>If a name to look up matches (that is: is equal to or has as suffix) any of the
      configured routing domains (search or route-only) of any link, or the globally configured DNS settings,
      "best matching" routing domain is determined: the matching one with the most labels. The query is then
      sent to all DNS servers of any links or the globally configured DNS servers associated with this "best
      matching" routing domain. (Note that more than one link might have this same "best matching" routing
      domain configured, in which case the query is sent to all of them in parallel).</para>

      <para>In case of single-label names, when search domains are defined, the same logic applies, except
      that the name is first suffixed by each of the search domains in turn. Note that this search logic
      doesn't apply to any names with at least one dot. Also see the discussion about compatibility with
      the traditional glibc resolver below.</para></listitem>

      <listitem><para>If a query does not match any configured routing domain (either per-link or global), it
      is sent to all DNS servers that are configured on links with the <varname>DefaultRoute=</varname>
      option set, as well as the globally configured DNS server.</para></listitem>

      <listitem><para>If there is no link configured as <varname>DefaultRoute=</varname> and no global DNS
      server configured, one of the compiled-in fallback DNS servers is used.</para></listitem>

      <listitem><para>Otherwise the unicast DNS query fails, as no suitable DNS servers can be determined.
      </para></listitem>
    </itemizedlist>

    <para>The <varname>DefaultRoute=</varname> option is a boolean setting configurable with
    <command>resolvectl</command> or in <filename>.network</filename> files. If not set, it is implicitly
    determined based on the configured DNS domains for a link: if there's a route-only domain other than
    <literal>~.</literal>, it defaults to false, otherwise to true.</para>

    <para>Effectively this means: in order to support single-label non-synthesized names, define appropriate
    search domains. In order to preferably route all DNS queries not explicitly matched by routing domain
    configuration to a specific link, configure a <literal>~.</literal> route-only domain on it. This will
    ensure that other links will not be considered for these queries (unless they too carry such a routing
    domain). In order to route all such DNS queries to a specific link only if no other link is preferred,
    set the <varname>DefaultRoute=</varname> option for the link to true and do not configure a
    <literal>~.</literal> route-only domain on it. Finally, in order to ensure that a specific link never
    receives any DNS traffic not matching any of its configured routing domains, set the
    <varname>DefaultRoute=</varname> option for it to false.</para>

    <para>See
    <citerefentry><refentrytitle>org.freedesktop.resolve1</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    for information about the D-Bus APIs <filename>systemd-resolved</filename> provides.</para>
  </refsect1>

  <refsect1>
    <title>Compatibility with the traditional glibc stub resolver</title>

    <para>This section provides a short summary of differences in the stub resolver implemented by
    <citerefentry><refentrytitle>nss-resolve</refentrytitle><manvolnum>8</manvolnum></citerefentry> together
    with <command>systemd-resolved</command> and the traditional stub resolver implemented in
    <filename>nss-dns</filename>.</para>

    <itemizedlist>
      <listitem><para>Some names are always resolved internally (see Synthetic Records above). Traditionally
      they would be resolved by <filename>nss-files</filename> if provided in
      <filename>/etc/hosts</filename>. But note that the details of how a query is constructed are under the
      control of the client library. <filename>nss-dns</filename> will first try to resolve names using
      search domains and even if those queries are routed to <filename>systemd-resolved</filename>, it will
      send them out over the network using the usual rules for multi-label name routing <footnote><para>For
      example, if <filename>/etc/resolv.conf</filename> has <programlisting>nameserver 127.0.0.53
search foobar.com barbar.com
      </programlisting>and we look up <literal>localhost</literal>, <filename>nss-dns</filename> will send
      the following queries to <filename>systemd-resolved</filename> listening on 127.0.0.53:53: first
      <literal>localhost.foobar.com</literal>, then <literal>localhost.barbar.com</literal>, and finally
      <literal>localhost</literal>. If (hopefully) the first two queries fail,
      <filename>systemd-resolved</filename> will synthesize an answer for the third query.</para>

      <para>When using <filename>nss-dns</filename> with any search domains, it is thus crucial to always
      configure <filename>nss-files</filename> with higher priority and provide mappings for names that
      should not be resolved using search domains.</para></footnote>.</para></listitem>

      <listitem><para>Single-label names are not resolved for A and AAAA records using unicast DNS (unless
      overridden with <varname>ResolveUnicastSingleLabel=</varname>, see
      <citerefentry><refentrytitle>resolved.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
      This is similar to the <option>no-tld-query</option> option being set in
      <citerefentry project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
      </para></listitem>

      <listitem><para>Search domains are not used for <emphasis>suffixing</emphasis> of multi-label names.
      (Search domains are nevertheless used for lookup <emphasis>routing</emphasis>, for names that were
      originally specified as single-label or multi-label.) Any name with at least one dot is always
      interpreted as a FQDN. <filename>nss-dns</filename> would resolve names both as relative (using search
      domains) and absolute FQDN names. Some names would be resolved as relative first, and after that query
      has failed, as absolute, while other names would be resolved in opposite order. The
      <varname>ndots</varname> option in <filename>/etc/resolv.conf</filename> was used to control how many
      dots the name needs to have to be resolved as relative first. This stub resolver does not implement
      this at all: multi-label names are only resolved as FQDNs.<footnote><para>There are currently more than
      1500 top-level domain names defined, and new ones are added regularly, often using "attractive" names
      that are also likely to be used locally. Not looking up multi-label names in this fashion avoids
      fragility in both directions: a valid global name could be obscured by a local name, and resolution of
      a relative local name could suddenly break when a new top-level domain is created, or when a new
      subdomain of a top-level domain in registered. Resolving any given name as either relative or absolute
      avoids this ambiguity.</para></footnote></para></listitem>

      <listitem><para>This resolver has a notion of the special <literal>.local</literal> domain used for
      MulticastDNS, and will not route queries with that suffix to unicast DNS servers unless explicitly
      configured, see above. Also, reverse lookups for link-local addresses are not sent to unicast DNS
      servers.</para></listitem>

      <listitem><para>This resolver reads and caches <filename>/etc/hosts</filename> internally. (In other
      words, <filename>nss-resolve</filename> replaces <filename>nss-files</filename> in addition to
      <filename>nss-dns</filename>). Entries in <filename>/etc/hosts</filename> have highest priority.</para>
      </listitem>

      <listitem><para>This resolver also implements LLMNR and MulticastDNS in addition to the classic unicast
      DNS protocol, and will resolve single-label names using LLMNR (when enabled) and names ending in
      <literal>.local</literal> using MulticastDNS (when enabled).</para></listitem>

      <listitem><para>Environment variables <varname>$LOCALDOMAIN</varname> and
      <varname>$RES_OPTIONS</varname> described in
      <citerefentry project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
      are not supported currently.</para></listitem>
    </itemizedlist>
  </refsect1>

  <refsect1>
    <title><filename>/etc/resolv.conf</filename></title>

    <para>Four modes of handling <filename>/etc/resolv.conf</filename> (see
    <citerefentry project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>) are
    supported:</para>

    <itemizedlist>
      <listitem><para><command>systemd-resolved</command> maintains the
      <filename>/run/systemd/resolve/stub-resolv.conf</filename> file for compatibility with traditional
      Linux programs. This file may be symlinked from <filename>/etc/resolv.conf</filename>. This file lists
      the 127.0.0.53 DNS stub (see above) as the only DNS server. It also contains a list of search domains
      that are in use by systemd-resolved. The list of search domains is always kept up-to-date. Note that
      <filename>/run/systemd/resolve/stub-resolv.conf</filename> should not be used directly by applications,
      but only through a symlink from <filename>/etc/resolv.conf</filename>. This file may be symlinked from
      <filename>/etc/resolv.conf</filename> in order to connect all local clients that bypass local DNS APIs
      to <command>systemd-resolved</command> with correct search domains settings. This mode of operation is
      recommended.</para></listitem>

      <listitem><para>A static file <filename>/usr/lib/systemd/resolv.conf</filename> is provided that lists
      the 127.0.0.53 DNS stub (see above) as only DNS server. This file may be symlinked from
      <filename>/etc/resolv.conf</filename> in order to connect all local clients that bypass local DNS APIs
      to <command>systemd-resolved</command>. This file does not contain any search domains.
      </para></listitem>

      <listitem><para><command>systemd-resolved</command> maintains the
      <filename>/run/systemd/resolve/resolv.conf</filename> file for compatibility with traditional Linux
      programs. This file may be symlinked from <filename>/etc/resolv.conf</filename> and is always kept
      up-to-date, containing information about all known DNS servers. Note the file format's limitations: it
      does not know a concept of per-interface DNS servers and hence only contains system-wide DNS server
      definitions. Note that <filename>/run/systemd/resolve/resolv.conf</filename> should not be used
      directly by applications, but only through a symlink from <filename>/etc/resolv.conf</filename>. If
      this mode of operation is used local clients that bypass any local DNS API will also bypass
      <command>systemd-resolved</command> and will talk directly to the known DNS servers.</para></listitem>

      <listitem><para>Alternatively, <filename>/etc/resolv.conf</filename> may be managed by other packages,
      in which case <command>systemd-resolved</command> will read it for DNS configuration data. In this mode
      of operation <command>systemd-resolved</command> is consumer rather than provider of this configuration
      file. </para></listitem>
    </itemizedlist>

    <para>Note that the selected mode of operation for this file is detected fully automatically, depending
    on whether <filename>/etc/resolv.conf</filename> is a symlink to
    <filename>/run/systemd/resolve/resolv.conf</filename> or lists 127.0.0.53 as DNS server.</para>
  </refsect1>

  <refsect1>
    <title>Signals</title>

    <variablelist>
      <varlistentry>
        <term><constant>SIGUSR1</constant></term>

        <listitem><para>Upon reception of the <constant>SIGUSR1</constant> process signal
        <command>systemd-resolved</command> will dump the contents of all DNS resource record caches it
        maintains, as well as all feature level information it learnt about configured DNS servers into the
        system logs.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGUSR2</constant></term>

        <listitem><para>Upon reception of the <constant>SIGUSR2</constant> process signal
        <command>systemd-resolved</command> will flush all caches it maintains. Note that it should normally
        not be necessary to request this explicitly – except for debugging purposes – as
        <command>systemd-resolved</command> flushes the caches automatically anyway any time the host's
        network configuration changes. Sending this signal to <command>systemd-resolved</command> is
        equivalent to the <command>resolvectl flush-caches</command> command, however the latter is
        recommended since it operates in a synchronous way.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+1</constant></term>

        <listitem><para>Upon reception of the <constant>SIGRTMIN+1</constant> process signal
        <command>systemd-resolved</command> will forget everything it learnt about the configured DNS
        servers. Specifically any information about server feature support is flushed out, and the server
        feature probing logic is restarted on the next request, starting with the most fully featured
        level. Note that it should normally not be necessary to request this explicitly – except for
        debugging purposes – as <command>systemd-resolved</command> automatically forgets learnt information
        any time the DNS server configuration changes. Sending this signal to
        <command>systemd-resolved</command> is equivalent to the <command>resolvectl
        reset-server-features</command> command, however the latter is recommended since it operates in a
        synchronous way.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>resolved.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>dnssec-trust-anchors.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>nss-resolve</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>resolvectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>resolv.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd-networkd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
