Por que alguns dos meus logs usam Localhost e outros Hostname - Servidores Diferentes

Por que alguns dos meus logs usam Localhost e outros Hostname - Servidores Diferentes

Estou depurando algo relacionado a logins LDAP,Login SSH Ldap não funciona - As mesmas configurações funcionaram em mais de 20 outros servidores - Ubuntue percebi que em alguns servidores os logs usam localhost e em outros possuem o hostname. Ter o nome do host parece fazer mais sentido, especialmente se centralizarmos os arquivos de log.

Como isso está configurado? Por que não é padrão usar o nome do host? Só meio que me deixou curioso...

Exemplos :

Oct 29 11:23:56 daily sshd[20625]: pam_unix(sshd:session): session opened for user LDAPUSERNAME by (uid=0)

Ou

Oct 29 10:56:36 localhost sshd[2560]: pam_unix(sshd:auth): check pass; user unknown

Atualizar:

user@qa-ops:~$ hostname
qa-ops
user@daily:~$ hostname
daily.domain.com

Talvez tenha a ver com o Daily ter um nome de domínio completo no nome do host? Sempre pensei que /etc/hostname deveria ser apenas a parte curta do nome do host, não o hostname.domain.com completo etc.

Responder1

https://wiki.archlinux.org/index.php/rsyslog#Configure_Hostname

Rsyslog usa a rotina glibc gethostname() ou gethostbyname() para determinar o nome do host da máquina local. A rotina gethostname() ou gethostbyname() verifica o conteúdo do /etc/hostsnome de domínio totalmente qualificado (FQDN) se você não estiver usando BIND ou NIS.

Mais especificamente, se a localhostentrada do seu IP vier primeiro em /etc/hosts, então ela terá precedência.

(Supondo que esse filesseja o primeiro valor na hosts:linha /etc/nsswitch.conf. Ou, alternativamente, que seu nome de host não possa ser resolvido usando DNS).


A página do Arch Wiki continua explicando:

Você pode verificar qual é o FQDN atualmente configurado da máquina local executando hostname --fqdn. A saída de hostname --short será usada pelo rsyslog ao escrever mensagens de log. Se você deseja ter nomes de host completos nos logs, você precisa adicionar $PreserveFQDN no início do arquivo (antes de usar qualquer diretiva que grave em arquivos). Isso ocorre porque o rsyslog lê o arquivo de configuração e o aplica em trânsito e, em seguida, lê as linhas posteriores.

O arquivo /etc/hosts contém várias linhas que mapeiam FQDNs para endereços IP e que mapeiam aliases para FQDNs. Veja o exemplo do arquivo /etc/hosts abaixo:

/etc/hosts

#<ip-address> <hostname.domain.org>   <hostname>
#<ip-address>      <actual FQDN>                       <aliases>
127.0.0.1 localhost.localdomain somehost.localdomain  localhost somehost
::1               localhost.localdomain somehost.localdomain  localhost somehost

localhost.localdomain é o primeiro item após o endereço IP, então a função gethostbyname() retornará localhost.localdomain como o FQDN da máquina local. Então o arquivo /var/log/messages usará localhost como nome do host.

Para usar somehost como nome do host. Mova somehost.localdomain para o primeiro item:

/etc/hosts

#<ip-address> <hostname.domain.org>                           <hostname>
#<ip-address>      <actual FQDN>                                              <aliases>
127.0.0.1 somehost.localdomain localhost.localdomain  localhost somehost
::1               somehost.localdomain localhost.localdomain  localhost somehost

Pode ser difícil dizer exatamente como as informações relevantes são selecionadas /etc/hosts(ou no DNS) em diversas circunstâncias. Lendo o código-fonte novamente, acho que rsyslogtenta resolver o nome do host do sistema (saída do hostnamecomando) em um FQDN.

Eu acho que isso significa que onde diz "gethostname ou gethostbyname" acima, deveria realmente dizer "gethostnameegethostbyname". Portanto, essas instruções provavelmente poderiam ser melhoradas, mas pelo menos apontam para o lugar certo.

Há também uma pergunta muito semelhante feita nolista de discussão de usuários rsyslog.

informação relacionada