Inisiatif hari bendera DNS 2020 untuk mengatasi masalah fragmentasi dan dukungan TCP

Hari ini, sejumlah besar layanan DNS dan produsen server DNS akan mengadakan acara bersama Hari bendera DNS 2020dirancang untuk memusatkan perhatian keputusan masalah dengan fragmentasi IP saat memproses pesan DNS besar. Ini adalah acara serupa yang kedua, tahun lalu β€œhari bendera DNS” terfokus pada pemrosesan permintaan EDNS yang benar.

Peserta dalam inisiatif DNS flag day 2020 menyerukan agar ukuran buffer yang direkomendasikan untuk EDNS diperbaiki menjadi 1232 byte (ukuran MTU 1280 dikurangi 48 byte untuk header), serta menterjemahkan memproses permintaan melalui TCP adalah fitur yang harus dimiliki di server. DI DALAM RFC 1035 Hanya dukungan untuk memproses permintaan melalui UDP yang ditandai sebagai wajib, dan TCP terdaftar sebagai yang diinginkan, namun tidak diperlukan untuk pengoperasian. Baru RFC 7766 ΠΈ RFC 5966 secara eksplisit mencantumkan TCP sebagai kemampuan yang diperlukan agar DNS berfungsi dengan benar. Inisiatif ini mengusulkan untuk memaksa transisi dari mengirim permintaan melalui UDP ke menggunakan TCP jika ukuran buffer EDNS yang ditetapkan tidak mencukupi.

Perubahan yang diusulkan akan menghilangkan kebingungan dalam memilih ukuran buffer EDNS dan memecahkan masalah fragmentasi pesan UDP besar, yang pemrosesannya sering menyebabkan hilangnya paket dan waktu tunggu di sisi klien. Di sisi klien, ukuran buffer EDNS akan konstan dan respons besar akan segera dikirim ke klien melalui TCP. Menghindari pengiriman pesan berukuran besar melalui UDP juga akan menyelesaikan masalah dengan paket besar yang dijatuhkan di beberapa firewall dan memungkinkan pemblokiran serangan untuk meracuni cache DNS, berdasarkan manipulasi paket UDP yang terfragmentasi (ketika dipecah menjadi beberapa fragmen, fragmen kedua tidak menyertakan header dengan pengidentifikasi, sehingga dapat dipalsukan, yang cukup dengan mencocokkan checksum saja) .

Mulai hari ini, penyedia DNS yang berpartisipasi termasuk CloudFlare, Quad 9, Cisco (OpenDNS) dan Google, secara bertahap akan berubah Ukuran buffer EDNS dari 4096 menjadi 1232 byte pada server DNS-nya (perubahan EDNS akan diterapkan dalam 4-6 minggu dan akan mencakup semakin banyak permintaan seiring waktu). Respons terhadap permintaan UDP yang tidak sesuai dengan batas baru akan dikirim melalui TCP. Vendor server DNS termasuk BIND, Unbound, Knot, NSD dan PowerDNS akan merilis pembaruan untuk mengubah ukuran buffer EDNS default dari 4096 byte menjadi 1232 byte.

Pada akhirnya, perubahan ini dapat menyebabkan masalah resolusi saat mengakses server DNS yang respons UDP DNSnya melebihi 1232 byte dan tidak dapat mengirimkan respons TCP. Eksperimen yang dilakukan di Google menunjukkan bahwa mengubah ukuran buffer EDNS hampir tidak berpengaruh pada tingkat kegagalan - dengan buffer 4096 byte, jumlah permintaan UDP yang terpotong adalah 0.345%, dan jumlah percobaan ulang yang tidak dapat dijangkau melalui TCP adalah 0.115%. Dengan buffer 1232 byte, angka tersebut adalah 0.367% dan 0.116%. Menjadikan dukungan TCP sebagai fitur DNS yang diperlukan akan menyebabkan masalah pada sekitar 0.1% server DNS. Perlu dicatat bahwa dalam kondisi modern, tanpa TCP, pengoperasian server ini sudah tidak stabil.

Administrator server DNS otoritatif harus memastikan bahwa server mereka merespons melalui TCP pada port jaringan 53 dan port TCP ini tidak diblokir oleh firewall. Server DNS yang memiliki reputasi baik juga tidak boleh mengirimkan respons UDP yang lebih besar dari
ukuran buffer EDNS yang diminta. Di server itu sendiri, ukuran buffer EDNS harus disetel ke 1232 byte. Resolver memiliki persyaratan yang kurang lebih sama - kemampuan wajib untuk merespons melalui TCP, dukungan wajib untuk mengirim permintaan berulang melalui TCP ketika menerima respons UDP terpotong, dan menyetel buffer EDNS ke 1232 byte.

Parameter berikut bertanggung jawab untuk mengatur ukuran buffer EDNS di server DNS yang berbeda:

  • MENGIKAT

    pilihan {
    edns-udp-ukuran 1232;
    ukuran maks-udp 1232;
    };

  • Simpul DNS

    muatan-maks-udp: 1232

  • Penyelesai Simpul

    net.bufsize(1232)

  • PowerDNS Resmi

    udp-pemotongan-ambang batas=1232

  • Rekursor PowerDNS

    edns-keluar-bufsize=1232
    udp-pemotongan-ambang batas=1232

  • Tidak terikat

    ukuran buffer-edns: 1232

  • NSD

    ipv4-edns-ukuran: 1232
    ipv6-edns-ukuran: 1232

    Sumber: opennet.ru

  • Tambah komentar