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

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

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

$ ping www.google.com
ping: www.google.com: Temporary failure in name resolution

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

[network]
generateResolvConf = true

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

nameserver 8.8.8.8

Это работает отлично.

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

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

[network]
generateResolvConf = false

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

Так как же мне сделать свои изменения /etc/resolv.confпостоянными в WSL 2?

решение1

Я нашел это решениездесь

sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf

решение2

Я пытался прокомментироватьответ snuczekно не имеют достаточной репутации.

Изсвязанное решениев своем ответе они добавили:

[network]
generateResolvConf=false

останавливает /etc/wsl.confавтоматическую генерацию файла wsl, но только после того, как он был выключен один раз. После этого конфигурация будет соблюдена, и не требуется делать файл /etc/resolv.confнеизменяемым с помощью chattr +iкоманды.

Чтобы завершить работу wsl, запустите wsl --shutdownкомандную строку Windows (это завершит работу всех дистрибутивов WSL).

Конечно, вам все равно придется добавить ваши DNS-серверы в /etc/resolv.confфайл (например):

nameserver 1.1.1.1
nameserver 1.0.0.1

решение3

Эти шаги гарантируют, что/etc/resolv.confправильно настроен ссервер имен 8.8.8.8каждый раз, когда начинается wsl

  1. Добавление записи bashrc для первоначального пользователя
echo "sudo su -" >> ~/.bashrc
  1. Создание записи sudoers для первоначального пользователя
sudo su -
    
echo "username ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/username
  1. Добавление записи bashrc для пользователя root
echo "nameserver 8.8.8.8" > /etc/resolv.conf

Примечание:Это переопределит содержимое/etc/resolv.confфайл. Вы можете использоватьседкоманда на выполнение любых конкретных изменений по мере необходимости

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