A resolução de nomes não funciona, mas o nslookup não

7

Estou tendo um problema muito estranho com a minha instalação do Solaris 11. A resolução de DNS simplesmente não funciona, mas, por incrível que pareça, o nslookup funciona e a conectividade é boa:

root@solarisxyz:~# ping stackexchange.com
ping: unknown host stackexchange.com
root@solarisxyz:~# nslookup stackexchange.com
Server:         10.x.x.x (DNS)
Address:        10.x.x.x#y

Non-authoritative answer:
Name:   stackexchange.com
Address: 64.34.119.12

root@solarisxyz:~# ping 64.34.119.12
64.34.119.12 is alive

Seções relevantes dos arquivos:

  • /etc/resolv.conf : (esta é a mesma coisa que nossas caixas Linux têm)

    domain us.oracle.com
    nameserver 10.x.x.x
    nameserver 10.x.x.x  
    
  • / etc / hosts :

    # ::1 solarisxyz localhost (commented out)
    127.0.0.1 localhost loghost solarisxyz
    
  • /etc/nsswitch.conf :

    hosts:    files dns
    # pretty much everything else set to files
    
por NullUser 19.11.2011 / 03:55

5 respostas

7

A configuração da rede mudou radicalmente a partir do Solaris 11. O nsswitch.conf é apenas informativo agora. Supondo que você não esteja no modo automático, caso em que o DNS teria sido configurado corretamente, aqui está o novo procedimento:

link

    
por 19.11.2011 / 08:03
4

Configurando serviços de nomeação usando o SMF

O exemplo a seguir mostra como configurar o DNS usando comandos SMF.

# svccfg
svc:> select dns/client
svc:/network/dns/client> setprop config/search = astring: \
("us.company.com" "eu.company.com" "companya.com" "companyb.com" "company.com" )
svc:/network/dns/client> setprop config/nameserver = net_address: \
( 138.2.202.15 138.2.202.25 )
svc:/network/dns/client> select dns/client:default
svc:/network/dns/client:default> refresh
svc:/network/dns/client:default> validate
svc:/network/dns/client:default> select name-service/switch
svc:/system/name-service/switch> setprop config/host = astring: "files dns"
svc:/system/name-service/switch> select system/name-service/switch:default
svc:/system/name-service/switch:default> refresh
svc:/system/name-service/switch:default> validate
svc:/system/name-service/switch:default> 
# svcadm enable dns/client
# svcadm refresh name-service/switch
# grep host /etc/nsswitch.conf
hosts:  files dns
# cat /etc/resolv.conf
    
por 15.03.2012 / 21:12
3

Eu acho que o seu problema tem algo a ver com o daemon do Solaris Name Service ou, mais corretamente, com a configuração dessa fera. Talvez você tenha editado /etc/nsswitch.conf manualmente? Isso explicaria porque o daemon do Serviço de Nomes não atende a ele.

O comando nslookup não - afaik - usa o Solaris Name Service. Isso pode explicar por que você vê o nslookup funcionando como esperado, enquanto tudo o resto não é.

No Solaris, é sempre uma boa ideia verificar se os serviços de pesquisa estão funcionando como esperado usando o comando getent . No seu exemplo, seria:

getent hosts stackexchange.com

Portanto, a questão é como garantir que o Solaris Name Service saiba que precisa procurar nomes de host nos arquivos locais e no DNS. Lembre-se que no Solaris 11 não é mais permitido / editar arquivos como /etc/nsswitch.conf diretamente. Eles são controlados por daemons executados no SMF. Veja como alterá-lo:

# svccfg
svc:> select name-service/switch
svc:/system/name-service/switch> setprop config/host = astring: "files dns"
svc:/system/name-service/switch> select system/name-service/switch:default
svc:/system/name-service/switch:default> refresh
svc:/system/name-service/switch:default> validate
svc:/system/name-service/switch:default> exit
# svcadm refresh name-service/switch

Depois disso, você notará que o arquivo /etc/nsswitch.conf foi reescrito no disco. Se você já editou manualmente, talvez não veja nenhuma alteração real. Emita novamente o comando getent e espere que funcione agora.

Boa sorte.

    
por 23.08.2012 / 09:51
1

Para o Solaris 10, eu fiz svcadm restart /system/name-service-cache ; então, eu posso resolver o host usando telnet / ping.

    
por 10.09.2012 / 11:18
1

Primeiro, inicie truss on nscd :

truss -aefld -vall -wall -rall -o truss-nscd.out -u nss_\*:: -u libnsl:: -p 'pgrep nscd'

Enquanto o comando truss acima está sendo executado, tente

truss -aefld -vall -wall -rall -o truss-getent_1.out -u a.out,libnsl:: getent hosts ANY_HOSTNAME

Em seguida, desative temporariamente nscd :

svcadm disable name-service-cache

e execute:

truss -aefld -vall -wall -rall -o truss-getent_2.out -u a.out,libnsl:: -u nss_\*:: getent hosts ANY_HOSTNAME

Agora você pode reativar o cache do serviço de nomes:

svcadm enable name-service-cache

Agora tente ... espero que funcione.

    
por 02.11.2012 / 14:22

Tags