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

3

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

Como isso é configurado? Por que não é padrão usar o nome do host? Apenas 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

Atualização:

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

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

    
por FreeSoftwareServers 29.10.2016 / 17:36

1 resposta

2

link

Rsyslog uses the glibc routine gethostname() or gethostbyname() to determine the hostname of the local machine. The gethostname() or gethostbyname() routine check the contents of /etc/hosts for the fully qualified domain name (FQDN) if you are not using BIND or NIS.

Mais especificamente, se a entrada localhost do seu IP vier em primeiro lugar em /etc/hosts , parecerá preceder se hosts estiver listado primeiro no nsswitch.conf ou se o nome do host não puder ser resolvido usando o DNS. link

You can check what the local machine's currently configured FQDN is by running hostname --fqdn. The output of hostname --short will be used by rsyslog when writing log messages. If you want to have full hostnames in logs, you need to add $PreserveFQDN on to the beginning of the file (before using any directive that write to files). This is because, rsyslog reads config file and applies it on-the-go and then reads the later lines.

The /etc/hosts file contains a number of lines that map FQDNs to IP addresses and that map aliases to FQDNs. See the example /etc/hosts file below:

/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 is the first item following the IP address, so gethostbyname() function will return localhost.localdomain as the local machine's FQDN. Then /var/log/messages file will use localhost as hostname.

To use somehost as the hostname. Move somehost.localdomain to the first 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 de /etc/hosts (ou o DNS) em várias circunstâncias. Lendo o código-fonte novamente, acho que rsyslog tenta resolver o nome do host do sistema (saída do comando hostname ) em um FQDN.

Ou seja, "gethostname ou gethostbyname" acima provavelmente deve ler "gethostname e gethostbyname". Então, acho que as instruções poderiam ser melhoradas, mas eles pelo menos apontam você para o lugar certo.

    
por 29.10.2016 / 21:08