Deployment aplikacji Średnio zaawansowany 55 min

Domena i rekordy DNS dla aplikacji

Skierujesz domenę lub subdomenę na serwer aplikacji i sprawdzisz rekordy DNS z kilku perspektyw, od publicznych resolverów po lokalny plik hosts.

Wróć do listy lekcji

1. Krótka teoria

Domena główna, na przykład example.com, może mieć subdomenę app.example.com przeznaczoną dla aplikacji. Rekord A wiąże nazwę z adresem IPv4, a AAAA z IPv6. Rekord CNAME tworzy alias do innej nazwy DNS; nie jest zamiennikiem rekordu adresowego w każdej sytuacji. Warto publikować tylko rekordy dla protokołów faktycznie skonfigurowanych na serwerze. Nazwa użyta w DNS powinna odpowiadać server_name app.example.com w Nginxie. TTL określa, jak długo odpowiedź może być przechowywana w cache. Po zmianie część resolverów może nadal zwracać starszą wartość aż do wygaśnięcia cache; ten proces potocznie nazywa się propagacją DNS. dig, host i getent hosts pokazują wynik z różnych perspektyw. Zapytania do resolverów takich jak 1.1.1.1 i 8.8.8.8 pomagają porównać publiczny stan. Lokalny wpis w /etc/hosts może chwilowo mapować domenę do IP na jednym komputerze, lecz nie publikuje niczego w DNS. Poprawny DNS wskazuje host, ale nie uruchamia Nginxa, nie otwiera portu i nie gwarantuje odpowiedzi aplikacji.

2. Przykłady komend

dig A app.example.com

Pyta domyślny resolver o rekord IPv4 subdomeny.

$ dig A app.example.com
dig AAAA app.example.com

Sprawdza, czy dla subdomeny opublikowano rekord IPv6.

$ dig AAAA app.example.com
dig @1.1.1.1 app.example.com A +short

Pyta wybrany publiczny resolver o krótki wynik rekordu A.

$ dig @1.1.1.1 app.example.com A +short
203.0.113.10
dig @8.8.8.8 app.example.com A +short

Pozwala porównać odpowiedź z innym publicznym resolverem.

$ dig @8.8.8.8 app.example.com A +short
203.0.113.10
host app.example.com

Pokazuje prostą informację o adresach przypisanych do nazwy.

$ host app.example.com
getent hosts app.example.com

Sprawdza rozwiązanie nazwy używane przez lokalny system, także z uwzględnieniem hosts.

$ getent hosts app.example.com

3. Zadanie praktyczne

Dla laboratoryjnej subdomeny app.example.com zaplanuj rekord A wskazujący adres IPv4 serwera. Jeśli serwer nie obsługuje poprawnie IPv6, nie dodawaj rekordu AAAA. Zapisz wartość TTL i skonfiguruj zgodny server_name w przykładowym bloku Nginxa. Sprawdź wynik przez dig, host i getent hosts, a następnie porównaj odpowiedzi resolverów 1.1.1.1 oraz 8.8.8.8. Jeżeli nie zarządzasz prawdziwą domeną, wykonaj ćwiczenie jako plan i opcjonalnie użyj lokalnego wpisu hosts wyłącznie w laboratorium.

4. Typowe błędy

  • Skierowanie rekordu A na nieaktualny lub prywatny adres IPv4 serwera.
  • Dodanie rekordu AAAA mimo braku działającej konfiguracji IPv6.
  • Niezgodność domeny w DNS z wartością server_name w Nginxie.
  • Oczekiwanie natychmiastowej zmiany mimo aktywnego cache i wcześniejszego TTL.
  • Traktowanie wpisu w /etc/hosts jako publicznej konfiguracji DNS.
  • Użycie CNAME bez zrozumienia, że wskazuje nazwę, a nie bezpośrednio adres IP.
  • Wnioskowanie z poprawnego DNS, że aplikacja i port HTTP muszą działać.

5. Podsumowanie

Rekord A kieruje nazwę na IPv4, AAAA na IPv6, a CNAME tworzy alias do innej nazwy. Domena w DNS musi być zgodna z server_name Nginxa. TTL i cache DNS wyjaśniają, dlaczego różne resolvery mogą przez pewien czas zwracać inne odpowiedzi. dig, host i getent hosts pozwalają porównać stan publiczny z lokalnym rozwiązywaniem nazw.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie