Не резолвится DNS
Сломай-почини · Лёгкое · 15 мин · 120 баллов
Не резолвится DNS
Сеть на сервере работает — по IP всё доступно. Но имена не разрешаются: команды
вроде getent hosts app.internal или ping app.internal падают с «Name or service not
known». На машине есть локальный DNS-резолвер, отвечающий за зону *.internal, но
система к нему не обращается.
Задача
Сделай так, чтобы:
- имя
app.internalуспешно разрешалось в IP (getent hosts app.internalвозвращает строку и код 0); - резолвинг был починен в конфигурации (
/etc/resolv.conf/ systemd-resolved), а не «захардкожен» строкой в/etc/hosts; - разрешение имён в целом снова работало.
Подсказки по подходу
- Куда система шлёт запросы:
cat /etc/resolv.conf(строкиnameserver). - Локальный резолвер слушает на этой же машине — найди его адрес:
ss -lnp | grep :53. - На системах с systemd-resolved
/etc/resolv.confобычно симлинк; правят черезresolvectl/ конфиг, иначе ручная правка перезатрётся. - Проверяй результат по кнопке «Проверить».
Всё нужное уже установлено. Интернет на машине отсутствует — и не понадобится: резолвер локальный.
Подсказки
Подсказка 1
Посмотри текущую настройку резолвинга: cat /etc/resolv.conf. Скорее всего там нет
строки nameserver или указан недостижимый адрес.
Подсказка 2
Узнай, где слушает локальный резолвер: sudo ss -lnp | grep :53 (обычно 127.0.0.1
или 127.0.0.53). Именно его адрес должен стоять в nameserver.
Подсказка 3
Пропиши рабочий nameserver <адрес локального резолвера> в /etc/resolv.conf (или
через resolvectl dns <iface> <addr>, если активен systemd-resolved). Проверь:
getent hosts app.internal должно вернуть IP и код 0.
Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.