Processos iniciados sem uma conexão de rede são permanentemente incapazes de usá-lo

3
Em poucas palavras: na primeira vez que um processo tenta usar uma conexão, se ela falhar devido a nenhuma conexão disponível, esse processo único nunca recuperará a capacidade de usar a rede. Eu tenho que matar e reiniciá-lo.

Eu tenho um script Ruby que tenta resolver o 'google.com' três vezes. Se eu desabilitar a rede (por meio do NetworkManager) ou desligar meu WLAN físico, inicie o script, deixe-o falhar uma vez e, em seguida, reative a rede, as outras duas resoluções também falharão, embora o restante do sistema tenha rede. / p>

Um script Python similar exibe os mesmos resultados, assim como o lynx do navegador. Não Firefox embora! Esses comportamentos são testados em uma VM e em uma máquina física executando o XFCE x64 Manjaro mais recente. No Ubuntu x64 mais recente, os mesmos testes funcionam bem.

Por que isso acontece? Isso é um bug, característica, peculiaridade?

EDITAR:

No Manjaro, o conteúdo de /etc/resolv.conf é regenerado pelo resolvconf.

  • Rede ativada: search lan; nameserver 192.168.1.1
  • Rede desativada: arquivo vazio

O Ruby / Python / Lynx só deve ler resolv.conf uma vez. Assim, na primeira solicitação, ele encontra o arquivo vazio e nunca mais consegue resolver nomes.

E no Ubuntu, /etc/resolv.conf :

  • Rede ativada: nameserver 127.0.1.1; search lan
  • Rede desativada: nameserver 127.0.1.1

Assim, quando o Ruby / Python / Lynx o ler na rede desativada, eles ainda terão um servidor de nomes para entrar em contato quando uma conexão for reativada. O problema com a configuração do Manjaro é que, sem conexão, não há servidores de nomes. O Ubuntu roda o dnsmasq para 127.0.1.1 e o Manjaro não.

    
por Hypershadsy 20.03.2017 / 04:33

1 resposta

2

Do jeito que eu vejo, existem duas soluções.

  1. Edite resolvconf.conf: name_servers=192.168.1.1 ou qualquer um dos seus nameservers mais comuns. Problema: nem todo servidor de nomes é 192.168.1.1 como o meu. Se você se conectar com uma rede diferente, seu processo ficará quebrado, pois um servidor de nomes em 192.168.1.1 pode não existir lá.
  2. Deixe o NetworkManager configurar e usar o dnsmasq adicionando algumas linhas a NetworkManager.conf

Eu tentei os dois, e o sintoma também foi evitado. O segundo parece mais limpo e mais fácil de configurar, mas não é tão leve.

    
por 20.03.2017 / 23:46