Estou tentando estabelecer uma forma de configurar os hostnames dos meus servidores de forma centralizada, ou seja, a partir de algum serviço da rede que faz isso.
Eu sei que existem três nomes que identificam um servidor...
- Transiente: Recebido da configuração de rede;
- Estático: Fornecido pelo kernel;
- Bonito: Fornecido pelo usuário.
Então eu queria que meu servidor CentOS 7/8 usasse o nome do host transitório como seu nome. De forma prática, que ao logar no terminal me mostre o nome que foi obtido da rede...
[user_name@my-net-hostname ~]$
... e que a máquina possa pelo menos se identificar pelo nome...
[user_name@my-net-hostname ~]$ ping -c 4 my-net-hostname
PING my-net-hostname.my.domain (10.3.0.4) 56(84) bytes of data.
64 bytes from my-net-hostname.my.domain (10.3.0.4): icmp_seq=1 ttl=64 time=0.193 ms
64 bytes from my-net-hostname.my.domain (10.3.0.4): icmp_seq=2 ttl=64 time=0.086 ms
64 bytes from my-net-hostname.my.domain (10.3.0.4): icmp_seq=3 ttl=64 time=0.077 ms
64 bytes from my-net-hostname.my.domain (10.3.0.4): icmp_seq=4 ttl=64 time=0.098 ms
--- my-net-hostname.my.domain ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.077/0.113/0.193/0.046 ms
NOTA: No caso acima este hostname foi definido em um DHCP e também existe um DNS que conhece o nome "my-net-hostname".
OBS: Me parece que a forma correta de fazer isso é com um DHCP e um DNS, ou seja, um define o nome do servidor (hostname) e o outro define onde encontrar esse servidor, mas estou tendo dificuldade em confirmar isso em formação.
PERGUNTA: Como posso configurar os nomes de host dos meus servidores a partir de serviços na rede? O que devo usar? Um DHCP? Um DNS? Ambos?
Obrigado! =D
[Ref(s): https://askubuntu.com/questions/104918/how-to-get-the-hostname-from-a-dhcp-server , https://codingbee.net/rhcsa/rhcsa-configuring -hostnames-and-dns , https://www.redhat.com/sysadmin/set-hostname-linux ]
Isso é o que já faz, no entanto.
Em systemd-hostnamed, o nome do host "transiente" é o que está atualmente definido no kernel. O nome de host "estático" é aquele definido em /etc/hostname. Sim, o artigo da RedHat está errado. (A terminologia foi inventada pelo systemd para sua ferramenta 'hostnamed', portanto, consulte seus documentos de API para obter mais informações.)
("Pretty" nome de host nem é um nome de host, no sentido usual. É usado como um nome de "serviço" mDNS e possivelmente algumas outras coisas, mas não para pesquisa de endereço real.)
O nome de host "estático" não é aquele fornecido pelo kernel. Ele é fornecido por você por meio
hostnamectl
da edição/etc/hostname
– ele é fornecido apenas ao kernel na inicialização, não o contrário.O nome de host "transitório" é o nome de host do kernel. Ele também é fornecido por você, desta vez através do
hostname
comando (não confundir com hostnamectl) ou via /proc/sys/kernel/hostname. É apenas que o nome do host transitório pode ser substituído pela rede, mas quando o sistema inicializa, ele ainda é inicializado a partir do estático (ou seja, de /etc/hostname)."Configuração de rede" aqui significa principalmente DHCP. Normalmente, o cliente DHCP relata seu próprio nome de host atual e o servidor DHCP apenas os coleta, mas o servidor pode incluir um nome de host diferente que deseja que o cliente use. Se o cliente receber um novo nome de host via DHCP, ele se tornará o nome de host "transitório", também conhecido como nome de host do kernel. (Não há muito sentido em realmente fazer isso, especialmente para servidores de longa duração.)
O nome do host não está definido no DNS. No entanto, faz sentido que esteja em seu domínio DNS, pois geralmente é esse o objetivo de um nome de host.
Se o computador pode pingar seu próprio nome de host depende de várias coisas (DNS entre elas), mas geralmente seu software de rede tentará garantir que isso funcione mesmo sem DNS - seja atualizando /etc/hosts ou usando libnss-myhostname (que sempre fornece uma resposta virtual para o nome de host transitório atual do sistema). Várias coisas (como sudo) podem quebrar misteriosamente se a máquina não puder resolver seu próprio nome para algo pelo menos.
(Na verdade, várias coisas podem quebrar misteriosamente se você deixar a máquina atualizar dinamicamente seu nome de host transitório do DHCP também. Se você habilitar isso em um desktop/laptop e seus programas gráficos X11 começarem a falhar com erros "Nenhum protocolo especificado", geralmente é a causa.)
A parte "domínio" geralmente não é armazenada no campo do nome do host. Às vezes, é novamente definido em /etc/hosts, mas também pode ser definido por meio do DNS. Vou linkar para um post antigo que já fiz sobre isso...
Além disso, onde o artigo da RedHat fala sobre conflitos e "hostname-1", ele se aplica apenas ao serviço Avahi mDNS, que rastreia o nome mDNS do sistema de forma independente dos nomes de host globais. (A detecção de colisão em si é feita apenas dentro do mDNS.) Ou seja, se houver outro host compatível com mDNS com o mesmo nome, o Avahi escolherá um novo nome mDNS-1 ou -2, mas isso não afetará o nome do host do sistema de qualquer maneira.
"DHCP" e "DNS" não são itens contáveis; são protocolos abstratos. Você pode ter "uma concessão DHCP" ou "um servidor DHCP" ou "um domínio DNS", mas não faz sentido falar em "um DHCP" ou "um DNS".