Resumindo: na primeira vez que um processo tenta usar uma conexão, se falhar devido à falta de conexões disponíveis, esse único processo nunca recuperará a capacidade de usar a rede. Eu tenho que matar e reiniciá-lo.
Eu tenho um script Ruby que tenta resolver 'google.com' três vezes. Se eu desabilitar a rede (através do NetworkManager) ou desligar minha WLAN física, iniciar o script, deixá-lo falhar uma vez e reativar a rede, as outras duas resoluções também falharão, mesmo que o resto do sistema tenha rede.
Um script Python semelhante exibe os mesmos resultados, assim como o navegador lynx. Mas não o Firefox! Todos esses comportamentos são testados em uma VM e em uma máquina física executando o Manjaro x64 XFCE mais recente. No Ubuntu x64 mais recente, os mesmos testes funcionam bem.
Por que isso acontece? Isso é um bug, recurso, peculiaridade?
EDITAR:
No Manjaro, o conteúdo de /etc/resolv.conf
é regenerado pelo resolvconf.
- Rede habilitada:
search lan; nameserver 192.168.1.1
- Rede desativada: arquivo vazio
Ruby/Python/Lynx deve ler apenas resolv.conf
uma vez. Assim, na primeira solicitação, ele encontra o arquivo vazio e nunca mais consegue resolver nenhum nome.
E no Ubuntu /etc/resolv.conf
,:
- Rede habilitada:
nameserver 127.0.1.1; search lan
- Rede desativada:
nameserver 127.0.1.1
Portanto, quando Ruby/Python/Lynx o ler em uma rede desativada, eles ainda terão um servidor de nomes para contatar quando uma conexão for restabelecida. O problema com a configuração do Manjaro é que sem conexão, não há servidores de nomes. O Ubuntu executa o dnsmasq para 127.0.1.1 e o Manjaro não.
Responder1
A meu ver, existem duas soluções.
- Edite resolvconf.conf:
name_servers=192.168.1.1
ou quaisquer que sejam seus servidores de nomes mais comuns. Problema: nem todo servidor de nomes é192.168.1.1
como o meu. Se você se conectar a uma rede diferente, seu processo permanecerá interrompido, pois um servidor de nomes192.168.1.1
pode não existir lá. - Deixe o NetworkManager configurar e usar o dnsmasqadicionando algumas linhas ao
NetworkManager.conf
Tentei os dois e o sintoma foi evitado com qualquer um deles. O segundo parece mais limpo e mais fácil de configurar, mas não é tão leve.