<?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
      the IP addresses 127.0.0.53 and 127.0.0.54 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>

      <para id="proxy-stub">The DNS stub resolver on 127.0.0.53 provides the full feature set of the local
      resolver, which includes offering LLMNR/MulticastDNS resolution. The DNS stub resolver on 127.0.0.54
      provides a more limited resolver, that operates in "proxy" mode only, i.e. it will pass most DNS
      messages relatively unmodified to the current upstream DNS servers and back, but not try to process the
      messages locally, and hence does not validate DNSSEC, or offer up LLMNR/MulticastDNS. (It will
      translate to DNS-over-TLS communication if needed however.)</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 hostname <literal>_localdnsstub</literal> is resolved to the IP address 127.0.0.53,
      i.e. the address the local DNS stub (see above) is listening on.</para></listitem>

      <listitem><para>The hostname <literal>_localdnsproxy</literal> is resolved to the IP address 127.0.0.54,
      i.e. the address the local DNS proxy (see above) is listening on.</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 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>Credentials</title>

    <para><command>systemd-resolved</command> supports the service credentials logic as implemented by
    <varname>LoadCredential=</varname>/<varname>SetCredential=</varname> (see
    <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>1</manvolnum></citerefentry> for
    details). The following credentials are used when passed in:</para>

    <variablelist>
      <varlistentry>
        <term><varname>network.dns</varname></term>
        <term><varname>network.search_domains</varname></term>

        <listitem><para>May contain a space separated list of DNS server IP addresses and DNS search
        domains. This information is only used when no explicit configuration via
        <filename>/etc/systemd/resolved.conf</filename>, <filename>/etc/resolv.conf</filename> or the kernel
        command line has been provided.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Kernel Command Line</title>

    <para><command>systemd-resolved</command> also honours two kernel command line options:</para>

    <variablelist class='kernel-commandline-options'>
      <varlistentry>
        <term><varname>nameserver=</varname></term>
        <term><varname>domain=</varname></term>

        <listitem><para>Takes the IP address of a DNS server (in case of <varname>nameserver=</varname>), and
        a DNS search domain (in case of <varname>domain=</varname>). May be used multiple times, to define
        multiple DNS servers/search domains. If either of these options are specified
        <filename>/etc/resolv.conf</filename> will not be read and the <varname>DNS=</varname> and
        <varname>Domains=</varname> settings of
        <citerefentry><refentrytitle>resolved.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
        will be ignored. These two kernel command line options hence override system
        configuration.</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>
