linux-labs

← Практика

Не резолвится DNS

Сломай-почини · Лёгкое · 15 мин · 120 баллов

Не резолвится DNS

Сеть на сервере работает — по IP всё доступно. Но имена не разрешаются: команды вроде getent hosts app.internal или ping app.internal падают с «Name or service not known». На машине есть локальный DNS-резолвер, отвечающий за зону *.internal, но система к нему не обращается.

Задача

Сделай так, чтобы:

  1. имя app.internal успешно разрешалось в IP (getent hosts app.internal возвращает строку и код 0);
  2. резолвинг был починен в конфигурации (/etc/resolv.conf / systemd-resolved), а не «захардкожен» строкой в /etc/hosts;
  3. разрешение имён в целом снова работало.

Подсказки по подходу

  • Куда система шлёт запросы: 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-ВМ для задания — обычно пара секунд. После работы её можно остановить.