Jak poprawnie ustawić nazwę hosta i nazwę domeny?

33

Wynajmuję serwer, uruchamiam Ubuntu 16.04 w firmie, nazwijmy ją company.org.

Obecnie mój serwer jest skonfigurowany w następujący sposób:

  • nazwa hosta: server737263
  • Nazwa domeny: company.org

Oto moja nazwa FQDN:

user@server737263:~ $ hostname --fqdn
server737263.company.org

To nie jest zaskakujące.

Wypożyczam też nazwę domeny, nazwijmy ją domain.org. Chciałbym zmienić nazwę mojego serwera na server1.domain.org.

Oznacza to skonfigurowanie mojej nazwy hosta jako server1i mojej nazwy domeny jako domain.org.

Jak mogę to zrobić poprawnie?

Rzeczywiście, strona man hostnamenie jest jasna. Dla mnie przynajmniej:

NAZWA HOSTA (1)

[...]

USTAW NAZWĘ

  • Po wywołaniu z jednym argumentem lub z opcją --file polecenia ustawiają nazwę hosta lub nazwę domeny NIS / YP. nazwa_hosta używa funkcji sethostname (2), podczas gdy wszystkie trzy nazwy domeny, ypdomainname i nisdomainname używają setdomainname (2). Pamiętaj, że działa to tylko do następnego uruchomienia. Edytuj / etc / hostname, aby zmienić na stałe.

[...]

FQDN

  • Nie można zmienić nazwy FQDN za pomocą nazwy hosta ani nazwy domeny dnsdomain.

[...]

Wygląda więc na to, że edycja /etc/hostnamenie wystarczy? Ponieważ gdyby naprawdę zmienił nazwę hosta, zmieniłby nazwę FQDN. Jest też sztuczka, którą czytam, aby zmienić nazwę hosta za pomocą polecenia sysctl kernel.hostname=server1, ale nic nie mówi, czy jest to właściwy sposób, czy brzydka sztuczka.

Więc:

  1. Jaki jest prawidłowy sposób ustawienia nazwy hosta?

  2. Jaki jest prawidłowy sposób ustawienia nazwy domeny?

titsou
źródło

Odpowiedzi:

31

Ustawianie nazwy hosta:

  • Będziesz chciał edytować /etc/hostnameswoją nową nazwę hosta.

  • Następnie biegnij sudo hostname $(cat /etc/hostname).

Ustawianie domeny:

  • Następnie /etc/resolvconf/resolv.conf.d/headdodasz wiersz domain your.domain.name(nie twoją FQDN, tylko nazwę domeny).

  • Następnie uruchom, sudo resolvconf -uaby zaktualizować /etc/resolv.conf(alternatywnie, po prostu skopiuj poprzednią zmianę do swojej /etc/resolv.conf).

Obie:

Na koniec zaktualizuj /etc/hostsplik. Powinna istnieć co najmniej jedna linia zaczynająca się od jednego z adresów IP (sprzężenie zwrotne lub nie), nazwy FQDN i nazwy hosta. po odczytaniu adresów IPv6 plik hosts może wyglądać następująco:

127.0.0.1 localhost
1.2.3.4 service.domain.com service
SYN
źródło
7
Oba te pliki conf mówią DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENna moim serwerze (ta sama wersja).
Walf
7
Nie daj się zwieść faktowi, że ostrzeżenie „NIE EDYTUJ” pojawia się w /etc/resolvconf/resolv.conf.d/head. Wszystko w pliku nagłówkowym jest dołączane do wynikowego /etc/resolv.confpliku wyjściowego, dlatego właśnie tam jest ostrzeżenie, dzięki czemu pojawia się w wyniku końcowym. Najpierw rzucił mnie na pętlę.
njbair
7
Nie dotyczy to 18.04 LTS - nie ma takiego pliku /etc/resolvconf/resolv.conf.d/headi nie ma takiego narzędzia resolvconf.
inopinatus
2
Możesz zaktualizować odpowiedź za pomocąhostnamectl
Pierścień Ø
1
Pamiętaj również, że jeśli używasz AWS, musisz także zachować nazwę hosta po ponownym uruchomieniu - sudo nano /etc/cloud/cloud.cfgaktualizacja preserve_hostname: true(domyślnie jest false).
bshea
5

sudo nano / etc / hostname

hostname.domain.com

sudo nano / etc / hosts

127.0.0.1   hostname.domain.com hostname localhost

RESTART!

MUSI MIEĆ POJEDYNCZĄ NAZWĘ HOSTNĄ po nazwie FQDN w pliku / etc / hosts. Działa dobrze na Ubuntu 18.04.1 i wszystkich innych wersjach. Na EC2 i gdzie indziej.

Nie zadzierał z plikiem rozstrzygania ani niczym innym.

Pokazuje nazwę hosta w powłoce, a następnie ma nazwę FQDN, gdy jest potrzebna.

Richard Westby-Nunn
źródło
1

~ $ man nazwa hosta

[…]
       You cannot change the FQDN with hostname or dnsdomainname.

       The  recommended  method  of  setting the FQDN is to make the hostname be an alias for the fully qualified name using /etc/hosts,
       DNS, or NIS. For example, if the hostname was "ursula", one might have a line in /etc/hosts which reads

              127.0.1.1    ursula.example.com ursula

       Technically: The FQDN is the name getaddrinfo(3) returns for the host name returned by gethostname(2).  The DNS  domain  name  is
       the part after the first dot.

       Therefore  it  depends  on the configuration of the resolver (usually in /etc/host.conf) how you can change it. Usually the hosts
       file is parsed before DNS or NIS, so it is most common to change the FQDN in /etc/hosts.

       If a machine has multiple network interfaces/addresses or is used in a mobile environment,  then  it  may  either  have  multiple
       FQDNs/domain  names  or  none at all. Therefore avoid using hostname --fqdn, hostname --domain and dnsdomainname.  hostname --ip-
       address is subject to the same limitations so it should be avoided as well.

[…]

Zostało to uprzejmie wskazane przez poige w innym wątku i jest dokładnie tym, co zaproponował tutaj Lutz.

Nie powinieneś wkładać swojego fqdn /etc/hostname.

Karlsebal
źródło
1

Instrukcje napisane przeciwko Ubuntu 18.04.3 LTS (bionic)

Zmień nazwę hosta:

sudo hostnamectl set-hostname server1

Sprawdź wynik, uruchamiając hostnamectl:

root@www:/# hostnamectl
   Static hostname: server1       <-- Check this value
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 202c4264b06d49e48cfe72599781a798
           Boot ID: 43654fe8bdbf4387a0013ab30a155872
    Virtualization: xen
  Operating System: Ubuntu 18.04.3 LTS
            Kernel: Linux 4.15.0-65-generic
      Architecture: x86-64

Zmień domenę za pomocą nowego menedżera sieci, Netplan , edytując /etc/netplan/01-netcfg.yamli zmieniając searchparametr:

sudoedit /etc/netplan/01-netcfg.yaml

Przykładowa konfiguracja:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
      nameservers:
          search: [ domain.org ]

Przetestuj zmiany, logując się po raz drugi, uruchamiając sudo netplan tryw jednej sesji i sprawdzając ustawienia w drugiej:

# netplan try
Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in  97 seconds
Configuration accepted.
# systemd-resolve --status
...
Link 2 (eth0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 8.8.8.8
                      8.8.4.4
          DNS Domain: domain.org      <-- Check this value
# cat /etc/resolv.conf
...
nameserver 127.0.0.53
options edns0
search domain.org    <-- Check this value
# hostname -f
server1.domain.org

Wszystko jest w porządku, naciśnij ENTER po sudo netplan tryznaku zachęty, aby wszystko było trwałe.

RobM
źródło
0

Próbowałem zmienić wpis mojej domeny z myhome.localna myhome.lan musiałem edytować /etc/hostsplik i /etc/network/interfacesplik. Mój /etc/hostsplik wygląda teraz następująco:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

a mój /etc/network/interfacesplik wygląda teraz następująco:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp2s0
iface enp2s0 inet static
    address 192.168.3.2
    netmask 255.255.255.0
    network 192.168.3.0
    broadcast 192.168.3.255
    gateway 192.168.3.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.3.1
    dns-search myhome.lan

Działa dla mnie dobrze.

Lutz
źródło