<?xml version='1.0'?> <!--*-nxml-*-->
<!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="nss-myhostname" conditional='ENABLE_NSS_MYHOSTNAME'>

  <refentryinfo>
    <title>nss-myhostname</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>nss-myhostname</refentrytitle>
    <manvolnum>8</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>nss-myhostname</refname>
    <refname>libnss_myhostname.so.2</refname>
    <refpurpose>Hostname resolution for the locally configured system hostname</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename>libnss_myhostname.so.2</filename></para>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><command>nss-myhostname</command> is a plug-in module for the GNU Name Service Switch (NSS) functionality of
    the GNU C Library (<command>glibc</command>), primarily providing hostname resolution for the locally configured
    system hostname as returned by
    <citerefentry><refentrytitle>gethostname</refentrytitle><manvolnum>2</manvolnum></citerefentry>.  The precise
    hostnames resolved by this module are:</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) 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>
    </itemizedlist>

    <para>Various software relies on an always-resolvable local
    hostname. When using dynamic hostnames, this is traditionally
    achieved by patching <filename>/etc/hosts</filename> at the same
    time as changing the hostname. This is problematic since it
    requires a writable <filename>/etc/</filename> file system and is
    fragile because the file might be edited by the administrator at
    the same time. With <command>nss-myhostname</command> enabled,
    changing <filename>/etc/hosts</filename> is unnecessary, and on
    many systems, the file becomes entirely optional.</para>

    <para>To activate the NSS modules, add <literal>myhostname</literal> to the line starting with
    <literal>hosts:</literal> in <filename>/etc/nsswitch.conf</filename>.</para>

    <para>It is recommended to place <literal>myhostname</literal> after <literal>file</literal> and before <literal>dns</literal>.
    This resolves well-known hostnames like <literal>localhost</literal>
    and the machine hostnames locally. It is consistent with the behaviour
    of <command>nss-resolve</command>, and still allows overriding via
    <filename>/etc/hosts</filename>.</para>

    <para>Please keep in mind that <command>nss-myhostname</command> (and <command>nss-resolve</command>) also resolve
    in the other direction — from locally attached IP addresses to
    hostnames. If you rely on that lookup being provided by DNS, you might
    want to order things differently.
    </para>
  </refsect1>

  <refsect1>
    <title>Example</title>

    <para>Here is an example <filename>/etc/nsswitch.conf</filename> file that enables
    <command>nss-myhostname</command> correctly:</para>

    <!-- synchronize with other nss-* man pages and factory/etc/nsswitch.conf -->
<programlisting>passwd:         compat systemd
group:          compat [SUCCESS=merge] systemd
shadow:         compat systemd
gshadow:        files systemd


hosts:          mymachines resolve [!UNAVAIL=return] files <command>myhostname</command> dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis</programlisting>

    <para>To test, use <command>glibc</command>'s
    <citerefentry project='man-pages'><refentrytitle>getent</refentrytitle><manvolnum>1</manvolnum></citerefentry>
    tool:</para>

    <programlisting>$ getent ahosts `hostname`
::1       STREAM omega
::1       DGRAM
::1       RAW
127.0.0.2       STREAM
127.0.0.2       DGRAM
127.0.0.2       RAW</programlisting>

    <para>In this case, the local hostname is <varname>omega</varname>.</para>

  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>nss-systemd</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>nss-resolve</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>nss-mymachines</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>nsswitch.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>getent</refentrytitle><manvolnum>1</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
