Ah, resolv.conf
… acel fișier mic, dar incredibil de puternic, care stă la baza conexiunii tale la internet. Când totul funcționează ca uns, nici măcar nu știi că există. Dar în momentul în care începi să nu mai poți accesa site-uri, să descarci actualizări sau să te conectezi la servicii online, șansele sunt mari ca tocmai el să fie sursa frustrării tale. Nu ești singur! 🫂 Mulți utilizatori de Linux s-au lovit, la un moment dat, de o problemă legată de acest fișier esențial. Dar stai liniștit! Acest articol este ghidul tău complet pentru a diagnostica și remedia orice dificultate cu resolv.conf
. Vom merge pas cu pas, într-un limbaj simplu, pentru a te ajuta să recapeți controlul asupra conexiunii tale la rețea.
Ce este, de fapt, resolv.conf și de ce e crucial? 💡
Imaginează-ți internetul ca pe un oraș uriaș, iar site-urile web ca pe niște clădiri. Fiecare clădire are o adresă poștală (o adresă IP, de exemplu 172.217.160.142
pentru Google). Când vrei să vizitezi „Google”, nu tastezi adresa IP, ci numele „google.com”. Aici intervine DNS (Domain Name System), care este ca un director telefonic imens. El traduce numele de domenii ușor de reținut (ca google.com
) în adrese IP pe care computerele le pot înțelege.
Fișierul /etc/resolv.conf
îi spune sistemului tău de operare unde să caute acest director telefonic, adică specifică serverele DNS pe care computerul tău trebuie să le interogheze. Dacă informațiile din acest fișier sunt incorecte, lipsesc sau sunt inaccesibile, vei avea impresia că internetul nu funcționează, chiar dacă ai o conexiune fizică. Practic, computerul tău nu știe cum să găsească destinația dorită pe web.
Simptome comune ale unei probleme la resolv.conf 🔍
Cum știi că resolv.conf
este vinovatul? Există câteva indicii clare:
- Imposibilitatea de a accesa site-uri web folosind numele lor de domeniu: Poți accesa
google.com
tastând direct172.217.160.142
în browser, dar nu funcționează când tastezigoogle.com
. - Comenzi precum
ping
saudig
eșuează pentru nume de domenii: De exemplu,ping google.com
nu funcționează, darping 8.8.8.8
(care este adresa IP a serverului DNS Google) funcționează perfect. - Actualizările sistemului (
apt update
,yum update
) eșuează: Sistemul nu poate rezolva adresele serverelor de depozite. - Erori legate de rezoluția numelor de gazdă: Mesaje de eroare precum „Temporary failure in name resolution” sau „Could not resolve host”.
- Conexiune lentă la internet sau intermitentă: Uneori, chiar și serverele DNS lente sau supraîncărcate pot provoca probleme.
Înțelegerea dinamică a fișierului resolv.conf: De ce se schimbă?
Aici devine puțin mai complex. Pe sistemele moderne de Linux, resolv.conf
nu este adesea un fișier static pe care îl editezi manual. De cele mai multe ori, el este generat dinamic de diverse servicii de management al rețelei. Acesta este și motivul principal pentru care mulți utilizatori se confruntă cu probleme – modificările manuale sunt suprascrise de sistem.
Principalii „actori” care pot gestiona resolv.conf
sunt:
- NetworkManager: Soluția de management al rețelei pe majoritatea desktop-urilor.
- systemd-resolved: O componentă modernă a
systemd
care gestionează rezoluția numelor. - dhclient: Clientul DHCP, care obține automat configurația de rețea, inclusiv serverele DNS, de la router.
- Netplan (pe Ubuntu Server): Un utilitar pentru configurarea rețelei.
- Configurații manuale: Pe servere sau sisteme minimale,
resolv.conf
poate fi configurat static.
Înainte de a ne apuca de treabă, este crucial să înțelegem cine „deține” și cine actualizează fișierul tău resolv.conf
.
Soluția pas cu pas: Diagnosticul și remedierea problemelor resolv.conf 🛠️
Pasul 1: Verifică starea curentă și diagnostichează problema 🔍
Primul lucru este să vedem ce conține fișierul tău resolv.conf
și dacă problema este într-adevăr legată de DNS.
cat /etc/resolv.conf
O ieșire tipică ar putea arăta așa:
# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 8.8.8.8
Sau, dacă este gestionat de systemd-resolved
:
# This is /run/systemd/resolve/stub-resolv.conf.
# Please do not edit directly.
# This file is managed by systemd-resolved.
# Your system is using systemd-resolved for DNS resolution.
nameserver 127.0.0.53
options edns0 trust-ad
search localdomain
Apoi, verifică dacă problema este de DNS sau de conectivitate generală:
ping google.com # Ar trebui să eșueze dacă e o problemă DNS
ping 8.8.8.8 # Ar trebui să funcționeze dacă doar DNS-ul e afectat
Dacă ping 8.8.8.8
funcționează, dar ping google.com
eșuează, atunci ai o problemă de rezoluție DNS, adică exact ceea ce suspectăm!
Pasul 2: Identifică „proprietarul” fișierului resolv.conf
Acest pas este esențial pentru a aplica o soluție permanentă. Vezi dacă resolv.conf
este un fișier real sau o legătură simbolică (symlink):
ls -l /etc/resolv.conf
Dacă vezi ceva de genul:
lrwxrwxrwx 1 root root 29 Mar 15 10:00 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
Aceasta indică faptul că resolv.conf
este un symlink către un fișier gestionat de systemd-resolved. Orice modificare directă a /etc/resolv.conf
va fi ignorată sau suprascrisă.
Dacă nu este un symlink și conținutul său are un antet ca # Generated by NetworkManager
, atunci NetworkManager este cel responsabil. Fără un antet similar, ar putea fi gestionat de dhclient sau configurat manual.
Pasul 3: Aplică o soluție temporară (dacă ai nevoie de internet acum!) 🚀
Înainte de a ne scufunda în soluții permanente, să rezolvăm problema rapid, măcar temporar, pentru a putea accesa internetul. Această metodă este utilă pentru depanare sau pentru a descărca pachete necesare.
- Deschide fișierul
/etc/resolv.conf
cu un editor de text.sudo nano /etc/resolv.conf
- Șterge tot conținutul existent și adaugă următoarele linii:
nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 1.1.1.1
Acestea sunt servere DNS publice, rapide și de încredere (Google DNS și Cloudflare DNS).
- Salvează fișierul (
Ctrl+O
, apoiEnter
înnano
) și ieși (Ctrl+X
).
⚠️ Atenție: Pentru multe sisteme, mai ales cele desktop, această modificare va fi suprascrise la repornirea sistemului sau chiar mai devreme de serviciul care gestionează rețeaua. Este doar o soluție de urgență!
Pasul 4: Soluții permanente în funcție de „proprietar” ✅
a) Dacă fișierul este gestionat de NetworkManager
Acesta este scenariul cel mai comun pentru majoritatea utilizatorilor de desktop. Ai două opțiuni principale:
i) Prin interfața grafică (GUI):
- Accesează setările de rețea ale sistemului tău (de obicei, în meniul de setări).
- Selectează conexiunea de rețea pe care o utilizezi (Wi-Fi sau Ethernet).
- Caută setările IPv4 sau IPv6.
- Dezactivează opțiunea „Automatic (DHCP)” pentru DNS și introdu manual serverele DNS preferate (ex:
8.8.8.8, 8.8.4.4
). Asigură-te că le separi prin virgulă. - Salvează modificările și, dacă este necesar, dezactivează și reactivează conexiunea de rețea pentru ca modificările să ia efect.
ii) Prin linia de comandă (nmcli
):
- Află numele conexiunii tale:
nmcli connection show
Caută numele conexiunii active (de exemplu, „MyWifi” sau „Wired connection 1”).
- Modifică setările DNS:
sudo nmcli connection modify "Nume_Conexiune_Ta" ipv4.dns "8.8.8.8,8.8.4.4" sudo nmcli connection modify "Nume_Conexiune_Ta" ipv6.dns "2001:4860:4860::8888,2001:4860:4860::8844" # Opțional, pentru IPv6 sudo nmcli connection modify "Nume_Conexiune_Ta" ipv4.dns-search "domeniullocal.local" # Opțional sudo nmcli connection modify "Nume_Conexiune_Ta" ipv4.method manual # Dacă vrei IP-uri statice, altfel lasă auto sudo nmcli connection modify "Nume_Conexiune_Ta" ipv4.addresses "192.168.1.100/24" # Pentru IP static sudo nmcli connection modify "Nume_Conexiune_Ta" ipv4.gateway "192.168.1.1" # Pentru IP static
- Reîncarcă conexiunea pentru a aplica modificările:
sudo nmcli connection up "Nume_Conexiune_Ta"
b) Dacă fișierul este gestionat de systemd-resolved
Dacă /etc/resolv.conf
este un symlink către /run/systemd/resolve/stub-resolv.conf
sau similar, înseamnă că systemd-resolved
este la comandă. Acest serviciu folosește un cache DNS local și oferă o interfață unificată pentru rezoluția numelor.
Pentru a configura serverele DNS în acest caz, trebuie să editezi fișierul de configurare al systemd-resolved
:
- Deschide fișierul
/etc/systemd/resolved.conf
:sudo nano /etc/systemd/resolved.conf
- Decomentează și modifică liniile
DNS=
șiFallbackDNS=
cu serverele tale preferate:[Resolve] DNS=8.8.8.8 8.8.4.4 #FallbackDNS=1.1.1.1 9.9.9.9 #Domains= #DNSSEC=no #DNSOverTLS=no #MulticastDNS=no #LLMNR=no #Cache=yes #DNSStubListener=yes #ReadEtcHosts=yes
Poți adăuga mai multe adrese DNS, separate prin spațiu.
FallbackDNS
este folosit dacă serverele dinDNS
eșuează. - Salvează fișierul și repornește serviciul
systemd-resolved
:sudo systemctl restart systemd-resolved
- Verifică noile setări:
systemd-resolve --status
Ar trebui să vezi serverele DNS configurate sub secțiunea „DNS Servers”.
c) Dacă fișierul este gestionat de dhclient (mai ales pe servere sau sisteme minimale)
Pe sisteme unde NetworkManager
sau systemd-resolved
nu sunt prezente sau sunt dezactivate, dhclient
(clientul DHCP) este adesea responsabil de preluarea setărilor DNS de la router. Pentru a forța utilizarea unor servere DNS specifice:
- Editează fișierul de configurare al
dhclient
:sudo nano /etc/dhcp/dhclient.conf
- Caută linia care începe cu
#prepend domain-name-servers
. Decomenteaz-o și adaugă serverele DNS dorite. Dacă nu există, adaug-o la sfârșitul fișierului:prepend domain-name-servers 8.8.8.8, 8.8.4.4;
Aceasta va adăuga serverele specificate la începutul listei de servere DNS primite de la DHCP.
- Salvează fișierul și repornește serviciul de rețea (sau cel puțin interfața de rețea):
sudo systemctl restart networking
Sau, mai granular:
sudo ifdown eth0 && sudo ifup eth0 # înlocuiește eth0 cu numele interfeței tale
d) Configurație statică și imutabilă (atenție, doar pentru cazuri specifice!) ⚠️
Există scenarii, în special pe servere, unde dorești ca resolv.conf
să fie complet static și să nu fie modificat niciodată de niciun serviciu. În acest caz, poți edita manual fișierul și apoi îl poți face imutabil.
Un avertisment serios: A face un fișier imutabil (`chattr +i`) înseamnă că niciun program, nici măcar `root`, nu îl va putea modifica sau șterge până când atributul nu este eliminat. Utilizează această metodă doar dacă înțelegi pe deplin implicațiile și ești sigur că nu vrei ca serverele tale DNS să fie actualizate automat. Pe un desktop, această metodă poate duce la probleme neașteptate cu NetworkManager sau alte servicii.
- Editează fișierul
/etc/resolv.conf
manual, asigurându-te că conține doar serverele DNS dorite:sudo nano /etc/resolv.conf
nameserver 8.8.8.8 nameserver 8.8.4.4 search localdomain
- Salvează fișierul.
- Fă-l imutabil (atenție sporită la acest pas!):
sudo chattr +i /etc/resolv.conf
- Pentru a anula imutabilitatea, folosește:
sudo chattr -i /etc/resolv.conf
Pasul 5: Verifică rezoluția DNS și conectivitatea 🚀
După ce ai aplicat o soluție, este esențial să verifici dacă totul funcționează corect. Folosește din nou comenzile de diagnosticare:
cat /etc/resolv.conf
ping google.com
dig google.com
Comanda dig google.com
ar trebui să returneze adresele IP ale Google, indicând o rezoluție DNS de succes.
Sfaturi suplimentare și depanare avansată
- Verifică Firewall-ul: Asigură-te că firewall-ul tău (
ufw
,firewalld
, etc.) nu blochează portul UDP 53, care este utilizat pentru DNS. - Conflicte VPN: Dacă folosești un VPN, acesta își poate modifica propriile setări DNS, suprascriind pe cele ale sistemului. Dezactivează VPN-ul temporar pentru a vedea dacă problema persistă.
- Router-ul tău: Uneori, router-ul tău de acasă poate fi sursa problemei, dacă nu primește el însuși servere DNS valide de la ISP sau dacă are o configurație incorectă. Încearcă o repornire a router-ului.
- DNS Caching: Servicii precum
nscd
saudnsmasq
pot pune în cache rezultatele DNS. Dacă ai modificat serverele DNS, poate fi necesar să golești cache-ul.sudo systemctl restart nscd # Pentru nscd sudo systemctl restart dnsmasq # Pentru dnsmasq
Opinia mea (bazată pe date reale și experiență)
Din experiența mea vastă în depanarea sistemelor Linux, am observat că majoritatea problemelor cu resolv.conf
apar din cauza lipsei de înțelegere a modului în care sistemul gestionează de fapt fișierul. Utilizatorii, obișnuiți să editeze fișiere de configurare, modifică /etc/resolv.conf
direct, doar pentru a vedea că modificările lor dispar după o repornire sau după o reconectare la rețea. Această frustrare este alimentată de faptul că diverse distribuții și versiuni de Linux pot folosi mecanisme diferite (NetworkManager, systemd-resolved, dhclient) pentru același scop. Prin urmare, recomandarea mea principală este: identifică întotdeauna cine este „managerul” fișierului resolv.conf
pe sistemul tău înainte de a încerca orice modificare. Această singură verificare te poate scuti de ore întregi de depanare inutilă. Setarea DNS-urilor la nivelul serviciului corect (NetworkManager, systemd-resolved etc.) este cheia unei soluții durabile și fără bătăi de cap.
Concluzie
Navigarea prin labirintul problemelor legate de resolv.conf
poate părea intimidantă la început, dar sper că acest ghid detaliat te-a ajutat să înțelegi mai bine mecanismele din spatele rezoluției DNS pe Linux. Fie că ești un utilizator obișnuit sau un administrator de sistem, înțelegerea modului în care funcționează resolv.conf
și a serviciilor care îl gestionează este o abilitate fundamentală. Urmând acești pași, ar trebui să poți diagnostica și rezolva cu succes majoritatea problemelor, restabilind accesul complet la internet. Nu uita, răbdarea și o abordare metodologică sunt cele mai bune unelte ale tale în fața oricărei provocări tehnice! Succes! 💪