Вопрос или проблема
После обновления Ubuntu с 21.10 до 22.04 у меня перестало работать интернет-соединение. Я подключен к WLAN и могу пинговать IP-адреса (как из локальной сети, так и из интернета) – однако разрешение имен перестало работать. Так, ping 151.101.65.69
работает с потерей пакетов 0%, но ping askubuntu.com
выдает ошибку Имя или служба не известны
(это работает с другого компьютера, который подключен к тому же роутеру).
При выполнении команды nmcli она показывает следующую конфигурацию DNS:
Конфигурация DNS:
серверы: 192.168.17.1
домены: fritz.box
интерфейс: wlp64s0
Я также пытался вручную добавить 8.8.8.8
в DNS-серверы в сетевом менеджере (Настройки Wi-Fi -> IPv4 -> DNS). Затем оба сервера отображаются в конфигурации DNS, но проблема все еще остается.
Есть идеи, в чем может быть причина, что я могу сделать, чтобы сузить проблему или как ее решить?
Как указано в этом ответе и в этом ответе, решение (по крайней мере в моем случае) заключалось в проблеме с /etc/resolv.conf
, который содержал только закомментированную строку “Сгенерировано NetworkManager”. Замена этого файла на символическую ссылку на /run/resolvconf/resolv.conf
решила мою проблему:
sudo rm -f /etc/resolv.conf
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
Это, похоже, вызвано тем, что Ubuntu 22.04 ожидает конфигурацию через Netplan. Конфигурация Netplan создается при чистой установке, но если у вас обновленная система, необходимые конфигурации отсутствуют.
Если на вашей системе нет конфигурационного файла (проверьте ls /etc/netplan/*.yaml
), вы не получите настроенный по умолчанию резолвер DNS.
Все рекомендации по обходу сервиса systemd-resolved
или прямому редактированию /etc/resolv.conf
просто маскируют симптом.
Возможные файлы, которые могут (должны) присутствовать на вашей системе – выполните ip a
и ip r
и замените значения и имена устройств по мере необходимости:
Стандартная общая конфигурация, созданная под управлением subiquity, которая, вероятно, будет достаточной, если у вас нет конкретных потребностей
/etc/netplan/00-installer-config.yaml
сеть:
ethernet:
eno1:
dhcp4: true
версия: 2
Конфигурация LXD-контейнера с жестко закодированными IPv4, маршрутом и резолверами DNS
/etc/netplan/50-cloud-init.yaml
сеть:
версия: 2
ethernet:
eth0:
адреса: [10.0.0.50/16]
маршруты:
- до: по умолчанию
через: 10.0.0.1
серверы имен:
адреса: [10.0.0.11,10.0.0.12]
Пример настройки объединения
/etc/netplan/01-netcfg.yaml
сеть:
версия: 2
рендерер: networkd
ethernet:
eno1:
dhcp4: нет
dhcp6: нет
eno2:
dhcp4: нет
dhcp6: нет
объединения:
bond0:
интерфейсы: [eno1,eno2]
dhcp4: нет
dhcp6: нет
параметры:
режим: 802.3ad
интервал-монитора-mii: 100
мосты:
br0:
интерфейсы: [bond0]
адреса: [10.0.0.100/16]
маршруты:
- до: по умолчанию
через: 10.0.0.1
серверы имен:
адреса: [10.0.0.11,10.0.0.12]
После этого выполните netplan apply
, чтобы убедиться, что у вас по-прежнему есть подключение (осторожно с выполнением этого на серверах, к которым у вас нет другого доступа!) или перезагрузите.
У меня была проблема с теми же симптомами. Я выяснил, что причина в ifupdown/managed=false в
/etc/NetworkManager/NetworkManager.conf
[ifupdown]
managed=false
Изменение этого на true решило проблему.
Ответ или решение
После обновления до Ubuntu 22.04 у вас возникли проблемы с резольвером имен, несмотря на то, что вы можете пинговать IP-адреса. Это довольно распространённая проблема, и её решение может включать несколько шагов.
1. Проверьте файл /etc/resolv.conf
Во-первых, убедитесь, что файл /etc/resolv.conf
настроен правильно. После обновления системы этот файл может быть неправильно настроен. Проверьте, что он ссылается на актуальный резольвер:
ls -l /etc/resolv.conf
Если он указывает на stub-resolv.conf
, вам нужно изменить его следующим образом:
sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved
2. Конфигурация Netplan
Ubuntu 22.04 использует Netplan для управления сетевыми настройками. После обновления могут отсутствовать необходимые конфигурационные файлы. Убедитесь, что файлы конфигурации Netplan находятся в каталоге /etc/netplan/
. Вы можете проверить их наличие, запустив:
ls /etc/netplan/*.yaml
Если файлы отсутствуют, создайте новый файл конфигурации, например, 00-installer-config.yaml
:
network:
version: 2
renderer: networkd
ethernets:
wlp64s0: # замените на ваше устройство
dhcp4: true
После создания файла примените изменения:
sudo netplan apply
3. Настройка NetworkManager
Если вы используете NetworkManager, убедитесь, что в /etc/NetworkManager/NetworkManager.conf
установлено:
[ifupdown]
managed=true
Измените это значение, если необходимо, и перезапустите NetworkManager:
sudo systemctl restart NetworkManager
4. Настройка dnsmasq (если используется)
Если вы используете dnsmasq, проверьте настройки. Измените строку:
local=/example.com/1.1.1.1
на:
server=/example.com/1.1.1.1
Это должно вернуть правильные IP-адреса вместо того, чтобы резольвить их локально.
5. Тестирование
После выполнения всех вышеуказанных шагов протестируйте разрешение имен:
ping askubuntu.com
Если проблема все еще существует, проверьте журналы системных служб на наличие ошибок, которые могут помочь в диагностике:
journalctl -u systemd-resolved
Заключение
Эти шаги служат комплексным решением проблемы с резольверами имен в Ubuntu 22.04 после обновления. Убедитесь, что вы следуете каждому шагу, проверяйте конфигурации и выполняйте перезапуск служб по мере необходимости. Если у вас остались вопросы или возникли дополнительные проблемы, не стесняйтесь их задавать.