Os processos iniciados sem uma conexão de rede ficam permanentemente impossibilitados de usá-la

Os processos iniciados sem uma conexão de rede ficam permanentemente impossibilitados de usá-la

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.confuma 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.

  1. Edite resolvconf.conf: name_servers=192.168.1.1ou quaisquer que sejam seus servidores de nomes mais comuns. Problema: nem todo servidor de nomes é 192.168.1.1como o meu. Se você se conectar a uma rede diferente, seu processo permanecerá interrompido, pois um servidor de nomes 192.168.1.1pode não existir lá.
  2. Deixe o NetworkManager configurar e usar o dnsmasqadicionando algumas linhas aoNetworkManager.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.

informação relacionada