Bem, um ano depois eu finalmente descobri!
A causa raiz acabou sendo um problema com a resolução do nome do host. A pista surgiu quando eu estava tentando resolver um problema diferente com o SSHing em uma máquina na mesma rede remota via VPN.
Da saída de ssh -v
:
debug1: Connecting to myserver2.mydomain.ox.ac.uk [163.1.21.182] port 22.
Descobri que o OpenSSH estava tentando se conectar a um endereço IP sem sentido (na verdade, estava resolvendo o nome do host do meu servidor para o endereço IP de uma impressora de rede!). Descobri que ping
também não estava solucionando corretamente nomes de host, enquanto host
parecia funcionar. Isso eventualmente me levou a este tópico no Ask Ubuntu.
Acontece que ping
e ssh
usam o resolvedor glibc, assim como mount.cifs
. As fontes das quais a glibc obtém informações de serviço de nome são configuradas em /etc/nsswitch.conf
.
O conteúdo do meu nsswitch.conf
originalmente ficou assim:
passwd: compat
group: compat
shadow: compat
hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns wins mdns4
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
A linha importante é aquela que começa com hosts:
, que lista a ordem das fontes que as consultas glibc ao executar a resolução do nome do host. Observe que na minha versão, dns
vem depois de [NOTFOUND=return]
na ordem de pesquisa.
Minha interpretação é que, se a glibc não conseguir resolver o nome do host de acordo com as quatro primeiras fontes, ele retornará antes de realmente ter consultado qualquer servidor DNS! Eu não tenho ideia do porquê o nsswitch.conf
foi configurado dessa forma (eu certamente não configurei assim), mas alterando a linha para:
hosts: files myhostname mdns4_minimal dns [NOTFOUND=return] wins mdns4
de repente fez tudo funcionar corretamente, incluindo ping
, ssh
e mount.cifs
.