Π‘Π΅ΡΠ²Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ±ΠΎΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ, ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ 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 ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ Π½Π° Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ, ΠΈ ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Ρ ΠΎΡΠΎΡΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ°Ρ Π½Π° 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