Π Π΅Π»ΠΈΠ· PowerDNS Recursor 4.3 ΠΈ KnotDNS 2.9.3

Бостоялся Ρ€Π΅Π»ΠΈΠ· ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡˆΠ΅Π³ΠΎ DNS-сСрвСра PowerDNS Recursor 4.3, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π° рСкурсивноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΡ‘Π½. PowerDNS Recursor построСн Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ с PowerDNS Authoritative Server, Π½ΠΎ рСкурсивный ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ DNS-сСрвСры PowerDNS Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2.

Π‘Π΅Ρ€Π²Π΅Ρ€ прСдоставляСт срСдства для ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ сбора статистики, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ пСрСзапуск, ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный Π΄Π²ΠΈΠΆΠΎΠΊ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° языкС Lua, ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ DNSSEC, DNS64, RPZ (Response Policy Zones), позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ‡Ρ‘Ρ€Π½Ρ‹Π΅ списки. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ записи Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π΅Π·ΠΎΠ»Π²ΠΈΠ½Π³Π° Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π·ΠΎΠ½ BIND. Для обСспСчСния высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ соврСмСнныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ соСдинСний Π²ΠΎ FreeBSD, Linux ΠΈ Solaris (kqueue, epoll, /dev/poll), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ парсСр DNS-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², способный ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ дСсятки тысяч ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°ΠΏΡ€ΠΎcΠΎΠ².

Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии:

  • C Ρ†Π΅Π»ΡŒΡŽ прСдотвращСния ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ свСдСний ΠΎ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ приватности Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ QNAME Minimization (RFC-7816), Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «relaxed». Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€ Π½Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя искомого хоста Π² своих запросах ΠΊ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅ΠΌΡƒ сСрвСру ΠΈΠΌΡ‘Π½. НапримСр, ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ адрСса для хоста foo.bar.baz.com Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΌΡƒ для Π·ΠΎΠ½Ρ‹ «.com» сСрвСру запрос «QTYPE=NS,QNAME=baz.com», Π½Π΅ упоминая «foo.bar». Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «relaxed».
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Турналирования исходящих запросов ΠΊ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΌΡƒ сСрвСру ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° Π½ΠΈΡ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ dnstap (для использования трСбуСтся сборка с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ «—enable-dnstap».
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° одноврСмСнная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… входящих запросов, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· соСдинСниС TCP, с ΠΎΡ‚Π΄Π°Ρ‡Π΅ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ готовности, Π° Π½Π΅ Π² порядкС слСдования запросов Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π›ΠΈΠΌΠΈΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… запросов опрСдСляСтся настройкой «max-concurrent-requests-per-tcp-connection«.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° отслСТивания Π½ΠΎΠ²Ρ‹Ρ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² NOD (Newly Observed Domain), которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для выявлСния ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², связанных с ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ врСдоносной Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ распространСниС врСдоносного ПО, участиС Π² Ρ„ΠΈΡˆΠΈΠ½Π³Π΅ ΠΈ использованиС для управлСния Π±ΠΎΡ‚Π½Π΅Ρ‚Π°ΠΌΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄ основан Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π½Π΅Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ, ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ этих Π½ΠΎΠ²Ρ‹Ρ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ². ВмСсто отслСТивания Π½ΠΎΠ²Ρ‹Ρ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΏΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ Π±Π°Π·Π΅ всСх ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠ±ΠΎ просмотрСнных Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов, Π² NOD примСняСтся вСроятностная структура SBF (Stable Bloom Filter), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти ΠΈ CPU. Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² настройках слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ «new-domain-tracking=yes».
  • ΠŸΡ€ΠΈ запускС ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ systemd процСсс PowerDNS Recursor Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выполняСтся ΠΏΠΎΠ΄ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ pdns-recursor вмСсто root. Для систСм Π±Π΅Π· systemd ΠΈ Π±Π΅Π· chroot, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для хранСния ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ сокСта ΠΈ pid-Ρ„Π°ΠΉΠ»Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /var/run/pdns-recursor.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· KnotDNS 2.9.3, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠ³ΠΎ DNS сСрвСра (рСкурсор Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прилоТСния), ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ всС соврСмСнныС возмоТности DNS. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ разрабатываСтся Ρ‡Π΅ΡˆΡΠΊΠΈΠΌ рССстром ΠΈΠΌΠ΅Π½ CZ.NIC, написан Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv3.

KnotDNS отличаСтся ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π½Π° Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов, для Ρ‡Π΅Π³ΠΎ примСняСтся многопоточная, ΠΈ ΠΏΠΎ большСй части Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π°Ρ рСализация, Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ Π½Π° SMP-систСмах. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ возмоТности, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·ΠΎΠ½ Π½Π° Π»Π΅Ρ‚Ρƒ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π·ΠΎΠ½ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами, DDNS (динамичСскиС обновлСния), NSID (RFC 5001), Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ EDNS0 ΠΈ DNSSEC (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ NSEC3), ограничСния интСнсивности ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² (RRL).

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° настройка ‘remote.block-notify-after-transfer’ для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний NOTIFY;
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ed448 Π² DNSSE (трСбуСтся GnuTLS 3.6.12+ ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Nettle 3.6+);
  • Π’ keymgr Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ‘local-serial’ для получСния ΠΈΠ»ΠΈ установки Π² Π‘Π” KASP сСрийного SOA-Π½ΠΎΠΌΠ΅Ρ€Π° для подписанной Π·ΠΎΠ½Ρ‹;
  • Π’ keymgr Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ed25519 ΠΈ Ed448 Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ DNS-сСрвСра BIND;
  • Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ настройки ‘server.tcp-io-timeout’ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ Π΄ΠΎ 500 ms, Π° ‘database.journal-db-max-size’ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΎ Π΄ΠΎ 512 MiB Π½Π° 32-разрядных систСмах.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru