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/hostsAceastă 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-allroutersAceste 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/hostsauditd sau AIDE.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 hosts | sudo nano /etc/hosts |
| Faceți o copie de siguranță înainte de editare | sudo cp /etc/hosts /etc/hosts.bak |
| Verificați o mapare | getent hosts <hostname> |
| Testați cu ping | ping -c 4 <hostname> |
| Goliți cache-ul DNS | sudo 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!
la toate serviciile de găzduire