Como definir corretamente o nome do host e o nome do domínio?


33

Estou alugando um servidor, executando o Ubuntu 16.04 em uma empresa, vamos chamá-lo de company.org.

Atualmente, meu servidor está configurado assim:

  • nome de anfitrião: server737263
  • nome do domínio: company.org

Aqui está o meu FQDN:

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

Isto não é surpreendente.

Também estou alugando um nome de domínio, vamos nomear domain.org. O que eu gostaria de fazer seria renomear meu servidor como server1.domain.org.

Isso significa configurar meu nome de host como server1e meu nome de domínio como domain.org.

Como posso fazer isso corretamente?

De fato, a página de manual para hostnamenão é clara. Para mim pelo menos:

HOSTNAME (1)

[...]

NOME DO CONJUNTO

  • Quando chamados com um argumento ou com a opção --file, os comandos definem o nome do host ou o nome de domínio NIS / YP. hostname usa a função sethostname (2), enquanto todos os três nomes de domínio, ypdomainname e nisdomainname usam setdomainname (2). Observe que isso só é efetivo até a próxima reinicialização. Edite / etc / hostname para alteração permanente.

[...]

THE FQDN

  • Você não pode alterar o FQDN com nome do host ou dnsdomainname.

[...]

Então parece que a edição /etc/hostnamenão é suficiente? Porque se realmente mudasse o nome do host, teria mudado o FQDN. Também há um truque que eu li para alterar o nome do host com o comando sysctl kernel.hostname=server1, mas nada diz se esse é o caminho correto ou se é um truque feio.

Tão:

  1. Qual é a maneira correta de definir o nome do host?

  2. Qual é a maneira correta de definir o nome do domínio?

Respostas:


31

Definindo seu nome de host:

  • Você deseja editar /etc/hostnamecom seu novo nome de host.

  • Então corra sudo hostname $(cat /etc/hostname).

Definindo seu domínio:

  • Em seguida, em /etc/resolvconf/resolv.conf.d/head, você adicionará a linha domain your.domain.name(não o seu FQDN, apenas o nome do domínio).

  • Em seguida, execute sudo resolvconf -ua atualização /etc/resolv.conf(alternativamente, basta reproduzir a alteração anterior na sua /etc/resolv.conf).

Ambos:

Por fim, atualize seu /etc/hostsarquivo. Deve haver pelo menos uma linha começando com um de seu IP (loopback ou não), seu FQDN e seu nome de host. cumprindo os endereços ipv6, o arquivo hosts pode ficar assim:

127.0.0.1 localhost
1.2.3.4 service.domain.com service

7
Ambos os arquivos conf dizem DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENno meu servidor (mesma versão).
Walf

7
Não se deixe enganar pelo fato de o aviso "NÃO EDITAR" aparecer em /etc/resolvconf/resolv.conf.d/head. Tudo no arquivo principal é anexado ao /etc/resolv.confarquivo de saída resultante ; é por isso que o aviso está lá, para que apareça no resultado final. Me jogou para dar uma volta no começo.
Njbair

7
Isso parece não se aplicar ao 18.04 LTS - não existe esse arquivo /etc/resolvconf/resolv.conf.d/heade não existe esse utilitário resolvconf.
Inopinatus

2
Você pode atualizar a resposta com:hostnamectl
Ring Ø

1
Observe também que, se você usar a AWS, também precisará preservar o nome do host após a reinicialização - sudo nano /etc/cloud/cloud.cfgupdate preserve_hostname: true(o padrão é false).
bshea 24/06

5

sudo nano / etc / hostname

hostname.domain.com

sudo nano / etc / hosts

127.0.0.1   hostname.domain.com hostname localhost

REBOOT!

DEVE TER UM NOME DE HOSTNAME após o FQDN no arquivo / etc / hosts. Funciona bem no Ubuntu 18.04.1 e em todas as outras versões. No EC2 e em outros lugares.

Não mexeu com o arquivo de resolução ou qualquer outra coisa.

Isso mostra o nome do host no shell e, em seguida, possui o FQDN quando você precisar.


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.

[…]

Isso foi gentilmente apontado por poige em outro tópico e é exatamente o que Lutz propôs aqui.

Você não deve colocar seu fqdn /etc/hostname.


1

Instruções escritas contra o Ubuntu 18.04.3 LTS (biônico)

Mude o nome do host:

sudo hostnamectl set-hostname server1

Verifique o resultado executando 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

Altere o domínio através do novo gerenciador de rede, Netplan , editando /etc/netplan/01-netcfg.yamle alterando o searchparâmetro:

sudoedit /etc/netplan/01-netcfg.yaml

Exemplo de configuração:

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

Teste as alterações efetuando login uma segunda vez e executando sudo netplan tryem uma das sessões e verificando as configurações na outra:

# 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

Está tudo bem, pressione ENTER no sudo netplan tryprompt para tornar as coisas permanentes.


0

Tentei alterar minha entrada de domínio de myhome.localpara myhome.lan eu tive que editar o /etc/hostsarquivo e o /etc/network/interfacesarquivo. Meu /etc/hostsarquivo agora se parece com:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

e meu /etc/network/interfacesarquivo agora se parece com:

# 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

Isso funciona bem para mim.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.