Модуль 3.2: DNS в Linux
Основи мереж | Складність:
[MEDIUM]| Час: 25–30 хв
Передумови
Розділ «Передумови»Перед початком цього модуля:
- Обов’язково: Модуль 3.1: Основи TCP/IP
- Бажано: Розуміння того, навіщо потрібні доменні імена.
Що ви зможете робити після цього модуля
Розділ «Що ви зможете робити після цього модуля»Після завершення цього модуля ви зможете:
- Відстежити DNS-резолвінг від /etc/resolv.conf через рекурсивні резолвери до авторитетних серверів
- Дебажити збої DNS за допомогою dig, nslookup та /etc/hosts
- Налаштувати DNS-резолвінг для контейнерів та пояснити, як CoreDNS працює в Kubernetes
- Пояснити типи DNS-записів (A, AAAA, CNAME, SRV, TXT) та коли кожен використовується
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»DNS (Domain Name System) перетворює людські назви (google.com) на зрозумілі машинам IP-адреси. В Kubernetes DNS — це основа основ. Без нього поди не зможуть знайти сервіси, а бази даних — приймати запити за іменами.
Розуміння DNS в Linux допоможе вам:
- Налагодити Service Discovery в Kubernetes — чому мій под не бачить сервіс за назвою?
- Виправляти помилки резолвінгу — “Name or service not known”.
- Налаштовувати CoreDNS — внутрішній сервер імен Kubernetes.
- Розуміти /etc/resolv.conf — як контейнери дізнаються, куди звертатися за іменами.
Процес резолвінгу в Linux
Розділ «Процес резолвінгу в Linux»Коли програма хоче з’єднатися з api.example.com, Linux проходить такий шлях:
- Перевірка /etc/hosts — локальний файл зі статичними записами. Якщо там є запис, пошук завершується.
- Звернення до DNS-сервера — шлях до сервера береться з
/etc/resolv.conf. - Повернення IP — сервер каже: “api.example.com знаходиться за адресою 93.184.216.34”.
Головні файли конфігурації
Розділ «Головні файли конфігурації»/etc/resolv.conf
Розділ «/etc/resolv.conf»Це головний файл, який каже системі, де шукати DNS-сервери.
nameserver 8.8.8.8 # IP-адреса DNS сервераsearch my-domain.local # Домени, які додаються до коротких іменoptions ndots:5 # Специфічні налаштування Kubernetesndots:5 — важливий параметр для K8s. Він каже системі: “якщо в імені менше 5 крапок, спочатку спробуй додати до нього внутрішні домени кластера”. Саме тому ви можете звертатися до сервісу просто як my-service замість повної назви.
/etc/hosts
Розділ «/etc/hosts»Локальна таблиця “ім’я -> IP”. Вона завжди має пріоритет над запитами в Інтернет.
127.0.0.1 localhost10.0.0.50 my-database.internalІнструменти для перевірки DNS
Розділ «Інструменти для перевірки DNS»dig (Domain Information Groper)
Розділ «dig (Domain Information Groper)»Найпотужніший інструмент. Показує повну відповідь сервера.
# Простий запитdig google.com
# Тільки IP адреса (коротко)dig +short google.com
# Запитати конкретний серверdig @8.8.8.8 google.comhost та nslookup
Розділ «host та nslookup»Простіші альтернативи dig для швидкої перевірки.
host google.comnslookup google.comDNS в Kubernetes
Розділ «DNS в Kubernetes»В Kubernetes за все відповідає CoreDNS. Кожен сервіс отримує своє ім’я:
<назва-сервісу>.<простір-імен>.svc.cluster.local
Поди автоматично налаштовані так, щоб використовувати CoreDNS як свій основний nameserver.
Тест
Розділ «Тест»-
Який файл у Linux має пріоритет над зовнішніми DNS-серверами?
Відповідь
`/etc/hosts`. Якщо в ньому вказано відповідність імені та IP, Linux не буде питати DNS-сервер. -
За яким портом зазвичай працює DNS?
Відповідь
Порт 53 (UDP для швидких запитів, TCP для великих відповідей). -
Що робить параметр
searchу файлі /etc/resolv.conf?Відповідь
Він дозволяє використовувати короткі імена. Наприклад, якщо `search` містить `google.com`, то при запиті `mail` система автоматично спробує знайти `mail.google.com`. -
Яка команда в Linux є найбільш інформативною для діагностики DNS?
Відповідь
`dig`. Вона показує всі секції відповіді DNS-сервера, час запиту та технічні деталі.
Практична вправа
Розділ «Практична вправа»Завдання: Дослідити налаштування DNS на вашій системі.
- Перегляньте свої DNS-сервери:
Terminal window cat /etc/resolv.conf - Спробуйте дізнатися IP-адресу сайту через
dig:Terminal window dig +short ukr.net - Знайдіть поштові сервери (MX записи) вашого улюбленого домену:
Terminal window dig domain.com MX - Додайте запис у
/etc/hosts(симуляція) і перевірте його черезpingабоhost.
Критерії успіху: Ви розумієте, звідки система бере адреси DNS-серверів та вмієте користуватися dig.
Підсумок
Розділ «Підсумок»- DNS перетворює імена на IP.
- /etc/resolv.conf — де лежить конфігурація.
- /etc/hosts — локальні “швидкі” записи.
- dig — найкращий інструмент діагностики.
- CoreDNS — серце мережевої навігації в Kubernetes.
Далі: Модуль 3.3: Мережеві простори імен (Network Namespaces) — дізнайтеся, як Linux створює ізольовані мережі для кожного контейнера.