15%

Economisește 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
30.10.2024
1 +1

Stăpânirea Fișierului Hosts Linux: Ghidul Complet pentru Controlul Local DNS

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

Cuprins

  1. Ce este fișierul Hosts?
  2. Unde se află fișierul Hosts pe Linux?
  3. Înțelegerea structurii fișierului Hosts
  4. Cum să editezi fișierul Hosts pe Linux (pas cu pas)
  5. Cazuri de utilizare comune pentru fișierul Hosts
  6. Golirea cache-ului DNS după editări
  7. Bune practici și considerații de securitate
  8. Concluzie

1. Ce este fișierul Hosts? {#what-is-the-hosts-file}

Fișierul hosts este un fișier de sistem text simplu care mapează nume de gazdă lizibile pentru 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* de a fi efectuată orice interogare DNS externă.

Aceasta înseamnă că intrările din fișierul tău hosts au prioritate absolută față de înregistrările DNS returnate de serverele de nume externe. Această singură caracteristică îl face un instrument incredibil de versatil pentru:

  • Medii de dezvoltare locală — Testează un site web sub un domeniu cu aspect real fără a atinge înregistrările DNS live.
  • Depanarea DNS — Forțează temporar un domeniu să se rezolve la un IP specific pentru a testa configurațiile serverului.
  • Blocarea site-urilor web — Redirecționează domeniile nedorite către o adresă nerutabilă, blocând efectiv accesul.
  • Testarea în staging și pre-lansare — Previzualizează o nouă configurație de server înainte de a comuta DNS-ul la nivel global.
  • Securitatea rețelei — Blochează domeniile malițioase cunoscute la nivelul sistemului de operare.

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

2. Unde se află fișierul Hosts pe Linux? {#location}

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ă între distribuții, facilitând lucrul cu ea indiferent de mediul tău. Fișierul este deținut de root și necesită privilegii ridicate pentru a fi editat.

Conținutul implicit al /etc/hosts

Un server Linux proaspăt provizionat — 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 de loopback 127.0.0.1 (IPv4) și ::1 (IPv6).
    Propriul hostname al serverului se rezolvă local fără a necesita o căutare DNS externă.
    
    Nu șterge aceste intrări implicite dacă nu ai un motiv specific și bine înțeles pentru a face acest lucru. Eliminarea lor poate cauza comportamente neașteptate în serviciile de sistem, livrarea e-mailurilor și framework-urile de aplicații.
    3. Înțelegerea structurii fișierului Hosts {#structure}
    Fișierul hosts urmează un format simplu și consistent. Fiecare linie care nu este goală și nu este un 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 hostname-ul
    
    
    hostname
    Numele de domeniu complet calificat (FQDN) primar sau hostname-ul scurt
    
    
    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 tab-uri. Spațiile multiple sunt acceptabile.
    Comentarii: Orice text care urmează unui caracter # pe o linie este tratat ca un comentariu și ignorat de sistem.
    Sensibilitate la majuscule: Hostname-urile sunt insensibile la majuscule în practică, dar minusculele sunt convenția.
    Un IP pe linie: Fiecare linie începe cu exact o adresă IP, urmată de unul sau mai multe hostname-uri.
    
    Exemple practice
    Mapează un singur domeniu la localhost:
    127.0.0.1    example.com
    Mapează mai multe hostname-uri la același IP pe o singură linie:
    127.0.0.1    example.com    www.example.com    staging.example.com
    Blochează un domeniu prin îndreptarea lui către o adresă nerutabilă:
    0.0.0.0    ads.tracker.com
    Forțează un domeniu să se rezolve la un IP specific al unui server la distanță:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Adaugă comentarii 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) {#editing}
    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, sigur pentru producție.
    Pasul 1: Creează o copie de rezervă înainte de editare
    Aceasta este o bună practică non-negociabilă. 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 că 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 utilizat, afișează comenzile rapide de la tastatură în partea de jos a ecranului și este disponibil pe aproape orice distribuție Linux în mod implicit.
    Folosind vim (preferat de administratorii cu experiență):
    sudo vim /etc/hosts
    Folosind vi (disponibil pe instalații minimale):
    sudo vi /etc/hosts
    Pasul 3: Adaugă, modifică sau elimină intrări
    Odată ce fișierul este deschis, navighează la locația corespunzătoare și fă modificările tale. Iată cele mai comune operațiuni:
    Adaugă o nouă mapare (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 ex., 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 a ieși.
    Pentru a ieși fără a salva, tastează :q! și apasă Enter.
    
    Pasul 5: Verifică sintaxa modificărilor tale
    Înainte de testare, 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ă noile mapări
    Folosește ping pentru a verifica că hostname-ul 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ă returneze 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ă interoghează stiva de rezoluție a numelor sistemului (inclusiv /etc/hosts) și returnează IP-ul rezolvat, făcând-o mai fiabilă decât ping în scopuri de verificare.
    5. Cazuri de utilizare comune pentru fișierul Hosts {#use-cases}
    5.1. Dezvoltare web locală
    Acesta este probabil cel mai comun caz de utilizare în rândul dezvoltatorilor. În loc să accesezi proiectul tău local prin http://localhost:3000 sau http://127.0.0.1:8080, poți atribui un nume de domeniu semnificativ, similar cu cel de producție.
    Exemplu de configurare:
    Adaugă în /etc/hosts:
    127.0.0.1    myproject.local    api.myproject.local    admin.myproject.local
    După salvare, navighează la http://myproject.local în browserul tău. Cererea ta se va rezolva local fără a contacta vreodată un server DNS extern.
    Această abordare este deosebit de valoroasă când:
    
    Aplicația ta folosește virtual hosting și necesită un antet Host specific.
    Testezi certificate SSL local (folosind certificate auto-semnate mapate la un nume de domeniu corespunzător).
    Trebuie să simulezi o arhitectură multi-subdomeniu (de ex., api., admin., cdn.).
    
    Dacă rulezi mai multe proiecte pe un VPS cu cPanel, fișierul hosts te poate ajuta să testezi configurațiile de domeniu înainte ca propagarea DNS să se finalizeze.
    5.2. Blocarea site-urilor web nedorite
    Fișierul hosts este un blocant de conținut ușor, fără dependențe. Prin redirecționarea unui domeniu la 0.0.0.0 (preferat față de 127.0.0.1 deoarece eșuează mai rapid fără nicio tentativă de conexiune), poți bloca accesul la nivelul sistemului de operare — afectând simultan toate browserele și aplicațiile.
    Blochează 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
    Blochează domeniile cunoscute de servire a reclamelor sau de urmărire:
    0.0.0.0    doubleclick.net
    0.0.0.0    ads.google.com
    0.0.0.0    tracking.example-analytics.com
    > Sfat pro: Listele de blocare întreținute de comunitate (cum ar fi cele din proiectul StevenBlack hosts) compilează zeci de mii de domenii de reclame, urmărire și malware într-un singur format de fișier hosts, pe care îl poți îmbina în /etc/hosts.
    5.3. Testarea serverului pre-lansare și comutarea DNS
    Când migrezi un site web pe un server nou — de exemplu, mutând de la Shared Web Hosting la un Server Dedicat — propagarea DNS poate dura de la câteva minute până la 48 de ore. Fișierul hosts îți permite să previzualizezi noul server imediat, doar de pe mașina ta locală, fără a afecta alți utilizatori.
    Scenariu: Migrezi mywebsite.com pe un server nou la IP-ul 203.0.113.42.
    Adaugă în /etc/hosts local:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Acum, când vizitezi mywebsite.com în browserul tău, vei vedea conținutul noului server. Alți vizitatori din întreaga lume vor vedea în continuare serverul vechi până când DNS-ul se propagă. Odată ce ai confirmat că totul funcționează corect, elimină intrarea și lasă DNS-ul să preia controlul.
    Această tehnică este de neprețuit pentru:
    
    Verificarea configurației serverului web înainte de lansare.
    Testarea Certificatelor SSL pe noul server.
    Confirmarea rutării e-mailurilor și a comportamentului aplicației după migrare.
    
    5.4. Ocolirea eșecurilor de rezoluție DNS
    Dacă un server DNS este temporar indisponibil sau returnează rezultate incorecte, poți folosi 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
    Amintește-ți să elimini aceste intrări odată ce problema DNS de bază este rezolvată, pentru a evita ca mapările învechite să cauzeze confuzie în viitor.
    5.5. Medii de dezvoltare multi-server
    În configurații de dezvoltare complexe cu mai multe mașini virtuale sau containere, fișierul hosts poate mapa 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 memora adresele IP și face fișierele de configurare mai lizibile și portabile.
    6. Golirea cache-ului DNS după editări {#flushing-dns}
    Pe majoritatea sistemelor Linux moderne, modificările aduse fișierului /etc/hosts intră în vigoare imediat pentru conexiunile noi. Cu toate acestea, dacă sistemul tău sau aplicațiile memorează în cache răspunsurile DNS, poate fi necesar să golești acel cache pentru a te asigura că noile mapări sunt utilizate imediat.
    Pentru sistemele care folosesc 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ă că cache-ul a fost golit:
    sudo resolvectl statistics
    Pentru sistemele care folosesc nscd (Name Service Cache Daemon):
    sudo systemctl restart nscd
    Pentru sistemele care folosesc NetworkManager:
    sudo systemctl restart NetworkManager
    Pentru sistemele care folosesc dnsmasq:
    sudo systemctl restart dnsmasq
    Verificarea rezolverului DNS pe care îl folosește sistemul tău
    systemctl list-units --type=service | grep -E "resolved|nscd|dnsmasq|NetworkManager"
    > Cache-urile browserului: Rețineți că browserele web mențin propriul cache DNS intern, independent de sistemul de operare. După modificarea fișierului /etc/hosts, poate fi necesar să golești și cache-ul DNS al browserului tău. În Chrome/Chromium, navighează la chrome://net-internals/#dns și fă clic pe Clear host cache.
    7. Bune practici și considerații de securitate {#best-practices}
    ✅ Fă întotdeauna o copie de rezervă înainte de editare
    sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)
    Folosirea unui timestamp în numele fișierului de rezervă asigură că poți urmări mai multe versiuni.
    ✅ Folosește comentarii pentru a documenta modificările tale
    # 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ă unde mai multe persoane pot accesa serverul.
    ✅ Elimină intrările temporare prompt
    Intrările adăugate pentru testare sau suprascrieri de urgență ar trebui eliminate imediat ce nu mai sunt necesare. Intrările învechite pot cauza probleme de conectivitate greu de diagnosticat luni mai târziu.
    ✅ Validează sintaxa ta
    O intrare malformată în fișierul hosts nu va cauza o blocare a sistemului, dar va eșua silențios la rezolvare. Verifică întotdeauna intrările tale cu:
    getent hosts <hostname>
    ⚠️ Avertisment de securitate: Deturnarea fișierului Hosts
    Software-ul malițios modifică uneori /etc/hosts pentru a redirecționa domeniile legitime (cum ar fi site-urile bancare sau serverele de actualizare) către IP-uri controlate de atacatori. Acesta este un vector de atac cunoscut numit deturnarea fișierului hosts.
    Protejează-te î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-ul corespunzător

    Pentru mediile de producție, fișierul hosts ar trebui folosit doar pentru suprascrieri temporare și dezvoltare locală. Pentru gestionarea permanentă a domeniilor, folosește întotdeauna înregistrări DNS corespunzătoare. Dacă ai nevoie să înregistrezi și să gestionezi domenii profesional, Înregistrarea domeniilor printr-un furnizor de încredere asigură că infrastructura ta DNS este robustă și scalabilă.

    8. Concluzie {#conclusion}

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

    • Dezvoltatori care construiesc și testează aplicații local.
    • Administratori de sistem care gestionează migrările serverelor și ferestrele de comutare DNS.
    • Utilizatori conștienți de securitate care blochează domenii malițioase sau nedorite.
    • Ingineri DevOps care orchestrează medii locale cu mai multe servicii.

    Principalele concluzii din acest ghid:

    SarcinăComandă / Acțiune
    Deschide fișierul hostssudo nano /etc/hosts
    Fă o copie de rezervă înainte de editaresudo cp /etc/hosts /etc/hosts.bak
    Verifică o maparegetent hosts <hostname>
    Testează cu pingping -c 4 <hostname>
    Golește cache-ul DNSsudo resolvectl flush-caches
    Restaurează din copia de rezervăsudo cp /etc/hosts.bak /etc/hosts

    Indiferent dacă rulezi un mediu de dezvoltare lean sau gestionezi 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 ai nevoie de o suprascriere DNS locală rapidă și fiabilă. Editează cu încredere, documentează modificările și păstrează întotdeauna o copie de rezervă — rutare fericită!

    15%

    Economisește 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