WSL+Ubuntu 18.04: ssh или apt update дают ошибку "Temporary failure resolving …"

Вопрос или проблема

Я просмотрел и изучил множество тем по аналогичным проблемам, но так и не смог найти, как решить свою.

Win10 1709 сборка 16299.61 (не могу обновить до последней версии, так как обновления контролируются IT). После того как я включил WSL и установил Ubuntu 18.04 из MS Store, я не смог запустить 'apt update' и 'ssh' (вместе с git clone), постоянно получая это сообщение об ошибке:

user@localhost:~$ sudo apt update
ssh: Не удалось разрешить имя хоста some.remote.repository.com: Временная ошибка 
Err:1 http://security.ubuntu.com/ubuntu bionic-security InRelease
  Временный сбой при разрешении 'security.ubuntu.com'
...

user@localhost:~$ ssh my.ssh.server.com
ssh: Не удалось разрешить имя хоста my.ssh.server.com: Временный сбой в разрешении имен
...

user@localhost:~/worspace/test/$ git pull
ssh: Не удалось разрешить имя хоста my.remote.repository.com: Временный сбой в разрешении имен
...

/etc/resolv.conf выглядит хорошо, и другие утилиты, такие как ping, nslookup, dig, работают нормально с именем хоста. /etc/nsswitch.conf имеет hosts: files dns

Я пробовал отключать брандмауэр и антивирус, но это не дало эффекта (McAfee).

Странно, но у меня нет такой проблемы с Ubuntu 16.04 (с включенными брандмауэром и антивирусом), несмотря на периодические ошибки Assertion IN6_IS_ADDR_V4MAPPED (sin6->sin6_addr.s6_addr32)' failed

Буду признателен за любую помощь/идеи по этому вопросу.\

Установка обновления Win 10 1803 решает все мои проблемы, включая ту, которую я не упомянул: сценарий обёртки gradle не мог подключиться к демону через 127.0.0.1 с “connection refused”, хотя я видел, что демон gradle объявлял свой статус клиентам.

.

Ответ или решение

Обсуждаемая проблема связана с ошибками временного отказа в разрешении (Temporary failure in name resolution) при выполнении команд apt update, ssh и других, таких как git pull, в среде WSL (Windows Subsystem for Linux) на Ubuntu 18.04. Данная ситуация вызывает затруднения, поскольку она препятствует нормальной работе сети, что делает невозможным обновление пакетов или подключение к удаленным серверам.

Теория

Основной причиной проблем разрешения доменных имен обычно являются ошибки конфигурации DNS или сетевой среды в операционной системе. В контексте WSL, это может быть связано с особенностями интеграции сетевой подсистемы между Windows и установленным Linux-дистрибутивом. Все DNS запросы проходят через стек Windows, что требует правильной конфигурации системных файлов, таких как /etc/resolv.conf и /etc/nsswitch.conf.

Файл /etc/resolv.conf

Этот файл является критически важным для работы системы, так как он определяет DNS-серверы, которые система использует для разрешения доменных имен. Поскольку вы упомянули, что файл кажется корректным, стоит удостовериться, что он стабильно применяет те DNS-адреса, с которыми работает система. Иногда файл может перезаписываться автоматически, например, после каждого перезапуска, что может вносить временные конфликты.

Файл /etc/nsswitch.conf

Этот файл определяет последовательность поиска информации о хостах. Указанная конфигурация hosts: files dns означает, что система сперва будет проверять локальные файлы, такие как /etc/hosts, и затем обращаться к DNS если прежде не нашла нужный адрес.

Сетевые параметры Windows

Сети в WSL зависят от того, как они настроены в Windows. Устаревшая или специфическая корпоративная конфигурация сети может вызвать проблемы. Например, ограничения обновлений на вашей Windows 10 версии 1709, контролируемые IT-отделом, могут оказывать влияние на сетевые настройки WSL.

Антивирусное и фаерволовое ПО

Как вы упомянули, отключение McAfee не принесло результата, но все же этот компонент нельзя исключать полностью, так как он может вносить ограничения на уровне системных сетевых запросов.

Пример решения

Вы упомянули, что обновление до Windows 10 версии 1803 решило проблему. Это дает важные указания, что обновленная версия Windows могла внести изменения в сетевой стек или в сами механизмы WSL, исправив ранее имеющиеся проблемы совместимости или слабости в механизмах интеграции DNS. Вне зависимости от использования антивируса и фаервола, версии WSL и Windows должны быть согласованы для оптимальной работы.

Применение

Для решения текущей проблемы следует рассмотреть несколько аспектов:

  1. Проверка и фиксация /etc/resolv.conf: Убедитесь, что файл содержит рабочий DNS сервер (например, 8.8.8.8 и 8.8.4.4 от Google), а также обратите внимание на необходимость его защиты от перезаписи. Этого можно добиться, выдав команду sudo chattr +i /etc/resolv.conf.

  2. Актуальное обновление:

    • Поскольку у вас не было возможности перейти на более свежую версию Windows, попытайтесь инициализировать переговоры с IT отдела для разрешения проведения обновления, в соответствии с ведомственными политиками. Новейшая версия может исправить интеграционные ошибки между Windows и WSL.
  3. Сеть и маршрутизация:

    • Проверьте маршрутизацию и сетевые настройки Windows. Это можно сделать с помощью команд route print и ipconfig /all для диагностики проблем с сетью на уровне Windows.
  4. Диагностика WSL:

    • Переподключение к сети, перезапуск WSL и/или всей системы может также разрешить временные сбои в сети. Командам wsl --shutdown и netsh winsock reset может быть полезно для устранения сбоев в сети.
  5. Дополнительные утилиты диагностики:

    • Использование таких утилит как ping и nslookup из WSL и Windows для диагностики DNS, способны определить, где именно рушится процесс разрешения имен.

Соблюдая данные рекомендации и рассматривая процессы управления IT-политиками в организации, вы сможете минимизировать подобные проблемы в будущем и улучшить взаимодействие с системой.

Оцените материал
Добавить комментарий

Капча загружается...