LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

Madal DNS-latentsus on kiire sirvimise vĂ”tmetegur. Selle minimeerimiseks on oluline hoolikalt valida DNS-serverid ja anonĂŒĂŒmsed edastusedAga esimene asi, mida pead tegema, on vabaneda kasututest pĂ€ringutest.

SeepĂ€rast loodi DNS algselt ĂŒlimalt vahemĂ€llu salvestatava protokollina. Tsoonide administraatorid mÀÀravad iga kirje jaoks eluea (TTL) ja lahendajad kasutavad seda teavet kirjete mĂ€llu salvestamisel, et vĂ€ltida ebavajalikku liiklust.

Kas vahemÀllu salvestamine on efektiivne? Paar aastat tagasi nÀitas minu vÀike uurimus, et see pole tÀiuslik. Vaatame praegust seisu.

Teabe kogumiseks paigasin KrĂŒptitud DNS-server vastuse TTL-vÀÀrtuse salvestamiseks. See on defineeritud kui iga sissetuleva pĂ€ringu kirjete minimaalne TTL. See annab hea ĂŒlevaate tegeliku liikluse TTL-jaotusest ja vĂ”tab arvesse ka ĂŒksikute pĂ€ringute populaarsust. Serveri parandatud versioon töötas mitu tundi.

Saadud andmestik koosneb 1 583 579 kirjest (nimi, kvantitĂŒĂŒp, TTL, ajatempel). Siin on ĂŒldine TTL-jaotus (x-telg on TTL sekundites):

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

Peale vĂ€ikese tĂ”usu 86 400 juures (peamiselt SOA-kirjete puhul) on TTL-id ĂŒsna ilmselged, et need on madalas vahemikus. Vaatame lĂ€hemalt:

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

Olgu, ĂŒle tunni kestvad TTL-id on statistiliselt ebaolulised. Keskendume siis vahemikule 1–0:

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

Enamik TTL-e on vahemikus 0 kuni 15 minutit:

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

Valdav enamus on 0 kuni 5 minutit:

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

See pole eriti hea.

Kumulatiivne jaotus muudab probleemi veelgi ilmsemaks:

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

Pooltel DNS-vastustest on TTL 1 minut vÔi vÀhem ja kolmel neljandikul on TTL 5 minutit vÔi vÀhem.

Aga oota, tegelikult on see hullem. See on autoriteetsete serverite TTL. Klientresolverid (nt ruuterid, kohalikud vahemĂ€lud) saavad TTL-i aga ĂŒlesvoolu resolvereidelt ja see vĂ€heneb iga sekundiga.

Seega saab klient enne uue pÀringu saatmist iga kirjet kasutada keskmiselt poole algsest TTL-ist.

VÔib-olla kehtivad need vÀga madalad TTL-id ainult ebatavaliste pÀringute, mitte populaarsete veebisaitide ja API-de puhul? Vaatame lÀhemalt:

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

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

Kahjuks on kÔige populaarsemad pÀringud ka kÔige halvemini vahemÀllu salvestatud.

Suumime sisse:

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

Kohtuotsus: See on tÔesti halb. See oli juba niigi halb ja on lÀinud hullemaks. DNS-i vahemÀllu salvestamine on muutunud praktiliselt kasutuks. Kuna vÀhem inimesi kasutab oma internetiteenuse pakkuja DNS-i lahendajat (mÔjuvatel pÔhjustel), muutub latentsuse suurenemine mÀrgatavamaks.

DNS-i vahemĂ€llu salvestamine on muutunud kasulikuks ainult sisu puhul, mida keegi ei kĂŒlasta.

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

Miks nii?

Miks on DNS-kirjetele seatud nii lĂŒhike TTL?

  • PĂ€randkoormuse tasakaalustajatele jĂ€etakse vaikesĂ€tted.
  • On mĂŒĂŒte, et DNS-i koormuse tasakaalustamine sĂ”ltub TTL-ist (see ei ole tĂ”si - alates Netscape Navigatorist valivad kliendid RR-komplektist juhusliku IP-aadressi ja proovivad lĂ€bipaistvalt teist, kui nad ei saa ĂŒhendust luua).
  • Administraatorid soovivad muudatusi kohe rakendada, seega on seda lihtsam planeerida.
  • DNS-serveri vĂ”i koormuse tasakaalustaja administraator nĂ€eb oma ĂŒlesannet kasutajate poolt nĂ”utud konfiguratsiooni tĂ”husa juurutamisena, mitte saitide ja teenuste töö kiirendamisena.
  • Madal TTL annab meelerahu.
  • Inimesed mÀÀravad testimiseks esialgu madalad TTL-id ja unustavad need siis muuta.

Ma ei lisanud "tĂ”rgeteta ĂŒleviimist", kuna see muutub ĂŒha vĂ€hem asjakohaseks. Kui teil on vaja kasutajad teise vĂ”rku suunata ainult selleks, et kuvada vealehte, kui absoluutselt kĂ”ik muu on katki, on ilmselt vastuvĂ”etav ĂŒle ĂŒheminutilise viivituse.

Lisaks tĂ€hendab ĂŒheminutiline TTL seda, et kui autoriteetsed DNS-serverid on blokeeritud kauem kui ĂŒks minut, ei pÀÀse keegi teine ​​​​sĂ”ltuvatele teenustele juurde. Ja koondamine ei aita, kui pĂ”hjuseks on konfiguratsiooniviga vĂ”i hĂ€kkimine. Teisest kĂŒljest, mĂ”istlike TTL-ide korral jĂ€tkavad paljud kliendid eelmise konfiguratsiooni kasutamist ja ei mĂ€rka seda kunagi.

Madalad TTL-id on suuresti CDN-teenuste ja koormuse tasakaalustajate sĂŒĂŒ, eriti kui nad kombineerivad madala TTL-iga CNAME-e ja sama madala (kuid sĂ”ltumatu) TTL-iga kirjeid:

$ 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 mÔni A-kirje aegub, tuleb saata uus pÀring. MÔlema TTL on 30 sekundit, kuid need ei ole samad. Tegelik keskmine TTL on 15 sekundit.

Aga oota! Asi lÀheb hullemaks. MÔned lahendajad kÀituvad sellises olukorras kahe omavahel 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öötab tÔenÀoliselt BIND-il. Kui sa seda pÀringut pidevalt saadad, tagastab see alati TTL-i vÀÀrtuseks 1. PÔhimÔtteliselt, raw.githubusercontent.com pole kunagi vahemÀllu salvestatud.

Siin on veel ĂŒks nĂ€ide sellest olukorrast 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. Ai. Ühel on korralik TTL, aga see on tĂ€iesti kasutu. Teiste CNAME-kirjete algne TTL on 60 sekundit, aga domeenide puhul... akamai.net Maksimaalne TTL on 20 sekundit ja ĂŒkski neist pole faasis.

Aga domeenid, mis pidevalt Apple'i seadmeid kĂŒsitlevad?

$ 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 Level1 resolveri kasutamisel enamasti 3 sekundi peale kinni.

Dropboxi?

$ 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

Salvestuse ajal safebrowsing.googleapis.com TTL-vÀÀrtus 60 sekundit, tÀpselt nagu Facebooki domeenidel. Ja jÀllegi, kliendi vaatenurgast on need vÀÀrtused poole vÔrra vÀhenenud.

Kuidas oleks minimaalse TTL-i mÀÀramisega?

Kasutades nime, pĂ€ringu tĂŒĂŒpi, TTL-i ja algselt salvestatud ajatempli, kirjutasin skripti, mis simuleerib 1,5 miljonit pĂ€ringut, mis lĂ€bivad vahemĂ€lu lahendajat, et hinnata aegunud vahemĂ€lukirje tĂ”ttu saadetud lisapĂ€ringute arvu.

47,4% pÀringutest esitati pÀrast olemasoleva kirje kehtivusaja lÔppemist. See on ebamÔistlikult kÔrge arv.

Milline on minimaalse TTL-i mÀÀramise mÔju vahemÀllu salvestamisele?

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

X-teljel on minimaalsed TTL-vÀÀrtused. Sellest vÀÀrtusest suurema toor-TTL-iga kirjeid see ei mÔjuta.

Y-teljel on nÀidatud kliendi pÀringute protsent, millel on juba vahemÀllu salvestatud kirje, kuid see on aegunud ja teeb uue pÀringu.

„LisapĂ€ringute“ osakaalu vĂ€hendatakse 47%-lt 36%-le, mÀÀrates minimaalseks TTL-iks lihtsalt 5 minutit. Minimaalse TTL-i mÀÀramine 15 minutile vĂ€hendab nende pĂ€ringute arvu 29%-ni. Minimaalse TTL-i mÀÀramine 1 tunniks vĂ€hendab neid 17%-ni. MĂ€rkimisvÀÀrne erinevus!

Kuidas oleks serveri poolel mitte midagi muuta, vaid kliendi DNS-i vahemÀludes (ruuterid, kohalikud resolverid) minimaalsed TTL-id mÀÀrata?

LÔpetage DNS-i jaoks naeruvÀÀrselt madala TTL-i kasutamine

NÔutavate pÀringute arv langeb minimaalse TTL-i mÀÀramisel 47 minutile 34%-lt 5%-le, minimaalse 25 minuti korral 15%-le ja minimaalse 13 tunni korral 1%-le. VÔib-olla on optimaalne 40 minutit.

Selle minimaalse muutuse mÔju on tohutu.

Millised on tagajÀrjed?

Muidugi, saate teenuse migreerida uuele pilveteenuse pakkujale, uuele serverile, uude vĂ”rku ja nĂ”uda klientidelt uusimate DNS-kirjete kasutamist. Ja piisavalt lĂŒhike TTL aitab muuta selle ĂŒlemineku sujuvaks ja tĂ”rgeteta. Kuid uuele infrastruktuurile migreerimisel ei oota keegi, et kliendid migreeruksid uutele DNS-kirjetele 1 minuti, 5 minuti vĂ”i 15 minuti jooksul. Minimaalse TTL-i mÀÀramine 40 minutile 5 minuti asemel ei takista kasutajatel teenusele juurdepÀÀsu.

See aga vÀhendab oluliselt latentsust ning parandab privaatsust ja usaldusvÀÀrsust, vÀltides ebavajalikke pÀringuid.

Muidugi, RFC-des öeldakse, et TTL-e tuleks rangelt jĂ€rgida. Kuid tegelikkus on see, et DNS-sĂŒsteem on muutunud liiga ebaefektiivseks.

Kui töötate autoriteetsete DNS-serveritega, kontrollige palun oma TTL-e. Kas teil on tÔesti vaja nii naeruvÀÀrselt madalaid vÀÀrtusi?

Muidugi on DNS-kirjete jaoks lĂŒhikeste TTL-ide mÀÀramiseks hĂ€id pĂ”hjuseid. Kuid mitte 75% DNS-liikluse puhul, mis vaevu muutub.

Ja kui mingil pÔhjusel on vaja DNS-i jaoks madalat TTL-i kasutada, siis veendu ka, et sinu saidil poleks vahemÀllu salvestamine lubatud. Samadel pÔhjustel.

Kui teil töötab kohalik DNS-vahemÀlu, nÀiteks dnscrypt-puhverserver, mis vÔimaldab teil mÀÀrata minimaalse TTL-i, kasutage seda funktsiooni. See on normaalne. Midagi halba ei juhtu. MÀÀrake minimaalne TTL 40 minuti (2400 sekundi) ja 1 tunni vahele. MÔistlik vahemik.

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster