Por que 'host' e 'nslookup' no Solaris 10 resolve nomes de hosts, enquanto 'ping' e 'telnet' não?

7
  • /etc/resolv.conf contém um servidor de nomes que está ativo (conforme relatado pelo comando ping )
  • host ou nslookup é capaz de resolver google.com

    $ host google.com
    google.com has address 74.125.228.3
    google.com has address 74.125.228.4
    ...
    $ nslookup google.com
    ...
    Non-authorative answer:
    Name:   google.com
    Address: 74.125.228.0
    Name:   google.com
    Address: 74.125.228.1
    ..
    
  • ping ou telnet não conseguiu resolver google.com

    $ ping google.com
    ping: unknown host google.com
    $ telnet google.com
    google.com: node name or service name not known
    
por Adam Siemion 10.06.2013 / 16:46

3 respostas

10

Parece que ping e telnet não conseguiram resolver nomes de host porque não estavam consultando o servidor DNS configurado ( host e nslookup parecem estar usando código de consulta DNS diferente). A solução é:

Substitua /etc/nsswitch.conf por /etc/nsswitch.dns :

cp /etc/nsswitch.dns /etc/nsswitch.conf
    
por 10.06.2013 / 16:46
1

Adam, você não nos diz qual versão do Solaris você está usando.

Todas as pesquisas de host no Solaris passam pelo daemon do Solaris Naming Service. A única exceção é nslookup , que faz uma consulta direta ao DNS em um servidor DNS. O daemon do Serviço de Nomeação basicamente atua como um cache de informações de nomenclatura. Outros sistemas operacionais possuem serviços semelhantes. O Serviço de Nomes Solaris está configurado no arquivo /etc/nsswitch.conf .

Eu realmente espero que você esteja em uma versão mais antiga, como o Solaris 10 ou anterior. Caso contrário, você já editou manualmente um arquivo que não deveria mais editar: o arquivo /etc/nsswitch.conf .

De qualquer forma, digamos que você esteja no 10 ou mais antigo: Seu /etc/nsswitch.conf deve ter uma entrada como esta:

hosts:  files dns

Isso informa ao Solaris Naming Service que os hosts devem ser pesquisados primeiro no arquivo local (por exemplo, /etc/hosts ) e e no DNS. É claro que você também só tem "dns" aqui, mas as pessoas normalmente o querem para que /etc/hosts possa anular o que está no DNS.

Agora você pode ter que reiniciar o daemon do serviço de nomes:

svcadm restart /system/name-service-cache

Você sempre pode verificar a configuração do serviço de nomes com o comando Solaris getent :

getent hosts google.com

O comando getent verifica se o Serviço de Nomes do Solaris funciona conforme o esperado. Você não pode usar nslookup para verificar isso.



Se você está no 11 Solaris , então você pode usar a resposta do nolan600 para esta questão . O comando getent também se aplica ao Solaris 11.



Espero que você possa usar um pouco disso.

    
por 18.06.2013 / 01:43
0
root@solaris:~# svccfg -s name-service/switch
svc:/system/name-service/switch> setprop config/host = "files dns"
svc:/system/name-service/switch> listprop config
config                      application
config/default             astring     files
config/value_authorization astring     solaris.smf.value.name-service.switch
config/printer             astring     "user files"
config/host                astring     "files dns"
svc:/system/name-service/switch> exit
root@solaris11:~# svcadm refresh name-service/switch 
    
por 13.07.2017 / 14:24

Tags