Economisiți 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul: Skills Începeți
Secțiuni
DNS Linux

Stăpânirea fișierului Hosts Linux: Ghidul complet pentru controlul DNS local

Indiferent dacă ești un developer care testează o nouă aplicație, un sysadmin care depanează propagarea DNS, sau pur și simplu cineva care vrea să blocheze site-uri distragătoare, fișierul /etc/hosts este unul dintre cele mai puternice și subutilizate instrumente pe orice sistem Linux. Acest ghid oferă o prezentare practică și aprofundată a tot ceea ce trebuie să știi — de la înțelegerea ce este fișierul hosts până la editarea lui în siguranță pe mediul tău de VPS Hosting.

1. Ce este fișierul Hosts?

Fișierul hosts este un fișier sistem în format text simplu care mapează nume de gazdă lizibile de oameni — cum ar fi www.example.com — la adresele IP corespunzătoare. Funcționează ca un resolver DNS local și static, și în mod crucial, este consultat de sistemul de operare *înainte* ca orice interogare DNS externă să fie efectuată.

Aceasta înseamnă că intrările din fișierul dvs. hosts au prioritate absolută asupra înregistrărilor DNS returnate de serverele de nume externe. Această caracteristică unică o face un instrument incredibil de versatil pentru:

  • Medii locale de dezvoltare — Testați un site web sub un domeniu care arată real fără a modifica înregistrările DNS în direct.
  • Depanarea DNS — Forțați temporar un domeniu să se rezolve la o IP specifică pentru a testa configurațiile serverului.
  • Blocarea site-urilor web — Redirecționați domeniile nedorite la o adresă non-rutabilă, blocând efectiv accesul.
  • Testarea staging și pre-lansare — Previzualizați o nouă configurație de server înainte de a comuta DNS la nivel global.
  • Securitatea rețelei — Blocați domeniile malițioase cunoscute la nivel de SO.

> Notă tehnică: Pe Linux, ordinea rezoluției este guvernată de fișierul /etc/nsswitch.conf. Configurația implicită de obicei plasează files (adică /etc/hosts) înainte de dns, asigurând că intrările locale sunt întotdeauna verificate mai întâi.

2. Unde se află fișierul Hosts pe Linux?

Pe toate distribuțiile Linux majore — inclusiv Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux și Arch Linux — fișierul hosts se află la:

/etc/hosts

Această cale este consistentă pe toate distribuțiile, ceea ce ușurează lucrul cu ea indiferent de mediul dvs. Fișierul este deținut de root și necesită privilegii ridicate pentru a fi editat.

Conținutul implicit al /etc/hosts

Un server Linux nou aprovizionat — cum ar fi unul care rulează pe AlexHost VPS Hosting — va conține de obicei intrări implicite similare cu următoarele:

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

Aceste intrări asigură că:

    localhost se rezolvă întotdeauna la adresa loopback 127.0.0.1 (IPv4) și ::1 (IPv6).
    Numele de gazdă al serverului se rezolvă local fără a necesita o interogare DNS externă.
    
    Nu ștergeți aceste intrări implicite decât dacă aveți un motiv specific și bine înțeles pentru a o face. Eliminarea lor poate cauza comportament neașteptat în serviciile de sistem, livrarea mesajelor și cadrul aplicațiilor.
    3. Înțelegerea structurii fișierului Hosts
    Fișierul hosts urmează un format simplu și consistent. Fiecare linie non-goală și non-comentariu reprezintă o singură mapare și respectă această sintaxă:
    IP_address    hostname    [alias1]    [alias2]    ...
    
    
    
    
    Câmp
    Descriere
    
    
    
    
    IP_address
    Adresa IPv4 sau IPv6 la care ar trebui să se rezolve numele de gazdă
    
    
    hostname
    Numele de domeniu complet calificat (FQDN) primar sau numele scurt al gazdei
    
    
    alias (opțional)
    Unul sau mai multe nume suplimentare care ar trebui să se rezolve la același IP
    
    
    
    
    Reguli cheie de formatare
    
    Spații albe: Câmpurile sunt separate prin spații sau tabulații. Sunt acceptate mai multe spații.
    Comentarii: Orice text care urmează unui caracter # pe o linie este tratat ca un comentariu și ignorat de sistem.
    Sensibilitate la majuscule: Numele de gazdă nu sunt sensibile la majuscule în practică, dar minusculele sunt convenția.
    Un IP per linie: Fiecare linie începe cu exact o adresă IP, urmată de unul sau mai multe nume de gazdă.
    
    Exemple practice
    Maparea unui singur domeniu la localhost:
    127.0.0.1    example.com
    Maparea mai multor nume de gazdă la același IP pe o singură linie:
    127.0.0.1    example.com    www.example.com    staging.example.com
    Blocarea unui domeniu prin direcționarea acestuia la o adresă non-rutabilă:
    0.0.0.0    ads.tracker.com
    Forțarea unui domeniu să se rezolve la IP-ul unui server la distanță specific:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Adăugarea comentariilor inline pentru documentație:
    # 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. Cum să editezi fișierul Hosts pe Linux (Pas cu Pas)
    Deoarece /etc/hosts este un fișier de configurare a sistemului, ai nevoie de privilegii root sau sudo pentru a-l modifica. Mai jos este un flux de lucru complet și sigur pentru producție.
    Pasul 1: Creează o copie de rezervă înainte de editare
    Aceasta este o practică obligatorie. Fă întotdeauna o copie de rezervă a fișierului înainte de a face orice modificări:
    sudo cp /etc/hosts /etc/hosts.bak
    Poți verifica dacă copia de rezervă a fost creată:
    ls -lh /etc/hosts*
    Dacă ceva merge prost, restaureaz-o instant cu:
    sudo cp /etc/hosts.bak /etc/hosts
    Pasul 2: Deschide fișierul Hosts cu un editor de text
    Folosind nano (recomandat pentru începători și editări rapide):
    sudo nano /etc/hosts
    nano este ușor de folosit, afișează comenzile rapide de la tastatură în partea de jos a ecranului și este disponibil implicit pe practic orice distribuție Linux.
    Folosind vim (preferat de administratorii experimentați):
    sudo vim /etc/hosts
    Folosind vi (disponibil pe instalații minime):
    sudo vi /etc/hosts
    Pasul 3: Adaugă, modifică sau elimină intrări
    Odată ce fișierul este deschis, navighează la locația potrivită și fă modificările tale. Iată cele mai comune operații:
    Adaugă o mapare nouă (adaugă la sfârșitul fișierului):
    127.0.0.1    myproject.local    www.myproject.local
    Blochează un site web:
    0.0.0.0    facebook.com    www.facebook.com
    Suprascrie DNS pentru un domeniu (de exemplu, pentru a testa un server nou):
    198.51.100.25    mywebsite.com    www.mywebsite.com
    Pasul 4: Salvează și ieși din editor
    În nano:
    
    Apasă CTRL + O pentru a scrie (salva) fișierul.
    Apasă Enter pentru a confirma numele fișierului.
    Apasă CTRL + X pentru a ieși.
    
    În vim sau vi:
    
    Apasă Esc pentru a te asigura că ești în modul comandă.
    Tastează :wq și apasă Enter pentru a scrie și ieși.
    Pentru a ieși fără a salva, tastează :q! și apasă Enter.
    
    Pasul 5: Verifică sintaxa modificărilor tale
    Înainte de a testa, confirmă vizual că intrările tale arată corect:
    cat /etc/hosts
    Poți folosi și grep pentru a găsi rapid o intrare specifică:
    grep "myproject.local" /etc/hosts
    Pasul 6: Testează mapările noi
    Folosește ping pentru a verifica că numele de gazdă se rezolvă la adresa IP așteptată:
    ping -c 4 myproject.local
    Pentru un domeniu blocat (mapat la 0.0.0.0 sau 127.0.0.1), ping-ul ar trebui să eșueze sau să se întoarcă imediat:
    ping -c 2 facebook.com
    Poți folosi și getent pentru o căutare mai directă în fișierul hosts:
    getent hosts myproject.local
    Această comandă interogheaza stiva de rezoluție a numelor sistemului (inclusiv /etc/hosts) și returnează IP-ul rezolvat, ceea ce o face mai fiabilă decât ping în scopuri de verificare.
    5. Cazuri de utilizare comune pentru fișierul Hosts
    5.1. Dezvoltare web locală
    Acesta este probabil cel mai frecvent caz de utilizare în rândul dezvoltatorilor. În loc să accesați proiectul local prin http://localhost:3000 sau http://127.0.0.1:8080, puteți atribui un nume de domeniu semnificativ, similar cu cel din producție.
    Exemplu de configurare:
    Adăugați la /etc/hosts:
    127.0.0.1    myproject.local    api.myproject.local    admin.myproject.local
    După salvare, navigați la http://myproject.local în browserul dvs. Cererea dvs. va fi rezolvată local fără a contacta vreun server DNS extern.
    Această abordare este deosebit de valoroasă atunci când:
    
    Aplicația dvs. utilizează virtual hosting și necesită un anumit header Host.
    Testați certificate SSL local (folosind certificate auto-semnate mapate la un nume de domeniu adecvat).
    Trebuie să simulați o arhitectură multi-subdomeniu (de ex., api., admin., cdn.).
    
    Dacă rulați mai multe proiecte pe un VPS cu cPanel, fișierul hosts poate ajuta, de asemenea, la testarea configurațiilor domeniilor înainte ca propagarea DNS să se finalizeze.
    5.2. Blocarea site-urilor nedorite
    Fișierul hosts este un blocker de conținut ușor, fără dependențe. Prin redirecționarea unui domeniu la 0.0.0.0 (preferat în loc de 127.0.0.1 deoarece eșuează mai rapid fără încercare de conexiune), puteți bloca accesul la nivel de sistem de operare — afectând toate browserele și aplicațiile simultan.
    Blocați distracțiile din rețelele sociale:
    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
    Blocați domeniile cunoscute de servire de anunțuri sau urmărire:
    0.0.0.0    doubleclick.net
    0.0.0.0    ads.google.com
    0.0.0.0    tracking.example-analytics.com
    > Sfat profesional: Listele de blocare întreținute de comunitate (cum ar fi cele din proiectul StevenBlack hosts) compilează zeci de mii de domenii de anunțuri, urmărire și malware într-un singur format de fișier hosts, pe care îl puteți fuziona în /etc/hosts.
    5.3. Testarea serverului pre-lansare și cutover DNS
    Atunci când migrați un site web pe un server nou — de exemplu, trecând de la Găzduire web partajată la un Server dedicat — propagarea DNS poate dura de la minute la 48 de ore. Fișierul hosts vă permite să previzualizați noul server imediat, doar de pe mașina locală, fără a afecta alți utilizatori.
    Scenariu: Migrați mywebsite.com pe un server nou cu IP 203.0.113.42.
    Adăugați la fișierul local /etc/hosts:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Acum, când vizitați mywebsite.com în browserul dvs., veți vedea conținutul noului server. Alți vizitatori din întreaga lume vor vedea încă serverul vechi până când DNS se propagă. Odată ce ați confirmat că totul funcționează corect, eliminați intrarea și lăsați DNS să preia controlul.
    Această tehnică este neprețuită pentru:
    
    Verificarea configurației serverului web înainte de lansare.
    Testarea certificatelor SSL pe noul server.
    Confirmarea rutării e-mailului și comportamentului aplicației după migrare.
    
    5.4. Ocolirea eșecurilor de rezolvare DNS
    Dacă un server DNS este temporar indisponibil sau returnează rezultate incorecte, puteți utiliza fișierul hosts ca o suprascriere de urgență pentru a restabili conectivitatea la serviciile critice.
    Exemplu:
    # Emergency override - DNS server outage 2025-01-15
    198.51.100.10    internal-api.company.com
    198.51.100.11    database.company.com
    Nu uitați să eliminați aceste intrări odată ce problema DNS subiacentă este rezolvată, pentru a evita mapări învechite care ar putea cauza confuzii în viitor.
    5.5. Medii de dezvoltare multi-server
    În configurații complexe de dezvoltare cu mai multe mașini virtuale sau containere, fișierul hosts poate mapla nume prietenoase la fiecare serviciu:
    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
    Aceasta elimină necesitatea de a reține adrese IP și face fișierele de configurare mai lizibile și portabile.
    6. Golirea cache-ului DNS după editări
    Pe majoritatea sistemelor Linux moderne, modificările la /etc/hosts intră în vigoare imediat pentru conexiunile noi. Cu toate acestea, dacă sistemul dvs. sau aplicațiile cache răspunsurile DNS, poate fi necesar să golești acel cache pentru a asigura că noile mapări sunt utilizate imediat.
    Pentru sisteme care utilizează systemd-resolved (Ubuntu 18.04+, Debian 10+, majoritatea distribuțiilor moderne):
    sudo systemctl restart systemd-resolved
    Sau, pentru a goli cache-ul fără o repornire completă:
    sudo resolvectl flush-caches
    Verifică dacă cache-ul a fost golit:
    sudo resolvectl statistics
    Pentru sisteme care utilizează nscd (Name Service Cache Daemon):
    sudo systemctl restart nscd
    Pentru sisteme care utilizează NetworkManager:
    sudo systemctl restart NetworkManager
    Pentru sisteme care utilizează dnsmasq:
    sudo systemctl restart dnsmasq
    Verificarea rezolverului DNS pe care îl folosește sistemul dvs.
    systemctl list-units --type=service | grep -E "resolved|nscd|dnsmasq|NetworkManager"
    > Cache-uri din browser: Rețineți că browserele web mențin propriul cache DNS intern, independent de OS. După modificarea /etc/hosts, poate fi necesar și să golești cache-ul DNS al browserului. În Chrome/Chromium, navighează la chrome://net-internals/#dns și fă clic pe Clear host cache.
    7. Best Practices și Considerații de Securitate
    ✅ Întotdeauna Faceți Backup Înainte de Editare
    sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)
    Utilizarea unui timestamp în numele fișierului de backup vă asigură că puteți urmări mai multe versiuni.
    ✅ Utilizați Comentarii pentru a Documenta Modificările Dvs.
    # Added 2025-01-15 by admin@example.com - staging server test
    203.0.113.42    staging.mywebsite.com
    Acest lucru este deosebit de important în mediile de echipă în care mai multe persoane pot accesa serverul.
    ✅ Eliminați Intrările Temporare Prompt
    Intrările adăugate pentru testare sau overrides de urgență ar trebui eliminate imediat după ce nu mai sunt necesare. Intrările vechi pot cauza probleme de conectivitate greu de diagnosticat luni mai târziu.
    ✅ Validați Sintaxa Dvs.
    O intrare malformată în fișierul hosts nu va cauza o prăbușire a sistemului, dar va eșua în rezolvare. Verificați întotdeauna intrările dvs. cu:
    getent hosts <hostname>
    ⚠️ Avertisment de Securitate: Hosts File Hijacking
    Software-ul malițios uneori modifică /etc/hosts pentru a redirecționa domenii legitime (cum ar fi site-uri de bănci sau servere de actualizare) la IP-uri controlate de atacatori. Aceasta este un vector de atac cunoscut numit hosts file hijacking.
    Protejați-vă împotriva acestui lucru prin:
    
    Setarea permisiunilor restrictive ale fișierului: sudo chmod 644 /etc/hosts
  • Monitorizarea fișierului pentru modificări neautorizate folosind instrumente precum auditd sau AIDE.
  • Revizuirea regulată a conținutului fișierului: cat /etc/hosts
  • ⚠️ Fișierul Hosts Nu Este un Substitut pentru DNS Corespunzător

    Pentru mediile de producție, fișierul hosts ar trebui utilizat doar pentru overrides temporare și dezvoltare locală. Pentru gestionarea permanentă a domeniilor, utilizați întotdeauna înregistrări DNS corespunzătoare. Dacă trebuie să înregistrați și să gestionați domenii în mod profesional, Înregistrarea Domeniilor prin intermediul unui furnizor de încredere vă asigură că infrastructura DNS este robustă și scalabilă.

    8. Concluzie

    Fișierul /etc/hosts este un instrument aparent simplu, dar remarcabil de puternic în setul de instrumente al fiecărui administrator Linux și dezvoltator. Capacitatea sa de a anula rezoluția DNS la nivel local — cu latență zero, fără dependențe externe și fără modificări de infrastructură — îl face indispensabil pentru:

    • Dezvoltatori care construiesc și testează aplicații la nivel local.
    • Administratori de sisteme care gestionează migrări de servere și ferestre de comutare DNS.
    • Utilizatori conștienți de securitate care blochează domenii malițioase sau nedorite.
    • Ingineri DevOps care orhestrează medii locale cu mai multe servicii.

    Punctele cheie din acest ghid:

    SarcinăComandă / Acțiune
    Deschideți fișierul hostssudo nano /etc/hosts
    Faceți o copie de siguranță înainte de editaresudo cp /etc/hosts /etc/hosts.bak
    Verificați o maparegetent hosts <hostname>
    Testați cu pingping -c 4 <hostname>
    Goliți cache-ul DNSsudo resolvectl flush-caches
    Restaurați din copie de siguranțăsudo cp /etc/hosts.bak /etc/hosts

    Indiferent dacă rulați un mediu de dezvoltare ușor sau gestionați o flotă de servere de producție pe AlexHost VPS Hosting, stăpânirea fișierului hosts este o abilitate fundamentală care aduce beneficii de fiecare dată când aveți nevoie de o anulare DNS locală rapidă și fiabilă. Editați cu încredere, documentați-vă modificările și păstrați întotdeauna o copie de siguranță — happy routing!