Good

DNS: Система доменних імен

DNS (Domain Name System) — це "телефонна книга" інтернету. Вона перетворює зрозумілі людям імена (google.com) в IP-адреси (142.250.74.78), які розуміють комп'ютери.

💡 Чому це важливо?
Без DNS довелося б запам'ятовувати IP-адреси всіх сайтів. DNS — критична інфраструктура: якщо він не працює, інтернет "зламаний", навіть якщо всі сервери живі.

Як працює DNS запит?

sequenceDiagram
    participant Browser as 🌐 Браузер
    participant Cache as 📦 Локальний кеш
    participant Resolver as 🔍 DNS Resolver<br/>(1.1.1.1)
    participant Root as 🌍 Root DNS
    participant TLD as 📁 .com TLD
    participant Auth as 🎯 Authoritative<br/>Google DNS

    Browser->>Cache: google.com?
    Cache-->>Browser: ❌ Немає в кеші

    Browser->>Resolver: google.com?
    Resolver->>Root: Хто відповідає за .com?
    Root-->>Resolver: TLD сервери .com

    Resolver->>TLD: Хто відповідає за google.com?
    TLD-->>Resolver: ns1.google.com

    Resolver->>Auth: Яка IP у google.com?
    Auth-->>Resolver: 142.250.74.78

    Resolver-->>Browser: 142.250.74.78
    Note over Cache: Кешуємо на TTL

Етапи запиту

  1. Кеш браузера — може вже знає?
  2. Кеш ОС/etc/hosts або системний кеш
  3. DNS resolver — провайдер або публічний (8.8.8.8, 1.1.1.1)
  4. Root DNS → TLD DNS → Authoritative DNS
  5. Відповідь кешується на час TTL

Ієрархія DNS

flowchart TB
    subgraph root["🌍 Root Zone (.)"]
        ROOT["13 кореневих серверів<br/>a.root-servers.net ... m.root-servers.net"]
    end

    subgraph tld["📁 Top-Level Domains"]
        COM[".com"]
        ORG[".org"]
        UA[".ua"]
        NET[".net"]
    end

    subgraph sld["🏢 Second-Level Domains"]
        GOOGLE["google.com"]
        AMAZON["amazon.com"]
        UMTC["umtc.ua"]
    end

    subgraph sub["📄 Subdomains"]
        MAIL["mail.google.com"]
        DOCS["docs.google.com"]
        WIKI["wiki.umtc.ua"]
    end

    ROOT --> tld
    COM --> GOOGLE
    COM --> AMAZON
    UA --> UMTC
    GOOGLE --> MAIL
    GOOGLE --> DOCS
    UMTC --> WIKI

    style root fill:#fee2e2
    style tld fill:#fef3c7
    style sld fill:#d1fae5

Структура доменного імені

www  .  example  .  com  .
 │        │        │    │
 │        │        │    └── Root (кореневий, зазвичай не пишеться)
 │        │        └─────── TLD (Top-Level Domain)
 │        └──────────────── SLD (Second-Level Domain)
 └───────────────────────── Subdomain

Типи DNS записів

Тип Призначення Приклад
A IPv4 адреса 93.184.216.34
AAAA IPv6 адреса 2606:2800:220:1::1
CNAME Псевдонім (alias) www → example.com
MX Поштовий сервер 10 mail.example.com
TXT Текст (SPF, DKIM) "v=spf1 ..."
NS DNS сервери домену ns1.example.com
PTR Reverse DNS (IP → домен) example.com
SRV Сервіс (порт, пріоритет) sipserver:5060

Приклади записів

; A запис  IPv4 адреса
example.com.        A       93.184.216.34

; AAAA запис  IPv6 адреса
example.com.        AAAA    2606:2800:220:1:248:1893:25c8:1946

; CNAME  псевдонім
www.example.com.    CNAME   example.com.

; MX  поштові сервери (число = пріоритет, менше = краще)
example.com.        MX      10 mail.example.com.
example.com.        MX      20 backup.example.com.

; TXT  SPF запис для пошти
example.com.        TXT     "v=spf1 include:_spf.google.com ~all"

; NS  DNS сервери домену
example.com.        NS      ns1.cloudflare.com.
example.com.        NS      ns2.cloudflare.com.

TTL — Time To Live

Кожен DNS запис має TTL — час (в секундах), скільки його можна кешувати.

example.com.    300    A    93.184.216.34
                 │
                 └── TTL = 300 секунд (5 хвилин)
TTL Особливості
Короткий (60-300с) Зміни застосовуються швидко, але більше навантаження
Довгий (3600-86400с) Менше запитів, але зміни застосовуються повільно
⚠️ Перед міграцією
Зменшіть TTL заздалегідь (за 24-48 годин). Після міграції поверніть назад.

Публічні DNS сервери

Провайдер IPv4 IPv6 Особливості
Cloudflare 1.1.1.1, 1.0.0.1 2606:4700:4700::1111 Найшвидший
Google 8.8.8.8, 8.8.4.4 2001:4860:4860::8888 Найпоширеніший
Quad9 9.9.9.9 2620:fe::fe Блокує malware
OpenDNS 208.67.222.222 2620:119:35::35 Фільтрація
ℹ️ Рекомендація для UMTC
Використовуйте `1.1.1.1` (Cloudflare) як основний і `8.8.8.8` (Google) як резервний.

Файл hosts

Локальний файл для ручного перевизначення DNS. Перевіряється до DNS запиту!

ОС Шлях
Linux/Mac /etc/hosts
Windows C:\Windows\System32\drivers\etc\hosts
# Формат: IP    домен    [аліаси]
127.0.0.1       localhost
::1             localhost

# Власні записи
192.168.1.100   myserver.local  myserver
10.10.10.1      vpn-gateway

# Блокування (направляємо в нікуди)
0.0.0.0         ads.example.com
0.0.0.0         tracking.example.com

Команди для роботи з DNS

Linux/Mac

# Простий запит
dig google.com
nslookup google.com

# Тільки IP
dig google.com +short

# Конкретний тип запису
dig google.com A          # IPv4
dig google.com AAAA       # IPv6
dig google.com MX         # Пошта
dig google.com TXT        # SPF, DKIM
dig google.com NS         # DNS сервери

# Запит через конкретний DNS
dig @1.1.1.1 google.com

# Reverse DNS (IP → домен)
dig -x 8.8.8.8

# Трасування DNS запиту
dig google.com +trace

# Очистити кеш
sudo systemd-resolve --flush-caches   # Ubuntu/Debian
sudo dscacheutil -flushcache          # macOS

Windows

# Запит
nslookup google.com

# Через конкретний DNS
nslookup google.com 8.8.8.8

# Конкретний тип
nslookup -type=MX google.com

# Очистити кеш
ipconfig /flushdns

# Показати кеш
ipconfig /displaydns

MikroTik RouterOS

# Показати налаштування DNS
/ip dns print

# Встановити DNS сервери
/ip dns set servers=1.1.1.1,8.8.8.8 allow-remote-requests=yes

# Статичні записи (локальний DNS)
/ip dns static add name=myserver.local address=192.168.1.100

# Очистити кеш
/ip dns cache flush

# Показати кеш
/ip dns cache print

Практичний приклад: Налаштування домену

flowchart TB
    subgraph registrar["1️⃣ Реєстратор домену"]
        NS["NS записи<br/>ns1.cloudflare.com<br/>ns2.cloudflare.com"]
    end

    subgraph dns["2️⃣ DNS провайдер (Cloudflare)"]
        A["A: example.com → 93.184.216.34"]
        WWW["A: www → 93.184.216.34"]
        MX["MX: 10 mail.example.com"]
        TXT["TXT: v=spf1 ..."]
    end

    subgraph server["3️⃣ Сервер"]
        WEB["Веб-сервер<br/>93.184.216.34"]
    end

    registrar --> dns
    dns --> server

    style registrar fill:#fee2e2
    style dns fill:#fef3c7
    style server fill:#d1fae5

Кроки налаштування

1. NS записи (в реєстратора домену):

example.com    NS    ns1.cloudflare.com
example.com    NS    ns2.cloudflare.com

2. A записи (в DNS панелі):

example.com        A    93.184.216.34
www.example.com    A    93.184.216.34

3. MX записи (для пошти):

example.com    MX    10 mail.example.com
mail           A     93.184.216.34

4. TXT для верифікації:

example.com    TXT    "v=spf1 ip4:93.184.216.34 -all"

DNS і безпека

Загрози

Загроза Опис
DNS Spoofing Підміна відповідей DNS
DNS Amplification DDoS атаки через DNS
Перехоплення Провайдер бачить всі запити

Захист

DNS over HTTPS (DoH):

https://cloudflare-dns.com/dns-query
https://dns.google/dns-query

DNS over TLS (DoT):

Port 853 замість 53
tls://1.1.1.1

DNSSEC — криптографічний підпис DNS записів.

Troubleshooting

Симптом Перевірка Рішення
Сайт не відкривається ping IP vs ping domain Якщо IP працює — проблема DNS
Зміни не застосовуються dig domain +short Очистіть кеш, зачекайте TTL
Різні IP на різних ПК Порівняйте DNS сервери Уніфікуйте налаштування
Повільний DNS dig domain (час) Змініть DNS сервер
# Швидка діагностика
ping 8.8.8.8           # Є інтернет?
ping google.com        # DNS працює?
dig google.com +short  # Що відповідає DNS?

Пов'язані теми

Шлях: networking/basics/dns.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications