Процессы, запущенные без сетевого подключения, навсегда не смогут его использовать.

Процессы, запущенные без сетевого подключения, навсегда не смогут его использовать.

В двух словах: в первый раз, когда процесс пытается использовать соединение, если он терпит неудачу из-за отсутствия доступных соединений, этот единственный процесс никогда не восстановит возможность использовать сеть. Мне приходится убивать и перезапускать его.

У меня есть скрипт ruby, который пытается разрешить 'google.com' три раза. Если я отключу сеть (через NetworkManager) или выключу физический переключатель WLAN, запущу скрипт, позволю ему один раз дать сбой, а затем снова включу сеть, то два других разрешения также не дадут результата, хотя в остальной части системы есть сеть.

Аналогичный скрипт Python показывает те же результаты, как и браузер lynx. Но не Firefox! Все эти поведения проверены как на виртуальной машине, так и на физической машине с последней версией Manjaro x64 XFCE. На последней версии Ubuntu x64 те же тесты работают нормально.

Почему так происходит? Это баг, фича, причуда?

РЕДАКТИРОВАТЬ:

В Manjaro содержимое /etc/resolv.confвосстанавливается с помощью resolvconf.

  • Сеть включена:search lan; nameserver 192.168.1.1
  • Сеть отключена: пустой файл

Ruby/Python/Lynx должен читать только resolv.confодин раз. Поэтому при первом запросе он находит пустой файл и больше никогда не может разрешить какие-либо имена.

А в Ubuntu /etc/resolv.conf:

  • Сеть включена:nameserver 127.0.1.1; search lan
  • Сеть отключена:nameserver 127.0.1.1

Поэтому, когда Ruby/Python/Lynx считывают его в отключенной сети, у них все равно будет сервер имен, с которым можно связаться, когда соединение восстановится. Проблема с настройкой Manjaro заключается в том, что при отсутствии соединения нет серверов имен. Ubuntu запускает dnsmasq для 127.0.1.1, а Manjaro — нет.

решение1

На мой взгляд, есть два решения.

  1. Измените resolvconf.conf: name_servers=192.168.1.1или какие у вас самые распространенные серверы имен. Проблема: не все серверы имен похожи 192.168.1.1на мои. Если вы подключитесь к другой сети, ваш процесс останется сломанным, так как сервер имен 192.168.1.1в там может не существовать.
  2. Позвольте NetworkManager настроить и использовать dnsmasqдобавив несколько строк вNetworkManager.conf

Я попробовал оба, и симптом был предотвращен с любым из них. Второй кажется более чистым и его легче настроить, но он не такой легкий.

Связанный контент