
На 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
- Добавление записи bashrc для первоначального пользователя
echo "sudo su -" >> ~/.bashrc
- Создание записи sudoers для первоначального пользователя
sudo su -
echo "username ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/username
- Добавление записи bashrc для пользователя root
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Примечание:Это переопределит содержимое/etc/resolv.confфайл. Вы можете использоватьседкоманда на выполнение любых конкретных изменений по мере необходимости