DNS-lippupäivä 2020 -aloite pirstoutumiseen ja TCP-tukeen liittyvien ongelmien ratkaisemiseksi

Tänään useat suuret DNS-palvelut ja DNS-palvelinvalmistajat pitävät yhteisen tilaisuuden DNS-lippupäivä 2020suunniteltu keskittymään siihen päätös ongelmia IP-osien pirstoutumisesta suuria DNS-viestejä käsiteltäessä. Tämä on toinen tällainen tapahtuma, viime vuonna "DNS-lippupäivä" oli keskittynyt EDNS-pyyntöjen oikeasta käsittelystä.

DNS lippupäivä 2020 -aloitteen osallistujat vaativat, että suositellut puskurikoot EDNS:lle vahvistetaan 1232 tavuun (MTU-koko 1280 miinus 48 tavua otsikoille) sekä kääntää pyyntöjen käsittely TCP:n kautta on pakollinen ominaisuus palvelimilla. SISÄÄN RFC 1035 Vain tuki pyyntöjen käsittelylle UDP:n kautta on merkitty pakolliseksi, ja TCP on listattu toivottavaksi, mutta ei pakolliseksi. Uusi RFC 7766 и RFC 5966 luettele TCP nimenomaisesti DNS:n asianmukaisen toiminnan edellyttämänä ominaisuutena. Aloitteessa ehdotetaan pakottamista siirtymään pyyntöjen lähettämisestä UDP:n kautta TCP:n käyttöön tapauksissa, joissa vahvistettu EDNS-puskurin koko ei ole riittävä.

Ehdotetut muutokset poistavat hämmennystä EDNS-puskurin koon valinnassa ja ratkaisevat suurten UDP-sanomien pirstoutumisen ongelman, jonka käsittely usein johtaa pakettien katoamiseen ja aikakatkaisuihin asiakaspuolella. Asiakaspuolella EDNS-puskurin koko on vakio ja suuret vastaukset lähetetään välittömästi asiakkaalle TCP:n kautta. Suurten viestien lähettämisen poistaminen UDP:n kautta ratkaisee myös ongelmat, jotka liittyvät suurten pakettien pudotukseen joissakin palomuureissa ja mahdollistaa eston. hyökkäyksiä DNS-välimuistin myrkyttämiseen, joka perustuu pirstoutuneiden UDP-pakettien manipulointiin (fragmenteiksi jaettuna toinen fragmentti ei sisällä tunnisteella varustettua otsikkoa, joten se voidaan väärentää, jolle riittää, että tarkistussumma vastaa) .

Tästä päivästä alkaen osallistuvat DNS-palveluntarjoajat, kuten CloudFlare, Quad 9, Cisco (OpenDNS) ja Google, muuttuu vähitellen EDNS-puskurin koko 4096 tavusta 1232 tavuun DNS-palvelimilla (EDNS-muutos jakautuu 4-6 viikolle ja kattaa ajan myötä kasvavan määrän pyyntöjä). Vastaukset UDP-pyyntöihin, jotka eivät mahdu uuteen rajaan, lähetetään TCP:n kautta. DNS-palvelintoimittajat, mukaan lukien BIND, Unbound, Knot, NSD ja PowerDNS, julkaisevat päivityksiä muuttaakseen oletusarvoisen EDNS-puskurin koon 4096 tavusta 1232 tavuun.

Viime kädessä nämä muutokset voivat johtaa ratkaisuongelmiin käytettäessä DNS-palvelimia, joiden UDP DNS-vastaukset ylittävät 1232 tavua ja jotka eivät voi lähettää TCP-vastausta. Googlella tehty koe osoitti, että EDNS-puskurin koon muuttamisella ei ole käytännössä mitään vaikutusta epäonnistumisprosenteihin - 4096 tavun puskurilla katkaistuja UDP-pyyntöjä on 0.345 % ja tavoittamattomien uudelleenyritysten määrä TCP:n kautta 0.115 %. 1232 tavun puskurilla nämä luvut ovat 0.367 % ja 0.116 %. TCP-tuen tekeminen pakolliseksi DNS-ominaisuudesta aiheuttaa ongelmia noin 0.1 %:lle DNS-palvelimista. On huomattava, että nykyaikaisissa olosuhteissa ilman TCP:tä näiden palvelimien toiminta on jo epävakaa.

Valtuutettujen DNS-palvelimien järjestelmänvalvojien tulee varmistaa, että heidän palvelimensa vastaa TCP:n kautta verkkoportissa 53 ja että palomuuri ei estä tätä TCP-porttia. Hyvämaineinen DNS-palvelin ei myöskään saa lähettää UDP-vastauksia, jotka ovat suurempia kuin
pyydetty EDNS-puskurin koko. Itse palvelimella EDNS-puskurin kooksi tulee asettaa 1232 tavua. Resolverilla on suunnilleen samat vaatimukset - pakollinen kyky vastata TCP:n kautta, pakollinen tuki toistuvien pyyntöjen lähettämiselle TCP:n kautta, kun vastaanotetaan katkaistu UDP-vastaus, ja EDNS-puskurin asettaminen 1232 tavuun.

Seuraavat parametrit ovat vastuussa EDNS-puskurin koon asettamisesta eri DNS-palvelimissa:

  • SITOA

    vaihtoehdot {
    edns-udp-size 1232;
    max-udp-koko 1232;
    };

  • Solmu DNS

    max-udp-hyötykuorma: 1232

  • Knot Resolver

    net.bufsize(1232)

  • PowerDNS:n arvovaltainen

    udp-truncation-threshold=1232

  • PowerDNS Recursor

    edns-outgoing-bufsize=1232
    udp-truncation-threshold=1232

  • sitomaton

    edns-buffer-size: 1232

  • NSD

    ipv4-edns-size: 1232
    ipv6-edns-size: 1232

    Lähde: opennet.ru

  • Lisää kommentti