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 .