Как правильно установить имя хоста и доменное имя?

33

Я арендую сервер под управлением Ubuntu 16.04 в компании, назовем его company.org.

В настоящее время мой сервер настроен так:

  • Имя хоста: server737263
  • доменное имя: company.org

Вот мое полное доменное имя:

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

Это не удивительно.

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

Это означает настройку моего имени хоста как server1и моего имени домена как domain.org.

Как я могу сделать это правильно?

Действительно, справочная страница для hostnameне ясна. Для меня по крайней мере:

HOSTNAME (1)

[...]

ИМЯ НАБОРА

  • При вызове с одним аргументом или с параметром --file команды задают имя хоста или имя домена NIS / YP. hostname использует функцию sethostname (2), в то время как все три доменных имени, ypdomainname и nisdomainname используют setdomainname (2). Обратите внимание, что это действует только до следующей перезагрузки. Отредактируйте / etc / hostname для постоянного изменения.

[...]

Полное доменное имя

  • Вы не можете изменить полное доменное имя с именем хоста или dnsdomainname.

[...]

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

Так:

  1. Как правильно установить имя хоста?

  2. Как правильно установить доменное имя?

titsou
источник

Ответы:

31

Установка вашего имени хоста:

  • Вы хотите редактировать /etc/hostnameс вашим новым именем хоста.

  • Тогда беги sudo hostname $(cat /etc/hostname).

Настройка вашего домена:

  • Затем /etc/resolvconf/resolv.conf.d/headвы добавите строку domain your.domain.name(не ваше полное доменное имя, а просто имя домена).

  • Затем запустите sudo resolvconf -uдля обновления вашего /etc/resolv.conf(в качестве альтернативы, просто воспроизведите предыдущее изменение в вашем /etc/resolv.conf).

И то и другое:

Наконец, обновите ваш /etc/hostsфайл. Должна быть хотя бы одна строка, начинающаяся с одного из ваших IP (loopback или нет), вашего FQDN и вашего имени хоста. вычеркивая адреса ipv6, ваш файл hosts может выглядеть так:

127.0.0.1 localhost
1.2.3.4 service.domain.com service
SYN
источник
7
Оба этих файла conf говорят 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

hostname.domain.com

sudo nano / etc / hosts

127.0.0.1   hostname.domain.com hostname localhost

ПЕРЕЗАГРУЖАТЬ!

ДОЛЖНО ИМЕТЬ ОДИН ХОЗЯЙМ после полного доменного имени в файле / etc / hosts. Прекрасно работает на Ubuntu 18.04.1 и всех других версиях. На EC2 и в других местах.

Не связывался с файлом разрешения или чем-то еще.

Это показывает имя хоста в оболочке, а затем имеет полное доменное имя, когда вам это нужно.

Ричард Уэстби-Нанн
источник
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.

karlsebal
источник
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приглашение, чтобы сделать вещи постоянными.

RobM
источник
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

Он отлично работает для меня.

Лутц
источник