Nədən danışacağıq
DNS – qısa məlumat
İnformasiya texnologiyaları dünyasında bütün məlumatlar rəqəmsal formadadır. Səbəb sadədir, kompüterlər rəqəmləri daha yaxşı başa düşür. İnsanlar üçünsə əksinə – adlarla işləmək daha asandır. Məsələn, bu IP ünvanı 172.67.206.138 çox az adam yadda saxlaya bilər. Amma bunun qarşılığı olan netadmin.az isə heç kəsin yadından çıxmır. Yaxşı bəs insanlara rahat olan hərfi yazılış formasını kompüterlər necə başa düşür?
Bu işdə onlara bir növ tərcüməçi rolunu oynayan xüsusi sistemlər – DNS serverlər yardımçı olur. Açıqlaması Domain Name System (Domen Adı Sistemi) olan bu köməkçi domen adı – IP ünvan qarşılıqlarının siyahısını saxlayır. Internetdə 13 kök (root) DNS serveri var. Bunlardan başqa hər bir provayderin və bir çox hallarda şirkətlərin lokal DNS serveri olur. Bu lokal serverlər öz növbələrində Google (həmin o məşhur 8.8.8.8), OpenDNS (208.67.222.222), CloudFlare (1.1.1.1) kimi DNS serverlərdən məlumatları əldə edir.
Gəlin qısa olaraq DNS sorğunun keçdiyi mərhələlərə baxaq:
- Istifadəçi netadmin.az saytına daxil olmaq üçün brauzerdə saytın adını yazır.
- Kompüter öncə öz lokal yaddaşını (keş) yoxlayır. Əgər netadmin.az saytı üçün IP ünvan varsa birbaşa 10-cü addıma keçir və sorğunu veb-serverə yönləndirir. Yoxdursa sorğunu lokal DNS serverə göndərir.
- Lokal DNS server öz növbəsində lokal yaddaşını yoxlayır. Əgər DNS yazısı varsa müvafiq cavab verir, yoxdursa sorğunu kök DNS serverə yönləndirir. (Əslində sorğu birbaşa kök serverə getmir, bir çox hallarda Google kimi şirkətlərin DNS serverlərinə sorğu gedir və cavab ordan gəlir)
- Kök server birbaşa saytın IP ünvanını qaytarmır, əvəzində .az domeninə cavabdeh olan TLD (Top Level Domain) serverin adını göndərir.
- Lokal DNS server bu dəfə netadmin.az üçün DNS sorğusunu TLD serverə göndərir.
- TLD server də öz növbəsində .az domeninə cavabdeh Authoritative (Etibarlı) DNS serverin adını göndərir.
- Lokal DNS server bu addımda Authoritative serverə DNS sorğunu göndərir.
- Sonuncu cavab olaraq netadmin.az saytının IP ünvanını göndərir.
- Lokal DNS server bu yazını öz keşinə əlavə edir və kompüterə cavab olaraq IP ünvanı göndərir.
- Kömpüter saytı açmaq üçün həmin IP ünvana HTTPS sorğu göndərir.
- Server müvafiq məlumatlarla cavab verir.
- Kompüterin proqram təminatı bu məlumatları emal edib ekranda əks etdirir.
DNS problemlərini araşdırılması
nslookup
DNS ilə bağlı problemlər tez-tez rastlanan problemlərdəndir. Xoşbəxtlikdən bütün əməliyyat sistemləri (ƏS) ilkin araşdırma aparmaq üçün alətlər təqdim edir. nslookup bütün əməliyyat sistemlərində olan və geniş istifadə olunan alətdir. Alətdən istifadə etmək olduqca rahatdır, Windows ƏS-də cmd, Linux/Unix mühitində isə terminal vasitəsi ilə nslookup domenadi.domen formatında komandanı daxil edirsiz, sistem lokal DNS-dən aldığı məlumatı əks etdirir:
user@host ~ % nslookup netadmin.az
Server: 192.168.0.1:53
Address: 192.168.0.1:53#53
Non-authoritative answer:
Name: netadmin.az
Address: 104.21.50.133
Name: netadmin.az
Address: 172.67.206.138
Non-authoritative answer hissəsinə diqqət yetirin. Bu o deməkdir ki, cavab lokal DNS serverdən alınıb etibarlılığına təminat vermək olmur (yəni məlumat köhnə və ya səhv ola bilər). nslookup bizə etibarlı serverdən məlumat almaq imkanı da verir. Bunun üçün nslookup -type=ns domenadi.domen komandası yazılmalıdır. Bu komanda bizə netadmin.az üçün IP ünvanlara sahib olan authoritative serverlərin siyasını qaytaracaq:
user@host ~ % nslookup -type=ns netadmin.az
Server: 192.168.0.1:53
Address: 192.168.0.1:53#53
Non-authoritative answer:
netadmin.az nameserver = mark.ns.cloudflare.com.
netadmin.az nameserver = nina.ns.cloudflare.com.
Daha sonra yenidən nslookup sorğusu göndəririk bu dəfə isə cavabın hansı serverdən almaq istədiyimizi qeyd edirik. Komanda nslookup domenadi.domen nameserver formatında yazılır namserver əvəzinə müvafiq nameserver adı yazılır:
user@host ~ % nslookup netadmin.az mark.ns.cloudflare.com
Server: mark.ns.cloudflare.com
Address: 2a06:98c1:50::ac40:2182#53
Name: netadmin.az
Address: 172.67.206.138
Name: netadmin.az
Address: 104.21.50.133
Bu dəfə cavabı etibarlı serverdən almış olduq.
Əgər istifadəçinin daxil olmaq istədiyi domen adı ilə heç bir nəticə çıxmırsa axtarışı online alətlərlə etmək olar. Məsələn, ping.eu, dnschecker.org, Google Admin Toolbox kimi alətlər çox yardımçı ola bilər. Əgər bu alətlət axtardığınız domen üçün nəticə verirsə, deməli lokal DNS serverin Internetə çıxışla bağlı problemi var və lokal keşini yeniləyə bilmir.
Bəzi hallarda domen adına məxsus IP ünvan dəyişilə bilər. Bu dəyişikliklərin bütün serverlərdə yenilənməsi bir az zaman ala bilər. Hər hansı yazının DNS serverlərdə yenilənmə aralığını TTL adlanan parametr tənzimləyir. Bir çox DNS serverlərdə bu 3600 saniyə və ya 1 saat olur. Bu göstərici serverlərə gələn sorğu sayını azaldır, lakin yenilənmə çox vaxt apara bilər.
Windows ƏS ilə çalışan kompüterlərdə DNS keşinin yenilənməsi üçün ipconfig /flushdns komandasından istifadə edilə bilər. Linux/Unix sistemlərində bu sudo systemd-resolve –flush-caches komandasıdır:

dig
dig nslookup-la yanaşı istifadə olunan və daha çox Unix/Linux mühitində rast gəlinən alətdir. Bəsit sorğu belədir dig domenadi.domen:
user@host ~ % dig netadmin.az
; <<>> DiG 9.10.6 <<>> netadmin.az
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51000
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1410
;; QUESTION SECTION:
;netadmin.az. IN A
;; ANSWER SECTION:
netadmin.az. 300 IN A 172.67.206.138
netadmin.az. 300 IN A 104.21.50.133
;; Query time: 109 msec
;; SERVER: 2001:730:3ed2::53#53(2001:730:3ed2::53)
;; WHEN: Sun Apr 28 19:22:54 CEST 2024
;; MSG SIZE rcvd: 72
Göründüyü kimi, dig bizə bir cavabda daha çox məlumat verir. dig-dən alınan cavabda bir neçə hissə var:
- Ən başda dig alətinin versiyası əks olunub;
- global options hissəsində alətə verilən parametrlər əks olunur;
- Got answer – bu o deməkdir ki, serverdən cavab almışıq;
- HEADER hissəsində opcode dig alətinin həyata keçirdiyi əməliyyatı göstərir. status hissəsində sorğunun statusu əks olunub. Bu hissə vacibdir və bir neçə dəyərə sahib ola bilər:
- NOERROR: Sorğu zamanı heç bir problem yaşanmayıb
- SERVFAIL: sorğulanan domen adı mövcuddur, lakin DNS serverin səhvi ücbatından cavab ala bilmirik;
- NXDOMAIN: (Non-exist Domain) sorğulanan domen adı mövcud deyil;
- REFUSED: Sorğu server tərəfindən rədd edilib. Adətən bu o deməkdir ki, sorğulanan domen mövcud deyil, müraciət olunan server isə mövcud olmayan domenlər üçün heç bir məlumat təqdim etmir;
- QUESTION SECTION: sorğunun detallarını göstərir. Bu nümunədə biz netadmin.az domeni üçün IPv4 ünvanını sorğulamışıq;
- ANSWER SECTION: Serverin cavabını əks edir. Bizim nümunədə görürük ki, netadmin.az domeni üçün TTL 300 saniyəyə bərabər olan IPv4 ünvanlı iki DNS yazısı var.
- Query time: Sorğuya sərf olunan ümumi vaxtı göstərir.
- SERVER: Sorğuya cavab verən serverin IP ünvanını göstərir. Məndə bu IPv6 ünvanıdır.
- WHEN: Sorğunun göndərildiyi tarixi və saatı göstərir.
- MSG SIZE: Cavabın həcmini göstərir.
Bu arada, nslookup komandasında -debug açarsözü ilə yuxarıdakı məlumatları ala bilərik. Əksinə, dig-dən qısa məlumat almaq üçün isə dig +short domenadi.domen komandasından faydalanmaq olar.
nslookup-da olduğu kimi, dig-də də müxtəlif parametrlər göstərməklə fərqli cavablar ala bilərik. Məsələn, authoritative serverləri tapmaq üçün dig domenadi.domen ns komandasını yazmaq lazımdır:
user@host ~ % dig netadmin.az ns
; <<>> DiG 9.10.6 <<>> netadmin.az ns
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 627
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1410
;; QUESTION SECTION:
;netadmin.az. IN NS
;; ANSWER SECTION:
netadmin.az. 81988 IN NS mark.ns.cloudflare.com.
netadmin.az. 81988 IN NS nina.ns.cloudflare.com.
;; Query time: 58 msec
;; SERVER: 2001:730:3ed2::53#53(2001:730:3ed2::53)
;; WHEN: Sun Apr 28 20:02:51 CEST 2024
;; MSG SIZE rcvd: 95
hosts faylı
Əvvəldə qeyd etmişdim ki, kompüter DNS sorğu göndərən zaman öncə öz lokal keşini yoxlayır. Amma burada bir nüans var. Həm Windows, həm də Unix/Linux tipli ƏS-lərdə hosts adlı bir fayl var. Bu bir növ lokal DNS rolunu oynayır. Windows ƏS bu fayla C:\Windows\System32\drivers\etc qovluğunda yerləşir, Unix/Linux ƏS-lərdə isə /etc/ qovluğunda:

Bu faylda IP-domenadı.domen formatında yazılar əlavə etmək olar. Faylı redaktə edə bilmək üçün Administrator hüququ lazımdır. Bu fayl tez-tez redaktə olunan fayl deyil, lakin test məqsədi ilə DNS serverə dəyişiklik etmədən hər hansı bir sayta (məsələn, şirkətin veb səhifəsinə) istədiyimiz IP ünvanı verib yoxlamaq olar. Sistem və şəbəkə inzibatçıları bu üsuldan load balancer kimi alətləri aşmaq üçün geniş istifadə edir.
Bir vaxtlar hosts fayldan təhlükəsizlik üçün də istifadə edirdilər, məsələn, bloklamaq istədiyimiz domenin qarşısında 127.0.0.1 IP-ni yazmaqla sayta girişi bağlamaq olar.


Lakin burada da bir xırdalıq var. Əgər nslookup komandasını işə salsanız, sistem sizə saytın əsl IP ünvanını göstərəcək. Lakin ping ilə yoxlasanız sistem hosts faylındakı IP-yə müraciət edəcək:

Xülasə
Həm nslookup, həm də dig üçün N qədər parametr var. Məsələn, hər iki alət domenə xidmət göstərən mail serverlərin (MX) adlarını görməyə imkan verir. Bütün parametrlərə bir yazıda baxmaq çətindir. Amma hər iki komanda üçün dəstək menyusu var ki, orada bütün komandalara və izahına baxmaq olar.
Windows ƏS-də nslookup üçün dəstək menyusu nslookup /? komandası ilə açılır. Amma bu menyu az faydalıdır. nslookup-da həm də geniş dəstək menyusu var və onu açmaq üçün interaktiv rejimə keçmək lazımdır. Bunun üçün sadəcə nslookup yazıb enteri basırıq. Bununla biz nslookup alətinə daxil olmuş oluruq. Bundan sonra help yazaraq bütün parametrlərə və onların izahına baxmaq olar:

dig üçün isə dəstək menyusu sadəcə dig -h yazıb enteri basmaqla açılır.
netadmin.az IT haqqında Azərbaycan dilində
