Objasnjenje je krajnje prosto. Svi veliki javni rekurzivni DNS sistemi sa
ove liste (1.1.1.1, 9.9.9.9, OpenDNS itd.) rade na anycast-principu. Njihovi vlasnici su instalirali serverčiće po raznim lokalnim datacentrima. Ti serveri imaju najcesce vise adresa:
- Public Anycast (
frontend) IP (npr. 1.1.1.1, 9.9.9.9 itd.) - adresa koju korisnici gadjaju kada koriste public rDNS; ova adresa se najcesce konifigurise kao alias ili loopback.
- Public Real (
backend) IP (npr. 198.51.100.3) - realna adresa servera, zavisno od datacentra gde je povezan - konfigurise se na nekom realnom interfejsu (npr. eth0)
- Management IP - adresa kojom vlasnik rDNS servisa pristupa serveru (npr. koristeci ssh) - ovo se najcesce konfigurise unutar nekog VPN-a
- iLO / iDRAC IP - adresa recovery interfejsa servera (HP koristi iLO, Dell koristi iDRAC, ali sustina je identicna) - takodje ide u neki VPN.
Sve te adrese se oglasavaju BGP protokolom sa servera ka mrezi ISP gde je server povezan - bilo sa samog servera (npr. koriscenjem Quagga/BIRD), bilo koriscenjem namenskog malog rutera koji se kaci ispred servera. Ovo drugo resenje koriste Root server operateri (barem su to radili F i K Root pre 15-tak godina, ne znam kako je sada), jer im to omogucava da na ruteru nameste i IPsec VPN i mnoge druge stvarcice, a samom serveru prepuste da radi ono za sta je postavljen - DNS. Danas se cak ide i na vise servera postavljenih u rack, ispred kojih stoji load balancer.
Kada uputite query ka 1.1.1.1:
Code:
$ host youtube.com 1.1.1.1
taj upit ide ka najblizem rDNS serveru Cloudflare-a, a taj server kontaktira Guglove autoritativne DNS-ove. Medjutim, IP adresa koju Cloudflare rDNS koristi kada salje upit nije 1.1.1.1 - to mu je
frontend adresa. CF salje upite ka autoritativnim DNS serverima svojom
backend adresom, a ta adresa zavisi od datacentra gde se taj rDNS server nalazi. Na osnovu te backend adrese Gugl vraca adresu svog najblizeg keša. Najbliza instanca servera 1.1.1.1 za Srbiju je instalirana na SOX ili BIX (Sofija). Ako pogodite SOX Gugl ce u 99% slucajeva vratiti adresu nekog od domacih keševa, a nema ih mnogo.
Malo razonode - Akamai ima onaj zanimlijv servis
whoami.akamai.net i
whoami.ds.akahelp.net, vise informacija
ovde. Recimo, kada ja posaljem upit za youtube.com na 9.9.9.9 dobijam:
Code:
$ host youtube.com 9.9.9.9
Using domain server:
Name: 9.9.9.9
Address: 9.9.9.9#53
Aliases:
youtube.com has address 172.217.17.78
youtube.com has IPv6 address 2a00:1450:400e:804::200e
$ host 172.217.17.78
78.17.217.172.in-addr.arpa domain name pointer ams16s30-in-f78.1e100.net.
78.17.217.172.in-addr.arpa domain name pointer ams16s30-in-f14.1e100.net.
$ host 2a00:1450:400e:804::200e
e.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.4.0.8.0.e.0.0.4.0.5.4.1.0.0.a.2.ip6.arpa domain name pointer ams16s29-in-x0e.1e100.net.
Zasto je to tako? Ako kazemo:
Code:
$ host -t TXT whoami.ds.akahelp.net 9.9.9.9
Using domain server:
Name: 9.9.9.9
Address: 9.9.9.9#53
Aliases:
whoami.ds.akahelp.net descriptive text "ns" "74.63.25.243"
[74.63.25.243] je backend adresa kojom Quad9 DNS gadja Guglove autoritativne DNS-ove. Gde se nalazi taj server?
Code:
$ host 74.63.25.243
243.25.63.74.in-addr.arpa domain name pointer res200.ams.rrdns.pch.net.
U Amsterdamu! Otuda me Gugle uvek vraca na servere u Amsterdamu.
Slicna je prica sa svim ostalim "velikim" rDNS servisima. Inace,
whoami.ds.akahelp.net je koristan, jer daje i informaciju da li rDNS operater koristi EDNS0 (RFC7871) ili ne. Recimo, Google ga koristi{
Code:
$ host -t TXT whoami.ds.akahelp.net 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:
whoami.ds.akahelp.net descriptive text "ip" "85.147.69.241"
whoami.ds.akahelp.net descriptive text "ns" "173.194.169.69"
whoami.ds.akahelp.net descriptive text "ecs" "85.147.69.0/24/24"
Ovo prvo je moja dinamicka IP adresa (zapravo, DS Lite gatway kod mog ISP, s obzirom da kod kuce imam IPv6). Ovo "ns" je backend adresa Guglovog 8.8.8.8 servera. Ovo trece "ecs" oznacava da Gugl koristi EDNS0 Client Subnet. Za 1.1.1.1 vraca:
Code:
$ host -t TXT whoami.ds.akahelp.net 1.1.1.1
Using domain server:
Name: 1.1.1.1
Address: 1.1.1.1#53
Aliases:
whoami.ds.akahelp.net descriptive text "ns" "198.41.241.16"
Kao sto vidite, 1.1.1.1 ne koristi EDNS0 Client Subnet, bas kao sto i tvrde. OpenDNS ga koristi, tako da ako koristite OpeDNS on prosledjuje vas IP direktno Guglu:
Code:
$ host -t TXT whoami.ds.akahelp.net 208.67.222.2
Using domain server:
Name: 208.67.222.2
Address: 208.67.222.2#53
Aliases:
whoami.ds.akahelp.net descriptive text "ip" "85.147.69.241"
whoami.ds.akahelp.net descriptive text "ns" "2620:0:cc4::73"
whoami.ds.akahelp.net descriptive text "ecs" "85.147.69.0/24/24"
Igrajte se sa
whoami.akamai.net i
whoami.ds.akahelp.net, pa cete videti slicne rezultate. :-)
[Ovu poruku je menjao B3R1 dana 03.10.2020. u 18:34 GMT+1]