Рейтинг:3

Сделайте изменения /etc/resolv.conf постоянными в WSL 2

флаг in

В WSL 2, когда я пытаюсь подключиться к веб-сайту, у меня возникает проблема:

$ пинг www.google.com
ping: www.google.com: временный сбой в разрешении имени

Теперь, чтобы исправить это, мне пришлось добавить /etc/wsl.conf с этим содержанием:

[сеть]
сгенерироватьResolvConf = истина

И мне нужно изменить свой /etc/resolv.conf к:

сервер имен 8.8.8.8

Это прекрасно работает.

Однако, когда я перезагружаю свою систему, когда я выключаю wsl или делаю что-то подобное, /etc/resolv.conf перезаписывается предыдущим значением.

Конечно, если я изменю /etc/wsl.conf к следующему и перезапустите снова:

[сеть]
сгенерироватьResolvConf = ложь

Упомянутое выше исправление снова исчезло.

Итак, как мне внести изменения в /etc/resolv.conf постоянный на WSL 2?

флаг ru
`/etc/resolv.conf` обычно является символической ссылкой и перезаписывается NetPlan / SystemD. Когда он «перезаписывает» данные, что вы видите в «ls -al /etc/resolv.conf»?
Olivier Grégoire avatar
флаг in
@ThomasWard это результат этой команды: `lrwxrwxrwx 1 root root 29 янв. 25 17:43 /etc/resolv.conf -> ../run/resolvconf/resolv.conf`. Я думал, что `..` относится к моему собственному каталогу, поэтому я попробовал в других каталогах, и он по-прежнему `../run/resolvconf/resolv.conf`. И я вижу, что этот файл в настоящее время имеет значение «8.8.8.8».
флаг ru
ОК, это нормально.Когда вы что-то меняете, убедитесь, что вы заглянули в `/etc/resolvconf` — где-то там есть файл «head», который вы можете настроить так, чтобы ваши первичные DNS-серверы были впереди всего, что установлено системой — это полезно, потому что это как resolvconf работает с динамическими сетевыми подключениями (Network Manager) в базовой установке Ubuntu. Просто на будущее, чтобы они остались. Отредактируйте файл заголовка для resolvconf, эти изменения сохраняются. Под этим могут быть созданы ДРУГИЕ элементы, но таким образом вы установите первичный DNS. Если это сработает, я преобразую это в ответ
Olivier Grégoire avatar
флаг in
@ThomasWard `sudo find /run -type f` возвращает только `/run/resolvconf/resolv.conf` и `/run/sudo/ts/myusername`. Там нет ничего другого.
флаг ru
Я не говорил, что это в `/run` - обратите внимание, что каталог, который я указал в своем комментарии, это **`/etc/resolvconf`**, а *не* в `/run`
Olivier Grégoire avatar
флаг in
@ThomasWard Я подумал, что это опечатка, потому что /etc/resolvconf (или аналогичный) не существует.
NotTheDr01ds avatar
флаг vn
@ThomasWard Обратите внимание, что ОП сказал, что это WSL. Systemd/NetPlan здесь не при чем, верно? WSL обычно настраивает файл `/etc/resolv.conf` с хоста Windows, если только он не отключен с помощью упомянутого файла `/etc/wsl.conf`.
флаг ru
@ NotTheDr01ds WSL2 — это полностью виртуализированная среда, поэтому она *может* быть задействована. Мы не знаем, являются ли они WSL1. Как указал OP, они должны были включить его, а затем отключить. Если они отключат его, ничто не сможет управлять DNS, поэтому OP должен справиться с этим самостоятельно.
NotTheDr01ds avatar
флаг vn
@ThomasWard Я не уверен, что назвал бы это «полностью виртуализированным». Даже WSL2 использует собственный процесс инициализации (PID 1) для подключения взаимодействия между WSL и Windows. Самое главное для этого вопроса, по крайней мере, это `init` на WSL (как 1, так и 2), где настраивается сеть. На самом деле, очень мало "Ubuntu" вовлечено в эту сторону вещей, *особенно* не Systemd.
NotTheDr01ds avatar
флаг vn
@OlivierGrégoire Можете ли вы уточнить (с правкой вопроса) «это снова не работает»? Переписывается ли resolv.conf даже с помощью wsl.conf? Если это так, попробуйте удалить пробелы вокруг знака равенства (`generateResolvConf=false`). Это долгий путь, но попробовать легко изменить.
Olivier Grégoire avatar
флаг in
@NotTheDr01ds сделано! но `/run/resolvconf/resolv.conf` теперь удаляется, когда я выхожу/перезапускаю wsl
NotTheDr01ds avatar
флаг vn
Конечно, но я думал, что это то, что вы хотели? Если он больше не использует `/run/resolvconf/resolv.conf`, можете ли вы вручную создать `/etc/resov.conf`?
Olivier Grégoire avatar
флаг in
@ NotTheDr01ds Я действительно могу его создать, но когда я закрываю WSL, файл удаляется.
NotTheDr01ds avatar
флаг vn
Извините, в предыдущем комментарии вы сказали, что это был `/run/resolvconf/resolv.conf`, который удалялся при перезапуске. Предполагалось, что это будет `/etc/resolv.conf`, или действительно удалены оба?
Olivier Grégoire avatar
флаг in
@ NotTheDr01ds В моей установке WSL (я не буду говорить в целом, потому что не знаю), `/etc/resolv.conf` является символической ссылкой на `/run/resolvconf/resolv.conf`.Именно последний удаляется, а первый остается символической ссылкой, даже когда последний удаляется.
флаг kn
Натыкаюсь, так как столкнулся с той же проблемой, а решения пока нет
Рейтинг:0
флаг mv

У меня была точно такая же проблема, и я выполнил следующие шаги, которые я нашел в репозитории WSL github в качестве обходного пути:

  1. Удалить /etc/resolv.conf
  2. Создайте файл /etc/resolv.conf с помощью vim/nano.
  3. Вставьте соответствующие серверы имен
  4. Запустите новый сеанс и убедитесь, что resolv.conf снова не сбрасывается.

Источник: ответ bradley101 здесь https://github.com/Microsoft/WSL/issues/1908

флаг ru
Этот ответ кажется неполным - удаление resolv.conf, а затем его воссоздание * без * подробного описания того, как его следует форматировать и т. д.это хороший способ сломать ситуацию, и просто сказать «Источником является этот другой ответ» без указания *полных* шагов может сломать WSL.

Ответить или комментировать

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