3

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

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

Подобный скрипт Python демонстрирует те же результаты, что и браузерная рысь. Не 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

2

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .