ping
diz-me que não pode resolver algum nome de host ("ping: host desconhecido domain.company.local") em uma URL, mas quando eu uso host
ou nslookup
no mesmo computador na linha de comando, as resoluções funcionam bem (ou seja, é rápido e confiável )
O que poderia estar causando isso?
Mais testes: Firefox wget
e ping
tem o mesmo problema. O ping do endereço IP funciona.
Sistema operacional: Linux (Ubuntu 13.04)
EDITAR Minhas /etc/resolv.conf
leituras:
nameserver 127.0.1.1
search domain.company.local
netstat
relatórios:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
então algo está sendo executado nessa porta ( nslookup
também relata que é usado 127.0.1.1
como servidor DNS).
Não há /etc/*inetd.conf
, então não tenho certeza de qual aplicativo atende a essa porta.
Parece que dnsmasq
é usado:
/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces
--pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1
--conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=0 --proxy-dnssec
--enable-dbus=org.freedesktop.NetworkManager.dnsmasq
--conf-dir=/etc/NetworkManager/dnsmasq.d
Todos os arquivos e pastas de configuração estão vazios. Desde nslookup
diz que usa 127.0.1.1#53
meu palpite é que dnsmasq
funciona mesmo sem uma configuração. Mas como ele sabe qual DNS pai consultar?
EDIT2 Desativar dnsmasq
como sugerido por harrymc não ajudou. Então eu corri, o strace ping
que me deu uma saída estranha (apenas as partes interessantes):
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4
read(4, "127.0.0.1\tlocalhost\n#127.0.1.1\ta"..., 4096) = 613
...
open("/lib/libnss_mdns4_minimal.so.2", O_RDONLY|O_CLOEXEC) = 4
read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\f\0\0\0\0\0\0"..., 832) = 832
...
mmap(NULL, 2105560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f7829b00000
...
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl(4, F_GETFD) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/avahi-daemon/socket"}, 110) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fstat(4, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f782a4f8000
lseek(4, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "RESOLVE-HOSTNAME-IPV4 domain.com"..., 44) = 44
read(4, "-15 Timeout reached\n", 4096) = 20
Então ping
parece /etc/hosts
que faz sentido. Em seguida, carrega mmap()
es /lib/libnss_mdns4_minimal.so.2
que também faz sentido.
Mas então ele fala com avahi !?
O que me levou a esta postagem no fórum: o ping não faz uma solicitação de DNS .
Meu /etc/nsswitch.conf
também contém esta linha:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Se eu for ping
um endereço de trabalho, vejo que o processo também é carregado, /lib/libnss_mdns4_minimal.so.2
mas faz uma consulta DNS via porta 53.
Então, meu palpite é que agora, de /lib/libnss_mdns4_minimal.so.2
alguma forma, está percebendo que o endereço IP termina com .local
e não com .com
e então o [NOTFOUND=return]
é acionado.
Como faço para corrigir isso?
/etc/resolv.conf
?wget
.nslookup
ouhost
pode resolver o nome e qualquer outra coisa no sistema não pode./etc/NetworkManager/NetworkManager.conf
e comente adns=dnsmasq
linha (coloque um # na frente) e faça asudo restart network-manager
. Isso desativará o resolvedor local. ( fonte )Respostas:
Conforme descrito em detalhes nesta postagem do blog , você precisa editar
/etc/avahi/avahi-daemon.conf
:Isso liga o daemon ao domínio em
.alocal
vez do padrão.local
.e reinicie o daemon com:
Nota da postagem do blog:
Depois disso,
ping
enslookup
começou a concordar.Obrigado a harrymc por me colocar no caminho certo.
fonte
ping
que usará nss,nslookup
não. (ele usa lwres e, bem, bind, para falar diretamente com um resolvedor)Modificando o /etc/nsswitch.conf e substituindo:
de:
trabalhou para mim.
fonte
Coisa fácil de fazer: Editar
/etc/default/avahi-daemon
Mude a linha:
para
Reinicie o
avahi-daemon
, ou mate-o.Não gosto de Avahi e não uso nenhum de seus recursos. Se você deseja realmente desativar o avahi, modifique
/etc/init/avahi-daemon.conf
semelhante ao seguinte:fonte
parece que o endereço local não pode ser acessado no ubuntu.
uma solução é editar
/etc/nsswitch.conf
e alterar esta linha:por este :
fonte
Se você não estiver compartilhando conexões com outros dispositivos ou VMs no seu computador, poderá desativar o dnsmasq no Network Manager.
Edite
/etc/NetworkManager/NetworkManager.conf
e comente a linha (coloque um # na frente):Então faça :
Isso desativará o resolvedor local.
Fonte: DNS no Ubuntu 12.04 .
fonte
Muito bom palpite, mas as outras respostas são um exagero. A solução simples é remover o bit que realmente é acionado, ou seja, remover apenas
[NOTFOUND=return]
.Removê-lo significa que, se
mdns4_minimal
retornarNOTFOUND
, a próxima entrada na lista de resolvedores será usada. Esse é o comportamento normal;[NOTFOUND=return]
é uma otimização para falhar mais rapidamente em nomes desconhecidos, mas assume que todos os.local
nomes estão no mDNS.fonte
Eu tive um caso interessante com os mesmos sintomas (ping, mount etc. não funcionava, mas hospedava, cavava funcionando). Verifique as permissões no arquivo /etc/resolv.conf . No meu caso, alguém mudou e eu não tinha o direito de lê-lo (embora a
cat /etc/resolv.conf
edição do arquivo tenha funcionado bem).De qualquer forma, strace estava mostrando:
E, como resultado, ele estava tentando consultar o host local (127.0.0.1) em vez de um IP do servidor de nomes no arquivo resolv.conf:
E o tcpdump não estava mostrando nenhum tráfego DNS durante o ping. Tudo está funcionando após uma correção de permissão:
Outro problema pode ser atributos estendidos do arquivo ou qualquer outro problema de acesso. Nesse caso, basta excluir o arquivo /etc/resolv.conf e recriá-lo do zero.
fonte
x
sinalizador e, portanto, muitos binários não se comportavam corretamente. A correção foichmod +x /*
.Outro motivo é o formato de
/etc/hosts
. Verifique se não há espaços entre o IP e o nome do host. Em vez disso, use uma TAB. Após mudar para TAB, o nome do host pode ser resolvido por ping.fonte
Configure o avahi-daemon no Ubuntu para que você possa acessar o nome
ubuntu.local
do host no sistema operacional hostsudo apt-get install avahi-daemon avahi-discover avahi-utils libnss-mdns mdns-scan
fonte