Як правильно встановити ім'я хоста та доменне ім’я?


33

Я орендую сервер під керуванням Ubuntu 16.04 у компанії, назвемо його company.org.

Наразі мій сервер налаштований так:

  • ім'я хоста: server737263
  • Доменне ім'я: company.org

Ось мій FQDN:

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

Це не дивно.

Я також орендую доменне ім’я, давайте назвати його domain.org. Що я хотів би зробити, це перейменувати мій сервер як server1.domain.org.

Це означає конфігурацію мого імені хоста як server1і мого доменного імені як domain.org.

Як я можу це зробити правильно?

Дійсно, hostnameрозміщення сторінки не зрозуміло. Щонайменше для мене:

HOSTNAME (1)

[...]

Встановити ім'я

  • При виклику з одним аргументом або з параметром --file команди встановлюють ім'я хоста або доменне ім'я NIS / YP. ім'я хоста використовує функцію sethostname (2), тоді як усі три доменні імена, ypdomainname та nisdomainname використовують setdomainname (2). Зауважте, що це діє лише до наступного перезавантаження. Редагувати / etc / ім'я хоста для постійних змін.

[...]

FQDN

  • Ви не можете змінити FQDN з ім'ям хоста або dnsdomainname.

[...]

Тож здається, що редагування /etc/hostnameнедостатньо? Тому що якби воно дійсно змінило ім'я хоста, воно змінило б FQDN. Я також читаю трюк, щоб змінити ім'я хоста за допомогою команди sysctl kernel.hostname=server1, але нічого не говорить про те, чи це правильний спосіб чи некрасивий трюк.

Так:

  1. Який правильний спосіб встановити ім'я хоста?

  2. Який правильний спосіб встановити доменне ім’я?

Відповіді:


31

Встановлення імені хоста:

  • Вам потрібно змінити /etc/hostnameнове ім’я хоста.

  • Потім бігайте sudo hostname $(cat /etc/hostname).

Налаштування вашого домену:

  • Потім у /etc/resolvconf/resolv.conf.d/head, ви додасте рядок domain your.domain.name(не ваш FQDN, а лише ім'я домену).

  • Потім запустіть, sudo resolvconf -uщоб оновити свої /etc/resolv.conf(або просто відтворіть попередню зміну у свою /etc/resolv.conf).

Обидва:

Нарешті, оновіть свій /etc/hostsфайл. Повинно бути хоча б один рядок, починаючи з одного з вашого IP-адреси (зворотного зв'язку чи ні), вашого FQDN та вашого імені хоста. зібравши адреси ipv6, файл хостів може виглядати так:

127.0.0.1 localhost
1.2.3.4 service.domain.com service

7
Обидва ці конф-файли кажуть DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENна моєму сервері (однакова версія).
Вальф

7
Не обманюйте той факт, що в екрані з'являється попередження "НЕ редагуйте" /etc/resolvconf/resolv.conf.d/head. Все, що знаходиться в головному файлі, є попередньою для отриманого /etc/resolv.confвихідного файлу, тому тому попередження знаходиться там, щоб воно відображалось у кінцевому результаті. Спочатку кинув мене на петлю.
njbair

7
Схоже, це не стосується 18.04 LTS - немає такого файлу /etc/resolvconf/resolv.conf.d/headі немає такої утиліти resolvconf.
inopinatus

2
Ви можете оновити відповідь за допомогоюhostnamectl
Дзвінок Ø

1
Зауважте також, що якщо ви використовуєте AWS, вам також потрібно буде зберегти ім'я хоста після перезавантаження - sudo nano /etc/cloud/cloud.cfgоновлення preserve_hostname: true(за замовчуванням є false).
bshea

5

sudo nano / etc / ім'я хоста

hostname.domain.com

sudo nano / тощо / господарі

127.0.0.1   hostname.domain.com hostname localhost

ПОВЕРНУТИСЯ!

ОБОВ'ЯЗКОВО мати єдине HOSTNAME після FQDN у файлі / etc / hosts. Відмінно працює на Ubuntu 18.04.1 та всіх інших версіях. На EC2 та інших місцях.

Не возився з файлом розв’язання чи чим-небудь іншим.

Це показує ім'я хоста в оболонці, а потім має FQDN, коли вам це потрібно.


1

~ $ man hostname

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

[…]

На це люб'язно вказав пойг в іншій нитці і саме це запропонував тут Лутц.

Ви не повинні ставити свій fqdn /etc/hostname.


1

Інструкції, написані проти Ubuntu 18.04.3 LTS (біонічний)

Змінення імені хоста:

sudo hostnamectl set-hostname server1

Перевірте результат, запустивши 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

Змініть домен через новий мережевий менеджер Netplan , відредагувавши /etc/netplan/01-netcfg.yamlта змінивши searchпараметр:

sudoedit /etc/netplan/01-netcfg.yaml

Конфігурація зразка:

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

Перевірте зміни, увійшовши вдруге та запустивши sudo netplan tryв одному із сеансів та перевіривши налаштування в іншому:

# 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

Все добре, натисніть клавішу ENTER під час sudo netplan tryпідказок, щоб зробити речі постійними.


0

Я намагався змінити вхід свого домену з myhome.localна, myhome.lan мені довелося редагувати /etc/hostsфайл і /etc/network/interfacesфайл. /etc/hostsЗараз мій файл виглядає так:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

і мій /etc/network/interfacesфайл зараз виглядає так:

# 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

Це прекрасно працює для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.