Jak zmienić DNS w Linuksie i gdzie ustawić serwer DNS

Oskar Gajzler
Przez
Oskar Gajzler
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak...
9 min czytania

DNS, czyli system nazw domenowych, zamienia czytelne nazwy stron internetowych na adresy IP. W Linuksie DNS można ustawić na kilku poziomach: globalnie dla całego systemu, dla konkretnego interfejsu sieciowego, przez menedżera sieci, w pliku resolv.conf albo — jeśli konfigurujesz własny serwer DNS — w plikach BIND9 takich jak named.conf.options i named.conf.local.

Co to jest DNS i po co go zmieniać

DNS odpowiada za tłumaczenie nazw typu example.com na adresy IP, dzięki czemu przeglądarka i inne aplikacje mogą znaleźć właściwy serwer. Zmiana DNS jest przydatna, gdy chcesz przyspieszyć rozwiązywanie nazw, poprawić prywatność, skorzystać z filtrów antyphishingowych albo używać własnego DNS w sieci lokalnej.

Najczęstsze powody zmiany DNS w Linuksie to:

  • szybsze ładowanie stron,
  • stabilniejsze działanie internetu,
  • korzystanie z DNS od dostawcy, Google, Cloudflare, Quad9 lub OpenDNS,
  • używanie lokalnego serwera DNS w firmie lub domu,
  • testowanie własnej domeny i rekordów DNS.

Gdzie ustawić serwer DNS w Linuksie

Jeśli chcesz zmienić DNS na komputerze lub serwerze z Linuksem, zwykle ustawiasz go w konfiguracji sieci: przez resolv.conf, NetworkManager, netplan albo resolvconf.

Jeśli chcesz uruchomić własny serwer DNS, konfigurujesz BIND9 w plikach named.conf.options, named.conf.local oraz w plikach stref, a potem wskazujesz systemowi ten serwer jako resolver.

W praktyce ważne jest rozróżnienie między dwoma rolami: DNS klienta (system pyta inne serwery o adresy domen) oraz DNS serwera (system sam odpowiada na zapytania jako serwer nazw).

Najprostsza zmiana DNS w Linuksie

W wielu dystrybucjach DNS można zmienić przez ustawienia interfejsu sieciowego lub menedżera sieci. Najczęściej używane są: resolv.conf, netplan, nmcli oraz resolvconf.

1. Sprawdź, jak system zarządza DNS

Najpierw sprawdź, czy DNS nie jest nadpisywany przez usługę systemową. W nowoczesnych systemach często spotyka się mechanizmy, które automatycznie generują /etc/resolv.conf, a w niektórych konfiguracjach można zobaczyć lokalny stub resolver, np. 127.0.0.53.

Przydatne polecenia diagnostyczne:

cat /etc/resolv.conf
resolvectl status
nmcli device show

Jeśli w /etc/resolv.conf widzisz adres lokalny, np. 127.0.0.53, oznacza to, że plik może być zarządzany przez systemowy resolver, a nie ręcznie edytowany.

2. Zmień DNS przez NetworkManager

Jeżeli używasz NetworkManagera, DNS najlepiej ustawić na poziomie połączenia. To rozwiązanie jest stabilniejsze niż ręczna edycja resolv.conf, ponieważ system nie nadpisze konfiguracji przy restarcie.

Przykładowo możesz użyć nmcli:

nmcli con show
nmcli con mod "NAZWA_POLACZENIA" ipv4.dns "1.1.1.1 8.8.8.8"
nmcli con mod "NAZWA_POLACZENIA" ipv4.ignore-auto-dns yes
nmcli con up "NAZWA_POLACZENIA"

To ustawia ręcznie serwery DNS dla danego połączenia i ignoruje DNS pobierany automatycznie z DHCP.

3. Zmień DNS w resolv.conf

W prostszych instalacjach DNS można wpisać bezpośrednio do /etc/resolv.conf. W tym pliku dodajesz linie nameserver z adresami IP serwerów DNS.

Przykład edycji pliku:

sudo nano /etc/resolv.conf

Następnie dodaj:

nameserver 1.1.1.1
nameserver 8.8.8.8

Warto jednak pamiętać, że w wielu systemach ten plik może być nadpisywany przez usługę sieciową, więc ta metoda nie zawsze jest trwała.

4. Zmiana DNS w Debianie i pochodnych przez resolvconf

W części instalacji używany jest pakiet resolvconf. Ustawienia wpisuje się do plików takich jak /etc/resolvconf/resolv.conf.d/base albo /etc/resolvconf/resolv.conf.d/head, po czym odświeża konfigurację.

Przykład:

sudo apt-get install resolvconf
sudo nano /etc/resolvconf/resolv.conf.d/base

Dodaj:

nameserver 1.1.1.1
nameserver 8.8.8.8

Potem wykonaj:

sudo resolvconf -u

Następnie możesz sprawdzić wynik w /etc/resolv.conf.

Jak ustawić DNS na stałe

Jeśli chcesz, by zmiana była trwała, najlepsza metoda zależy od dystrybucji i sposobu zarządzania siecią. Z praktyki wynikają trzy najczęstsze podejścia:

  • NetworkManager / nmcli — najlepsze na desktopach i wielu laptopach,
  • netplan — często stosowany w Ubuntu Server,
  • resolvconf / pliki interfejsu — użyteczne w starszych systemach Debian/Ubuntu.

W przypadku serwerów zawsze sprawdź, czy DNS nie jest ustawiany przez DHCP — ręczne wpisy mogą zostać zastąpione przy odnowieniu połączenia.

Dla szybkiego porównania najpopularniejszych metod zapoznaj się z poniższą tabelą:

MetodaGdzie ustawićTypowe zastosowanieTrwałość/uwagi
NetworkManager (nmcli)profil połączenialaptopy i desktopytrwałe; nie nadpisuje DHCP przy włączonym ignore-auto-dns
netplanpliki YAML w /etc/netplanUbuntu Servertrwałe; wymaga zastosowania konfiguracji i zgodności z rendererem
resolv.conf/etc/resolv.confproste, testowe konfiguracjeczęsto nadpisywane przez usługi systemowe
resolvconf/etc/resolvconf/resolv.conf.d/*starsze Debian/Ubuntutrwałe po odświeżeniu konfiguracji poleceniem resolvconf -u

Jak sprawdzić, czy DNS działa po zmianie

Po zmianie konfiguracji trzeba przetestować, czy system rzeczywiście korzysta z nowego serwera DNS. Do testowania polecane są dig i nslookup.

Przykłady:

dig example.com
nslookup example.com

Jeżeli chcesz sprawdzić konkretny serwer DNS:

dig @1.1.1.1 example.com
nslookup example.com 1.1.1.1

Dobrą praktyką jest też sprawdzenie reverse DNS:

dig -x 8.8.8.8

Gdzie ustawić własny serwer DNS w Linuksie

Jeśli nie chodzi o zmianę DNS klienta, tylko o postawienie własnego serwera DNS, najczęściej używa się BIND9. Konfiguracja obejmuje pliki named.conf, named.conf.options, named.conf.local oraz pliki stref, które trzeba utworzyć i odpowiednio wskazać w konfiguracji.

Typowy układ wygląda tak:

  • named.conf.options — opcje globalne serwera,
  • named.conf.local — definicje stref,
  • pliki stref forward i reverse — rekordy A, AAAA, PTR, CNAME itp.

Podstawowy schemat konfiguracji BIND9

Poniżej znajdziesz najczęściej wykonywane kroki przy konfiguracji:

  • instalacja pakietów bind9 i bind9utils,
  • utworzenie definicji stref,
  • przygotowanie plików stref,
  • sprawdzenie składni poleceniem named-checkconf,
  • restart usługi bind9,
  • testy przy pomocy dig i nslookup.

Przykładowa instalacja:

sudo apt install bind9 bind9utils

Sprawdzenie składni:

sudo named-checkconf

Restart i włączenie usługi:

sudo systemctl restart bind9
sudo systemctl enable bind9

Gdzie wpisuje się adres DNS w konfiguracji serwera

Jeśli konfigurujesz serwer DNS jako resolver lub forwarder, kluczowy jest plik named.conf.options — tam ustawiasz forwardery i reguły dostępu.

Jeśli konfigurujesz własną domenę i strefy, definicje umieszcza się w named.conf.local, a rekordy zapisuje w plikach strefowych.

W praktyce wygląda to tak:

  • w named.conf.options ustawiasz ogólne zachowanie serwera,
  • w named.conf.local deklarujesz strefy,
  • w plikach stref zapisujesz konkretne rekordy domeny.

Jak wygląda przykładowa zmiana DNS na serwerze Ubuntu

W przypadku Ubuntu Server typowy scenariusz to: instalacja bind9, konfiguracja named.conf.options, definicja stref forward i reverse w named.conf.local, utworzenie plików stref na podstawie szablonów oraz restart usługi.

Najważniejsze kroki są następujące:

  1. Zainstaluj BIND9.
  2. Skonfiguruj opcje serwera w named.conf.options.
  3. Dodaj strefy w named.conf.local.
  4. Utwórz pliki stref dla wyszukiwania do przodu i do tyłu.
  5. Ustaw odpowiednie uprawnienia plików.
  6. Sprawdź konfigurację named-checkconf.
  7. Uruchom ponownie bind9.
  8. Przetestuj działanie poleceniami dig i nslookup.

Najważniejsze pliki, które warto znać

W kontekście DNS w Linuksie najczęściej spotkasz następujące pliki:

  • /etc/resolv.conf — klasyczna konfiguracja resolvera klienta,
  • /etc/resolvconf/resolv.conf.d/base lub head — konfiguracja przy resolvconf,
  • konfiguracja połączenia w NetworkManager lub nmcli — trwała zmiana DNS dla interfejsu,
  • pliki netplan — w Ubuntu Server dla sieci i DNS,
  • /etc/bind/named.conf.options — ustawienia serwera BIND9,
  • /etc/bind/named.conf.local — deklaracje stref DNS,
  • pliki stref, np. db.*, własne pliki forward/reverse — rekordy domeny.

Najczęstsze problemy po zmianie DNS

Po zmianie DNS użytkownicy najczęściej napotykają podobne problemy:

  • system nadal używa starego DNS, bo konfigurację nadpisuje DHCP lub NetworkManager,
  • edytowany resolv.conf nie jest trwały,
  • serwer DNS nie odpowiada, bo usługa bind9 nie została uruchomiona,
  • w plikach stref są błędy składni,
  • zapora blokuje port 53 UDP/TCP,
  • rekordy PTR lub A są niezgodne z konfiguracją stref.

Jak napisać to w formie krótkiej instrukcji na stronę internetową

Jeśli potrzebujesz zwięzłego bloku instrukcyjnego do publikacji, możesz użyć takiej wersji:

  • otwórz ustawienia sieci lub plik /etc/resolv.conf,
  • wpisz adresy serwerów DNS w polach nameserver albo w konfiguracji połączenia,
  • zapisz zmiany i zrestartuj połączenie sieciowe albo usługę DNS,
  • sprawdź działanie komendami dig i nslookup.

Którą metodę wybrać

Najbardziej praktyczne podejście zależy od sytuacji:

  • na komputerze domowym najlepiej użyć NetworkManagera lub ustawień sieci,
  • na serwerze Ubuntu zwykle najlepiej skonfigurować DNS przez netplan lub właściwą usługę systemową,
  • na starszym Debianie spotykane są metody z resolvconf i ręcznym wskazywaniem DNS,
  • gdy stawiasz własny DNS użyj BIND9 i skonfiguruj pliki named.conf.* oraz strefy.
Udostępnij ten artykuł
Obserwuj
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak bezpiecznie korzystać z sieci i jak dobierać sprzęt oraz oprogramowanie. Prywatnie tropi nowinki technologiczne i testuje je, zanim opisze.
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *