<?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 adresses 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 <command>getent</command> 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>
