Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
DNS Linux

Opanowanie pliku Hosts w systemie Linux: Kompletny przewodnik do lokalnej kontroli DNS

Niezależnie od tego, czy jesteś deweloperem testującym nową aplikację, administratorem systemu rozwiązującym problemy z propagacją DNS, czy po prostu osobą, która chce blokować rozpraszające strony internetowe, plik /etc/hosts jest jednym z najpotężniejszych i niedocenianych narzędzi w każdym systemie Linux. Ten przewodnik zawiera głębokie, praktyczne wyjaśnienie wszystkiego, co musisz wiedzieć — od zrozumienia, czym jest plik hosts, do bezpiecznego edytowania go w środowisku VPS Hosting.

1. Czym jest plik hosts?

Plik hosts to zwykły plik tekstowy systemu, który mapuje czytelne dla człowieka nazwy hostów — takie jak www.example.com — na odpowiadające im adresy IP. Funkcjonuje jako lokalny, statyczny resolver DNS, a co kluczowe, jest konsultowany przez system operacyjny *przed* wykonaniem jakiegokolwiek zewnętrznego zapytania DNS.

Oznacza to, że wpisy w pliku hosts mają absolutny priorytet nad rekordami DNS zwracanymi przez zewnętrzne serwery nazw. Ta pojedyncza charakterystyka czyni go niezwykle wszechstronnym narzędziem do:

  • Lokalnych środowisk deweloperskich — Testowanie witryny internetowej pod rzeczywistą domeną bez ingerencji w aktywne rekordy DNS.
  • Rozwiązywania problemów DNS — Tymczasowe wymuszenie rozwiązania domeny na konkretny adres IP w celu testowania konfiguracji serwera.
  • Blokowania witryn internetowych — Przekierowanie niechcianych domen na adres nie będący trasą, skutecznie blokując dostęp.
  • Testowania staging i pre-launch — Podgląd nowej konfiguracji serwera przed globalnym przełączeniem DNS.
  • Bezpieczeństwa sieci — Blokowanie znanych złośliwych domen na poziomie systemu operacyjnego.

> Uwaga techniczna: Na Linux, kolejność rozwiązywania jest regulowana przez plik /etc/nsswitch.conf. Domyślna konfiguracja zazwyczaj umieszcza files (tj. /etc/hosts) przed dns, zapewniając, że wpisy lokalne są zawsze sprawdzane w pierwszej kolejności.

2. Gdzie znajduje się plik hosts w systemie Linux?

We wszystkich głównych dystrybucjach Linux — w tym Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux i Arch Linux — plik hosts znajduje się w:

/etc/hosts

Ta ścieżka jest spójna we wszystkich dystrybucjach, co ułatwia pracę niezależnie od Twojego środowiska. Plik jest własnością root i wymaga podwyższonych uprawnień do edycji.

Domyślna zawartość /etc/hosts

Świeżo aprowizowany serwer Linux — taki jak ten działający na AlexHost VPS Hosting — zwykle zawiera wpisy domyślne podobne do poniższych:

127.0.0.1       localhost
127.0.1.1       your-hostname.example.com your-hostname

# The following lines are desirable for IPv6 capable hosts
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

Te wpisy zapewniają, że:

    localhost zawsze rozwiązuje się na adres loopback 127.0.0.1 (IPv4) i ::1 (IPv6).
    Nazwa hosta serwera rozwiązuje się lokalnie bez konieczności zewnętrznego wyszukiwania DNS.
    
    Nie usuwaj tych wpisów domyślnych chyba że masz konkretny i dobrze zrozumiały powód. Ich usunięcie może spowodować nieoczekiwane zachowanie usług systemowych, dostarczania poczty i frameworków aplikacji.
    3. Zrozumienie struktury pliku Hosts
    Plik hosts ma prostą, spójną strukturę. Każda linia bez spacji i komentarzy reprezentuje jedno mapowanie i jest zgodna z następującą składnią:
    IP_address    hostname    [alias1]    [alias2]    ...
    
    
    
    
    Pole
    Opis
    
    
    
    
    IP_address
    Adres IPv4 lub IPv6, na który powinna być rozpoznana nazwa hosta
    
    
    hostname
    Podstawowa w pełni kwalifikowana nazwa domeny (FQDN) lub krótka nazwa hosta
    
    
    alias (opcjonalnie)
    Jedna lub więcej dodatkowych nazw, które powinny być rozpoznane na ten sam adres IP
    
    
    
    
    Kluczowe reguły formatowania
    
    Spacje: Pola są oddzielone spacjami lub tabulatorami. Wiele spacji jest dopuszczalne.
    Komentarze: Każdy tekst następujący po znaku # w linii jest traktowany jako komentarz i ignorowany przez system.
    Czułość na wielkość liter: Nazwy hostów nie są czułe na wielkość liter w praktyce, ale konwencją jest użycie małych liter.
    Jeden adres IP na linię: Każda linia zaczyna się dokładnie jednym adresem IP, po którym następuje jedna lub więcej nazw hostów.
    
    Praktyczne przykłady
    Mapowanie pojedynczej domeny na localhost:
    127.0.0.1    example.com
    Mapowanie wielu nazw hostów na ten sam adres IP w jednej linii:
    127.0.0.1    example.com    www.example.com    staging.example.com
    Blokowanie domeny poprzez wskazanie jej na adres bez routingu:
    0.0.0.0    ads.tracker.com
    Wymuszenie rozpoznania domeny na konkretny adres IP serwera zdalnego:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Dodawanie komentarzy wbudowanych do dokumentacji:
    # Local development environment - Project Alpha
    127.0.0.1    alpha.local    api.alpha.local
    
    # Blocked domains - updated 2025-01-15
    0.0.0.0    malicious-site.com
    4. Jak edytować plik Hosts na Linux (Krok po kroku)
    Ponieważ /etc/hosts jest plikiem konfiguracji systemowej, potrzebujesz uprawnień root lub sudo aby go modyfikować. Poniżej znajduje się kompletny, bezpieczny dla produkcji przepływ pracy.
    Krok 1: Utwórz kopię zapasową przed edycją
    To jest nienegocjowalna najlepsza praktyka. Zawsze wykonaj kopię zapasową pliku przed wprowadzeniem zmian:
    sudo cp /etc/hosts /etc/hosts.bak
    Możesz sprawdzić, czy kopia zapasowa została utworzona:
    ls -lh /etc/hosts*
    Jeśli coś pójdzie nie tak, przywróć ją natychmiast za pomocą:
    sudo cp /etc/hosts.bak /etc/hosts
    Krok 2: Otwórz plik Hosts za pomocą edytora tekstu
    Używając nano (rekomendowane dla początkujących i szybkich edycji):
    sudo nano /etc/hosts
    nano jest przyjazny dla użytkownika, wyświetla skróty klawiaturowe na dole ekranu i jest dostępny domyślnie na praktycznie każdej dystrybucji Linux.
    Używając vim (preferowany przez doświadczonych administratorów):
    sudo vim /etc/hosts
    Używając vi (dostępny w instalacjach minimalnych):
    sudo vi /etc/hosts
    Krok 3: Dodaj, zmodyfikuj lub usuń wpisy
    Po otwarciu pliku przejdź do odpowiedniej lokalizacji i wprowadź zmiany. Oto najczęstsze operacje:
    Dodaj nowe mapowanie (dołącz na koniec pliku):
    127.0.0.1    myproject.local    www.myproject.local
    Zablokuj stronę internetową:
    0.0.0.0    facebook.com    www.facebook.com
    Zastąp DNS dla domeny (np. aby przetestować nowy serwer):
    198.51.100.25    mywebsite.com    www.mywebsite.com
    Krok 4: Zapisz i wyjdź z edytora
    W nano:
    
    Naciśnij CTRL + O aby zapisać plik.
    Naciśnij Enter aby potwierdzić nazwę pliku.
    Naciśnij CTRL + X aby wyjść.
    
    W vim lub vi:
    
    Naciśnij Esc aby upewnić się, że jesteś w trybie poleceń.
    Wpisz :wq i naciśnij Enter aby zapisać i wyjść.
    Aby wyjść bez zapisywania, wpisz :q! i naciśnij Enter.
    
    Krok 5: Sprawdź składnię swoich zmian
    Przed testowaniem wizualnie potwierdź, że twoje wpisy wyglądają poprawnie:
    cat /etc/hosts
    Możesz również użyć grep aby szybko znaleźć konkretny wpis:
    grep "myproject.local" /etc/hosts
    Krok 6: Przetestuj nowe mapowania
    Użyj ping aby sprawdzić, czy nazwa hosta jest rozpoznawana na oczekiwany adres IP:
    ping -c 4 myproject.local
    Dla zablokowanej domeny (zmapowanej na 0.0.0.0 lub 127.0.0.1), ping powinien się nie powieść lub zwrócić natychmiast:
    ping -c 2 facebook.com
    Możesz również użyć getent dla bardziej bezpośredniego wyszukiwania w pliku hosts:
    getent hosts myproject.local
    To polecenie wysyła zapytanie do stosu rozpoznawania nazw systemu (w tym /etc/hosts) i zwraca rozpoznany adres IP, co czyni go bardziej niezawodnym niż ping do celów weryfikacji.
    5. Typowe przypadki użycia pliku Hosts
    5.1. Lokalne tworzenie stron internetowych
    To jest prawdopodobnie najczęstszy przypadek użycia wśród deweloperów. Zamiast uzyskiwać dostęp do lokalnego projektu za pośrednictwem http://localhost:3000 lub http://127.0.0.1:8080, możesz przypisać znaczącą, podobną do produkcji nazwę domeny.
    Przykładowa konfiguracja:
    Dodaj do /etc/hosts:
    127.0.0.1    myproject.local    api.myproject.local    admin.myproject.local
    Po zapisaniu przejdź do http://myproject.local w przeglądarce. Twoje żądanie zostanie rozwiązane lokalnie bez kiedykolwiek dotykania zewnętrznego serwera DNS.
    To podejście jest szczególnie wartościowe, gdy:
    
    Twoja aplikacja używa wirtualnego hostingu i wymaga określonego nagłówka Host.
    Testujesz certyfikaty SSL lokalnie (używając certyfikatów z podpisem własnym mapowanych na prawidłową nazwę domeny).
    Musisz symulować architekturę wielosubdomenową (np. api., admin., cdn.).
    
    Jeśli uruchamiasz wiele projektów na VPS z cPanel, plik hosts może również pomóc w testowaniu konfiguracji domeny przed ukończeniem propagacji DNS.
    5.2. Blokowanie niechcianych stron internetowych
    Plik hosts jest lekkim blokerem treści bez zależności. Poprzez przekierowanie domeny do 0.0.0.0 (preferowane zamiast 127.0.0.1 ponieważ szybciej się nie powiedzie bez próby połączenia), możesz zablokować dostęp na poziomie systemu operacyjnego — wpływając na wszystkie przeglądarki i aplikacje jednocześnie.
    Blokuj rozpraszające media społecznościowe:
    0.0.0.0    facebook.com    www.facebook.com
    0.0.0.0    twitter.com    www.twitter.com
    0.0.0.0    reddit.com    www.reddit.com
    Blokuj znane domeny serwujące reklamy lub śledzące:
    0.0.0.0    doubleclick.net
    0.0.0.0    ads.google.com
    0.0.0.0    tracking.example-analytics.com
    > Wskazówka profesjonalisty: Listy blokowania utrzymywane przez społeczność (takie jak z projektu StevenBlack hosts) kompilują dziesiątki tysięcy domen reklamowych, śledzących i złośliwych w jeden format pliku hosts, który możesz scalić ze swoim /etc/hosts.
    5.3. Testowanie serwera przed uruchomieniem i przełączanie DNS
    Podczas migracji witryny na nowy serwer — na przykład przechodzenia z Hostingu Współdzielonego na Serwer Dedykowany — propagacja DNS może trwać od minut do 48 godzin. Plik hosts pozwala na natychmiastowy podgląd nowego serwera z twojej lokalnej maszyny, bez wpływu na innych użytkowników.
    Scenariusz: Migrujesz mywebsite.com na nowy serwer pod adresem IP 203.0.113.42.
    Dodaj do lokalnego /etc/hosts:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Teraz, gdy odwiedzisz mywebsite.com w przeglądarce, zobaczysz zawartość nowego serwera. Inni odwiedzający na całym świecie będą nadal widzieć stary serwer, aż DNS się rozpropaguje. Po potwierdzeniu, że wszystko działa prawidłowo, usuń wpis i pozwól DNS przejąć kontrolę.
    Ta technika jest nieoceniona dla:
    
    Weryfikacji konfiguracji serwera internetowego przed uruchomieniem.
    Testowania Certyfikatów SSL na nowym serwerze.
    Potwierdzenia routingu poczty i zachowania aplikacji po migracji.
    
    5.4. Obejście błędów rozwiązywania DNS
    Jeśli serwer DNS jest tymczasowo niedostępny lub zwraca nieprawidłowe wyniki, możesz użyć pliku hosts jako awaryjnego przesłonięcia, aby przywrócić łączność z usługami krytycznymi.
    Przykład:
    # Emergency override - DNS server outage 2025-01-15
    198.51.100.10    internal-api.company.com
    198.51.100.11    database.company.com
    Pamiętaj, aby usunąć te wpisy po rozwiązaniu podstawowego problemu DNS, aby uniknąć starych mapowań powodujących zamieszanie w przyszłości.
    5.5. Środowiska programistyczne z wieloma serwerami
    W złożonych konfiguracjach programistycznych z wieloma maszynami wirtualnymi lub kontenerami plik hosts może mapować przyjazne nazwy na każdą usługę:
    192.168.1.10    db.local         # Database server
    192.168.1.11    cache.local      # Redis/Memcached
    192.168.1.12    queue.local      # Message broker
    192.168.1.13    search.local     # Elasticsearch
    Eliminuje to potrzebę zapamiętywania adresów IP i czyni pliki konfiguracyjne bardziej czytelne i przenośne.
    6. Czyszczenie pamięci podręcznej DNS po edycji
    Na większości nowoczesnych systemów Linux zmiany w /etc/hosts wchodzą w życie natychmiast dla nowych połączeń. Jednak jeśli Twój system lub aplikacje buforują odpowiedzi DNS, może być konieczne wyczyszczenie tej pamięci podręcznej, aby upewnić się, że nowe mapowania są używane natychmiast.
    Dla systemów używających systemd-resolved (Ubuntu 18.04+, Debian 10+, większość nowoczesnych dystrybucji):
    sudo systemctl restart systemd-resolved
    Lub, aby wyczyścić pamięć podręczną bez pełnego ponownego uruchomienia:
    sudo resolvectl flush-caches
    Sprawdź, czy pamięć podręczna została wyczyszczona:
    sudo resolvectl statistics
    Dla systemów używających nscd (Name Service Cache Daemon):
    sudo systemctl restart nscd
    Dla systemów używających NetworkManager:
    sudo systemctl restart NetworkManager
    Dla systemów używających dnsmasq:
    sudo systemctl restart dnsmasq
    Sprawdzanie, którego resolvera DNS używa Twój system
    systemctl list-units --type=service | grep -E "resolved|nscd|dnsmasq|NetworkManager"
    > Pamięć podręczna przeglądarki: Pamiętaj, że przeglądarki internetowe utrzymują własną wewnętrzną pamięć podręczną DNS, niezależnie od systemu operacyjnego. Po zmodyfikowaniu /etc/hosts, może być również konieczne wyczyszczenie pamięci podręcznej DNS przeglądarki. W Chrome/Chromium przejdź do chrome://net-internals/#dns i kliknij Wyczyść pamięć podręczną hosta.
    7. Best Practices and Security Considerations
    ✅ Zawsze wykonuj kopię zapasową przed edycją
    sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)
    Użycie sygnatury czasowej w nazwie pliku kopii zapasowej pozwala śledzić wiele wersji.
    ✅ Używaj komentarzy do dokumentowania zmian
    # Added 2025-01-15 by admin@example.com - staging server test
    203.0.113.42    staging.mywebsite.com
    Jest to szczególnie ważne w środowiskach zespołowych, gdzie wiele osób może mieć dostęp do serwera.
    ✅ Usuń wpisy tymczasowe niezwłocznie
    Wpisy dodane do testowania lub awaryjnych zastąpień powinny być usunięte, gdy tylko nie będą już potrzebne. Stare wpisy mogą spowodować trudne do zdiagnozowania problemy z łącznością miesiące później.
    ✅ Sprawdź składnię
    Nieprawidłowy wpis w pliku hosts nie spowoduje awarii systemu, ale będzie cicho nie rozwiązywać. Zawsze dokładnie sprawdź swoje wpisy za pomocą:
    getent hosts <hostname>
    ⚠️ Ostrzeżenie o bezpieczeństwie: Przejęcie pliku hosts
    Złośliwe oprogramowanie czasami modyfikuje /etc/hosts w celu przekierowania legalnych domen (takich jak strony bankowe lub serwery aktualizacji) na adresy IP kontrolowane przez atakujących. Jest to znany wektor ataku zwany przejęciem pliku hosts.
    Chroń się przed tym poprzez:
    
    Ustawienie restrykcyjnych uprawnień do pliku: sudo chmod 644 /etc/hosts
  • Monitorowanie pliku pod kątem nieautoryzowanych zmian za pomocą narzędzi takich jak auditd lub AIDE.
  • Regularne przeglądanie zawartości pliku: cat /etc/hosts
  • ⚠️ Plik hosts nie jest substytutem dla prawidłowego DNS

    W środowiskach produkcyjnych plik hosts powinien być używany tylko do tymczasowych zastąpień i lokalnego rozwoju. Do trwałego zarządzania domenami zawsze używaj prawidłowych rekordów DNS. Jeśli chcesz profesjonalnie rejestrować i zarządzać domenami, Rejestracja domen za pośrednictwem niezawodnego dostawcy zapewnia, że infrastruktura DNS jest solidna i skalowalna.

    8. Podsumowanie

    Plik /etc/hosts to pozornie prosty, ale niezwykle potężny narzędzie w zestawie każdego administratora Linux i programisty. Jego zdolność do lokalnego zastępowania rozdzielczości DNS — z zerowym opóźnieniem, bez zewnętrznych zależności i bez zmian infrastruktury — czyni go niezbędnym dla:

    • Programistów budujących i testujących aplikacje lokalnie.
    • Administratorów systemów zarządzających migracjami serwerów i oknami przełączania DNS.
    • Użytkowników świadomych bezpieczeństwa blokujących złośliwe lub niechciane domeny.
    • Inżynierów DevOps orkiestrujących wielousługowe środowiska lokalne.

    Kluczowe wnioski z tego przewodnika:

    ZadaniePolecenie / Akcja
    Otwórz plik hostssudo nano /etc/hosts
    Utwórz kopię zapasową przed edycjąsudo cp /etc/hosts /etc/hosts.bak
    Zweryfikuj mapowaniegetent hosts <hostname>
    Testuj za pomocą pingping -c 4 <hostname>
    Wyczyść pamięć podręczną DNSsudo resolvectl flush-caches
    Przywróć z kopii zapasowejsudo cp /etc/hosts.bak /etc/hosts

    Niezależnie od tego, czy prowadzisz oszczędne środowisko programistyczne, czy zarządzasz flotą serwerów produkcyjnych na AlexHost VPS Hosting, opanowanie pliku hosts jest umiejętnością fundamentalną, która przynosi korzyści za każdym razem, gdy potrzebujesz szybkiego, niezawodnego lokalnego zastępowania DNS. Edytuj z pewnością, dokumentuj swoje zmiany i zawsze przechowuj kopię zapasową — powodzenia w routingu!