LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

Madala DNS-latents on vĂ”tmetĂ€htsusega tegur kiire interneti toimimises. Selle minimaalne hoidmine nĂ”uab hoolikat DNS-serverite valimist ja anonĂŒĂŒmsed rerouted. Kuid kĂ”igepealt tuleb vabaneda tarbetutest pĂ€ringutest.

Just seetĂ”ttu loodi DNS algselt vĂ€ga vahemĂ€llu salvestatava protokollina. Domeeni administraatorid seadistavad eluea (TTL) ĂŒksikutele kirjadele, ja resolvijad kasutavad seda teavet kirjade mĂ€lu hoidmiseks, et vĂ€ltida tarbetut liiklust.

Kas vahemÀllu salvestamine on efektiivne? MÔni aasta tagasi nÀitas mu vÀike uurimus, et see ei ole ideaalne. Vaatame praegust olukorda.

Teabe kogumiseks parandasin ma Encrypted DNS Server TTL vÀÀrtuse sĂ€ilitamiseks vastuse jaoks. See mÀÀratletakse kui kirjade minimaalne TTL, iga sisenemise pĂ€ringu jaoks. See annab hea ĂŒlevaate reaalsete liikluse TTL jaotumisest ning arvestab ĂŒksikute pĂ€ringute populaarsust. Parandatud serveri versioon töötas paar tundi.

Saadud andmekogum koosneb 1 583 579 kirjest (nimi, qtype, TTL, ajatempleid). Siin on TTL ĂŒldine jaotumine (X-telg on TTL sekundites):

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

Kui mitte arvestada vĂ€ikest tĂ”usu 86 400 (peamiselt SOA kirjade jaoks), on ĂŒsna ilmne, et TTL-d jÀÀvad madalale tasemele. Vaatame lĂ€hemalt:

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

Noh, TTL, mis on pikem kui 1 tund, ei ole statistiliselt oluline. Seega keskendume vahemikule 0−3600:

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

Enamik TTL-d on vahemikus 0 kuni 15 minutit:

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

Valdav enamus on vahemikus 0 kuni 5 minutit:

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

See ei ole eriti hea.

Kumulatiivne jaotumine muudab probleemi veelgi selgemaks:

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

Pooles DNS-vastustes on TTL 1 minut vÔi vÀhem, kolmes neljandikus on see 5 minutit vÔi vÀhem.

Aga oota, tegelikult on asi veel hullem. See TTL on autoriteetsete serverite poolt. Siiski saavad kliendi resolvijad (nt ruuteri, kohalikud vahemÀlud) TTL kÔrgemalt resolvijalt ning see vÀheneb iga sekundi jÀrel.

Seega saab klient tegelikult igat kirjet keskmiselt kasutada poole algsest TTL-ist, pÀrast mida saadab ta uue pÀringu.

VÔib-olla, et need vÀga madalad TTL-id puudutavad ainult ebatavalisi pÀringuid, mitte populaarseid veebisaite ja API-sid? Vaadakem:

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

X-telg on TTL, Y-telg on pÀringute populaarsus.

Kahjuks on kÔige populaarsemate pÀringute vahemÀllu salvestamine kÔige halvem.

LĂ€heneme sellele:

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

Kohtuotsus: kĂ”ik on tĂ”esti halvasti. Juba eelnevalt oli halb, kuid nĂŒĂŒd on veel hullem. DNS-i vahemĂ€lu on muutunud praktiliselt kasutuks. Kuna ĂŒha vĂ€hem inimesi kasutab oma pakkuja DNS-resolvrid (mĂ”istetavatel pĂ”hjustel), muutub viivitus mĂ€rgatavamaks.

DNS-i vahemĂ€lu on kasulik ainult sisu jaoks, mida keegi ei kĂŒlastanud.

Pange tÀhele, et tarkvara vÔib erinevalt tÔlgendada madalaid TTL-e.

Miks nii?

Miks on DNS-i kirjade jaoks seatud nii madal TTL?

  • Aegunud koormuse tasakaalustajad on jÀÀnud vaike seadistustega.
  • Levitavad mĂŒĂŒte, et DNS-i koormuse tasakaalus sĂ”ltub TTL-ist (see ei ole tĂ”si – alates Netscape Navigatori ajast valivad kliendid juhusliku IP-aadressi RR komplektist ja proovivad sujuvalt teist, kui ei Ă”nnestu ĂŒhenduda)
  • DNS-serveri administraatorid soovivad muudatusi kohe rakendada, seetĂ”ttu on see lihtsam planeerida.
  • DNS-serveri vĂ”i koormuse tasakaalustaja administraator peab oma ĂŒlesandeks tĂ”husalt rakendama konfiguratsiooni, mida kasutajad nĂ”uavad, mitte kiirendama veebilehtede ja teenuste tööd.
  • Madalamad TTL-id annavad meelerahu.
  • Inimesed seadistavad alguses madalad TTL-id katsetamiseks ja unustavad need hiljem muuta.

Ma ei lisanud „juhtimissektoreid“ nimekirja, kuna see muutub ĂŒha vĂ€hem asjakohaseks. Kui peate suunama kasutajad teise vĂ”rku ainult vea lehe kuvamiseks, kui kĂ”ik muu on katki, on tĂ”enĂ€oliselt lubatav viivitus ĂŒle 1 minuti.

Lisaks tĂ€hendab minuti TTL, et kui autoriteetsed DNS-serverid on blokeeritud rohkem kui 1 minut, ei saa keegi enam juurde pÀÀseda sĂ”ltuvatele teenustele. Ja ĂŒleolekus ei aita, kui pĂ”hjuseks on konfiguratsiooni tĂ”rge vĂ”i hĂ€kkimine. Teiselt poolt, mĂ”istlike TTL-idega jĂ€tkab palju kliente eelmise konfiguratsiooni kasutamist ega mĂ€rka kunagi midagi.

Madala TTL-i eest on suures osas sĂŒĂŒdistada CDN-teenuseid ja koormuse tasakaalustajaid, eriti kui nad kombineerivad CNAME jooksva madala TTL-iga ja rekorditega, millel on samuti madalad (kuid sĂ”ltumatud) TTL-id:

$ drill raw.githubusercontent.com
raw.githubusercontent.com.	9	IN	CNAME	github.map.fastly.net.
github.map.fastly.net.	20	IN	A	151.101.128.133
github.map.fastly.net.	20	IN	A	151.101.192.133
github.map.fastly.net.	20	IN	A	151.101.0.133
github.map.fastly.net.	20	IN	A	151.101.64.133

Iga kord, kui CNAME vĂ”i ĂŒkskĂ”ik milline A-kirje aegub, tuleb saata uus pĂ€ring. MĂ”lema TTL on 30 sekundit, kuid need ei ĂŒhti. Tegelik keskmine TTL on 15 sekundit.

Aga oodake! KÔik on isegi hullem. MÔned resolverid kÀituvad sellistes olukordades, kus on kaks seotud madala TTL-iga, vÀga halvasti:

$ drill raw.githubusercontent.com @4.2.2.2
raw.githubusercontent.com.	1	IN	CNAME	github.map.fastly.net.
github.map.fastly.net.	1	IN	A	151.101.16.133

Level3 resolver töötleb ilmselt BIND-i. Kui te jÀtkate selle pÀringu saatmist, tagastatakse alati TTL, mis on vÔrdne 1. Sisuliselt, raw.githubusercontent.com ei cache'ita kunagi.

Siin on veel ĂŒks selline olukord vĂ€ga populaarse domeeniga:

$ drill detectportal.firefox.com @1.1.1.1
detectportal.firefox.com.	25	IN	CNAME	detectportal.prod.mozaws.net.
detectportal.prod.mozaws.net.	26	IN	CNAME	detectportal.firefox.com-v2.edgesuite.net.
detectportal.firefox.com-v2.edgesuite.net.	10668	IN	CNAME	a1089.dscd.akamai.net.
a1089.dscd.akamai.net.	10	IN	A	104.123.50.106
a1089.dscd.akamai.net.	10	IN	A	104.123.50.88

VĂ€hemalt kolm CNAME-kirjet. Oi. Ühel on korralik TTL, kuid see on tĂ€iesti kasutu. Teistes CNAME-des on algne TTL 60 sekundit, kuid domeenide akamai.net maksimaalne TTL on 20 sekundit ja ĂŒkski neist ei ole faasis.

Kuidas on domeenidega, mis pidevalt kĂŒsivad Apple'i seadmete kaudu?

$ drill 1-courier.push.apple.com @4.2.2.2
1-courier.push.apple.com.	1253	IN	CNAME	1.courier-push-apple.com.akadns.net.
1.courier-push-apple.com.akadns.net.	1	IN	CNAME	gb-courier-4.push-apple.com.akadns.net.
gb-courier-4.push-apple.com.akadns.net.	1	IN	A	17.57.146.84
gb-courier-4.push-apple.com.akadns.net.	1	IN	A	17.57.146.85

Sama probleem, mis Firefoxil, ja TTL jÀÀb enamiku ajast 1 sekundi peale, kui kasutatakse Level3 resolverit.

Dropbox?

$ drill client.dropbox.com @8.8.8.8
client.dropbox.com.	7	IN	CNAME	client.dropbox-dns.com.
client.dropbox-dns.com.	59	IN	A	162.125.67.3

$ drill client.dropbox.com @4.2.2.2
client.dropbox.com.	1	IN	CNAME	client.dropbox-dns.com.
client.dropbox-dns.com.	1	IN	A	162.125.64.3

Kirje safebrowsing.googleapis.com TTL vÀÀrtus on 60 sekundit, nagu ka Facebooki domeenidel. Ja taas, kliendi seisukohalt, need vÀÀrtused vÀhenevad poole vÔrra.

Kuidas oleks minimaalse TTL-i seadistamisega?

Kasutades nime, pĂ€ringutĂŒĂŒpi, TTL-i ja algselt salvestatud ajatemplit, kirjutasin skripti, et simuleerida 1,5 miljoni pĂ€ringu lĂ€bimist lĂ€bi vahemĂ€luresolveri, et hinnata liigsete pĂ€ringute hulka, mis saadetakse aegunud vahemĂ€lukirje tĂ”ttu.

47,4% pÀringutest tehti pÀrast olemasoleva kirje aegumist. See on pÔhjendamatult kÔrge.

Milline oleks mÔju vahemÀlule, kui minimaalse TTL-i seaksime?

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

X-akse on TTL-i minimaalne vÀÀrtus. Kirjed, mille algne TTL on sellest vÀÀrtusest kÔrgem, ei mÔjuta.

Y-akse nÀitab protsenti kliendi pÀringutest, kellel on juba vahemÀllu salvestatud kirje, kuid selle kehtivusaeg on lÔppenud ning ta teeb uue pÀringu.

Liigne pÀringute osakaal vÀheneb 47% -lt 36% -le, kui seada minimaalne TTL 5 minutile. Kui minimaalne TTL on 15 minutit, vÀheneb see osakaal 29% -le. Minimaalne TTL 1 tunni kohta vÀhendab selle 17% -ni. Oluline erinevus!

Kuidas oleks, kui te ei muudaks serveri poolt midagi, vaid seataksite minimaalset TTL-i kliendi DNS-vahemÀlus (ruutereid, kohalikke resolvereid)?

LÔpeta naeruvÀÀrselt madala TTL-i kasutamine DNS-is

NÔutavate pÀringute arv vÀheneb 47% -lt 34% -le, kui seada minimaalne TTL 5 minutile, 25% -ni minimaalsega 15 minutit ja 13% -ni minimaalsega 1 tund. VÔib-olla on optimaalne vÀÀrtus 40 minutit.

Selle minimaalse muudatuse mÔju on tohutu.

Millised on tagajÀrjed?

Muidugi, teenuse saab ĂŒle viia uuele pilvepakkujale, uuele serverile, uuele vĂ”rgu, nĂ”udes klientidelt viimaste DNS-kirjete kasutamist. Ja piisavalt madal TTL aitab sujuvalt ja mĂ€rkamatult seda ĂŒleminekut teostada. Kuid uusi DNS-kirjeid ei oodata, et kliendid aktsepteeriksid 1 minuti, 5 minuti vĂ”i 15 minuti jooksul. Minimaalse eluea seadmine 40 minutile ei takista kasutajatel teenusele juurdepÀÀsu.

Kuid see vÔimaldab oluliselt vÀhendada viivitust ja suurendada privaatsust ning usaldusvÀÀrsust, vÀltides tarbetuid pÀringuid.

Muidugi ĂŒtleb RFC, et TTL-i tuleb rangelt jĂ€rgida. Kuid reaalsus on see, et DNS-sĂŒsteem on muutunud liiga ebaefektiivseks.

Kui teie töötab autoritatiivsete DNS-serveritega, palun kontrollige oma TTL-e. Kas teil tÔesti on vaja nii absurdelt madalaid vÀÀrtusi?

Muidugi on olemas ka pÔhjusi, miks seada madalaid TTL-e DNS-kirjadele. Kuid mitte 75% DNS-i liiklusest, mis praktiliselt ei muutu.

Ja kui mingitel pÔhjustel peate tÔeliselt kasutama madalaid TTL-e DNS-ile, veenduge samas, et teie saidil pole aktiivne vahemÀlumine. Sama pÔhjusel.

Kui teil on töötav kohalik DNS-vahemÀlu, nagu dnscrypt-proxy, mis vÔimaldab seada minimaalset TTL-i, kasutage seda funktsiooni. See on tÀiesti normaalne. Midagi halba ei juhtu. Seadke minimaalne TTL umbes 40 minuti (2400 sekundi) ja 1 tunni vahele. TÀiesti mÔistlik vahemik.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster