Bagaimana cara mengatur nama host dan nama domain dengan benar?

33

Saya menyewa server, menjalankan Ubuntu 16.04 di sebuah perusahaan, beri nama company.org.

Saat ini, server saya dikonfigurasi seperti ini:

  • nama host: server737263
  • nama domain: company.org

Inilah FQDN saya:

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

Ini tidak mengejutkan.

Saya juga menyewa nama domain, sebut saja domain.org. Apa yang ingin saya lakukan adalah mengubah nama server saya menjadi server1.domain.org.

Ini berarti mengonfigurasi nama host saya sebagai server1dan nama domain saya sebagai domain.org.

Bagaimana saya bisa melakukannya dengan benar?

Memang, halaman manual hostnametidak jelas. Setidaknya bagi saya:

HOSTNAME (1)

[...]

SET NAME

  • Saat dipanggil dengan satu argumen atau dengan opsi --file, perintah tersebut mengatur nama host atau nama domain NIS / YP. hostname menggunakan fungsi sethostname (2), sedangkan ketiga domainname, ypdomainname, dan nisdomainname menggunakan setdomainname (2). Perhatikan, ini hanya efektif hingga reboot berikutnya. Edit / etc / hostname untuk perubahan permanen.

[...]

FQDN

  • Anda tidak dapat mengubah FQDN dengan nama host atau nama domain.

[...]

Jadi sepertinya pengeditan /etc/hostnametidak cukup? Karena jika itu benar-benar mengubah nama host, itu akan mengubah FQDN. Ada juga trik yang saya baca untuk mengubah nama host dengan perintah sysctl kernel.hostname=server1, tetapi tidak ada yang mengatakan apakah ini cara yang benar atau trik yang jelek.

Begitu:

  1. Apa cara yang benar untuk mengatur nama host?

  2. Apa cara yang benar untuk mengatur nama domain?

titsou
sumber

Jawaban:

31

Mengatur nama host Anda:

  • Anda ingin mengedit /etc/hostnamedengan nama host baru Anda.

  • Lalu, jalankan sudo hostname $(cat /etc/hostname).

Menetapkan domain Anda:

  • Lalu, di /etc/resolvconf/resolv.conf.d/head, Anda akan menambahkan lalu baris domain your.domain.name(bukan FQDN Anda, hanya nama domainnya).

  • Kemudian, jalankan sudo resolvconf -uuntuk memperbarui /etc/resolv.conf(alternatifnya, hanya mereproduksi perubahan sebelumnya ke Anda /etc/resolv.conf).

Kedua:

Akhirnya, perbarui /etc/hostsfile Anda . Setidaknya harus ada satu baris yang dimulai dengan salah satu IP Anda (loopback atau tidak), FQDN Anda dan nama host Anda. mengeluarkan alamat ipv6, file host Anda dapat terlihat seperti ini:

127.0.0.1 localhost
1.2.3.4 service.domain.com service
SYN
sumber
7
Kedua file conf tersebut mengatakan DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENdi server saya (versi yang sama).
Walf
7
Jangan tertipu oleh kenyataan bahwa peringatan "JANGAN EDIT" muncul /etc/resolvconf/resolv.conf.d/head. Semua yang ada di file kepala adalah prepended ke /etc/resolv.conffile output yang dihasilkan , jadi itu sebabnya peringatan ada di sana, sehingga muncul di hasil akhir. Melemparkan saya untuk loop pada awalnya.
njbair
7
Ini tampaknya tidak berlaku untuk 18,04 LTS - tidak ada file seperti itu /etc/resolvconf/resolv.conf.d/headdan tidak ada utilitas seperti itu resolvconf.
inopinatus
2
Anda dapat memperbarui jawabannya denganhostnamectl
Dering Ø
1
Perhatikan juga bahwa jika Anda menggunakan AWS Anda juga harus mempertahankan nama host setelah reboot - sudo nano /etc/cloud/cloud.cfgperbarui preserve_hostname: true(defaultnya adalah false).
bshea
5

sudo nano / etc / hostname

hostname.domain.com

sudo nano / etc / hosts

127.0.0.1   hostname.domain.com hostname localhost

REBOOT!

HARUS MEMILIKI HOSTNAME TUNGGAL setelah FQDN di file / etc / hosts. Berfungsi dengan baik di Ubuntu 18.04.1 dan semua versi lainnya. Di EC2 dan di tempat lain.

Tidak main-main dengan file penyelesaian atau apa pun.

Itu menunjukkan nama host di shell dan kemudian memiliki FQDN saat Anda membutuhkannya.

Richard Westby-Nunn
sumber
1

~ $ man nama host

[…]
       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.

[…]

Ini ditunjukkan dengan baik oleh poige di utas lain dan persis apa yang diusulkan Lutz di sini.

Anda tidak harus memasukkan fqdn ke dalam /etc/hostname.

karlsebal
sumber
1

Petunjuk ditulis melawan Ubuntu 18.04.3 LTS (bionik)

Ubah nama host:

sudo hostnamectl set-hostname server1

Periksa hasil dengan menjalankan 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

Ubah domain melalui manajer jaringan baru, Netplan , dengan mengedit /etc/netplan/01-netcfg.yamldan mengubah searchparameter:

sudoedit /etc/netplan/01-netcfg.yaml

Konfigurasi sampel:

# 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 ]

Uji perubahan dengan masuk untuk kedua kalinya, dan jalankan sudo netplan trydi salah satu sesi dan periksa pengaturan di yang lain:

# 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

Semuanya baik-baik saja, tekan ENTER saat sudo netplan trydiminta untuk membuat semuanya permanen.

RobM
sumber
0

Saya mencoba mengubah entri domain saya dari myhome.localmenjadi myhome.lan saya harus mengedit /etc/hostsfile dan /etc/network/interfacesfile. /etc/hostsFile saya sekarang terlihat seperti:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

dan /etc/network/interfacesfile saya sekarang terlihat seperti:

# 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

Ini bekerja dengan baik untuk saya.

Lutz
sumber