En pocas palabras: la primera vez que un proceso intenta utilizar una conexión, si falla porque no hay conexiones disponibles, ese proceso único nunca recuperará la capacidad de utilizar la red. Tengo que matarlo y reiniciarlo.
Tengo un script Ruby que intenta resolver 'google.com' tres veces. Si desactivo la red (a través de NetworkManager) o apago mi WLAN física, inicio el script, dejo que falle una vez y luego vuelvo a habilitar la red, las otras dos resoluciones también fallarán, aunque el resto del sistema tenga red.
Un script Python similar muestra los mismos resultados, así como el navegador Lynx. ¡Pero Firefox no! Todos estos comportamientos se prueban tanto en una máquina virtual como en una máquina física que ejecuta el último Manjaro x64 XFCE. En el último Ubuntu x64, las mismas pruebas funcionan bien.
¿Por qué pasó esto? ¿Es esto un error, una característica o una peculiaridad?
EDITAR:
En Manjaro, el contenido de /etc/resolv.conf
se regenera mediante resolvconf.
- Red habilitada:
search lan; nameserver 192.168.1.1
- Red deshabilitada: archivo vacío
Ruby/Python/Lynx solo debe leerse resolv.conf
una vez. Entonces, en la primera solicitud, encuentra el archivo vacío y nunca más puede resolver ningún nombre.
Y en Ubuntu /etc/resolv.conf
:
- Red habilitada:
nameserver 127.0.1.1; search lan
- Red deshabilitada:
nameserver 127.0.1.1
Entonces, cuando Ruby/Python/Lynx lo lea en una red deshabilitada, todavía tendrán un servidor de nombres con el que contactar cuando se restablezca la conexión. El problema con la configuración de Manjaro es que sin conexión, no hay servidores de nombres. Ubuntu ejecuta dnsmasq para 127.0.1.1 y Manjaro no.
Respuesta1
A mi modo de ver, hay dos soluciones.
- Edite resolvconf.conf:
name_servers=192.168.1.1
o cualquiera que sean sus servidores de nombres más comunes. Problema: no todos los servidores de nombres son192.168.1.1
como el mío. Si se conecta con una red diferente, su proceso permanecerá interrumpido ya que192.168.1.1
es posible que no exista un servidor de nombres allí. - Deje que NetworkManager configure y use dnsmasqagregando algunas líneas a
NetworkManager.conf
Probé ambos y el síntoma se evitó con cualquiera de ellos. El segundo parece más limpio y más fácil de configurar, pero no es tan liviano.