αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ ILV αž‡αžΆαž˜αž½αž™ DNSTap αž“αž·αž„ BGP

αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ ILV αž‡αžΆαž˜αž½αž™ DNSTap αž“αž·αž„ BGP

αž”αŸ’αžšαž’αžΆαž“αž”αž‘β€‹αž“αŸαŸ‡β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αŸβ€‹αžœαžΆαž™β€‹αž’αŸ’αžœαžΎβ€‹αž”αžΆαž”β€‹αžŽαžΆαžŸαŸ‹ αžαŸ’αž‰αž»αŸ†β€‹αžŠαžΉαž„αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž˜αžΆαž“αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αž˜αž½αž™αŸ” αž’αžαŸ’αžαž”αž‘αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αžαŸ‚αž•αŸ’αž“αŸ‚αž€ IP αž“αŸƒαž”αž‰αŸ’αž‡αžΈαž”αž·αž‘αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” αž™αžΎαž„αž€αŸαž“αžΉαž„αž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ‚αž“αž•αž„αžŠαŸ‚αžšαŸ”

αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαžαž»αž›αžΆαž€αžΆαžšαž“αž·αž„ RKN αžšαžΆαžšαžΆαŸ†αž„αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αžαžΆαž„αžŸαŸ’αžαžΆαŸ†αž“αž·αž„αžαžΆαž„αž†αŸ’αžœαŸαž„αž αžΎαž™αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž€αŸ†αž–αž»αž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž˜αž·αž“αž±αŸ’αž™αž’αŸ’αž›αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž–αž·αž“αŸαž™αžŠαŸ‚αž›αž…αŸαž‰αžŠαŸ„αž™ Revizorro αž€αžΆαžšαžαžΆαžαž”αž„αŸ‹αžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž–αžΈαž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž‚αžΊαž˜αžΆαž“αž‘αŸ†αž αŸ†αž’αŸ†αžŽαžΆαžŸαŸ‹αŸ” αž αžΎαž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ "αžŠαŸ„αž™αžŸαŸ’αžšαž”αž…αŸ’αž”αžΆαž”αŸ‹" αž˜αžΆαž“αž‚αŸαž αž‘αŸ†αž–αŸαžšαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‡αžΆαž…αŸ’αžšαžΎαž“ (αž‡αŸ†αžšαžΆαž”αžŸαž½αžš rutracker)

αžαŸ’αž‰αž»αŸ†αžšαžŸαŸ‹αž“αŸ…αž€αŸ’αžšαŸ…αž™αž»αžαŸ’αžαžΆαž’αž·αž€αžΆαžšαž“αŸƒ RKN αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžͺαž–αž»αž€αž˜αŸ’αžαžΆαž™ αžŸαžΆαž…αŸ‹αž‰αžΆαžαž· αž“αž·αž„αž˜αž·αžαŸ’αžαž—αž€αŸ’αžαž·αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž“αŸ…αžαŸ‚αž“αŸ…αž•αŸ’αž‘αŸ‡αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αž„αŸ’αž€αžΎαžαžœαž·αž’αžΈαž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž“αŸ…αž†αŸ’αž„αžΆαž™αž–αžΈ IT αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαž•αž»αžαž–αžΈαž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž…αžΌαž›αžšαž½αž˜αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαžΆαŸ†αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αž·αž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αž’αŸ†αž–αžΈαžšαžΏαž„αž”αžŽαŸ’αžαžΆαž‰αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‡αžΆαž‡αŸ†αž αžΆαž“αŸ—αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžšαŸ€αž”αžšαžΆαž”αŸ‹αž’αŸ†αž–αžΈαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ…αž“αŸƒαžšαž”αŸ€αž”αžŠαŸ‚αž›αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž‰αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž‘αžΌαž‘αŸ… αž“αž·αž„αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž›αžΈαž“αž»αž…αž‚αžΊαžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΆαž“αŸ”

αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαžŸαŸ„

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αžŸαžΌαž˜αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαž…αž„αž…αžΆαŸ†αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αžΎαž„αžœαž·αž‰αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„αŸ”

αž˜αžΆαž“αžŸαŸ„αž‡αžΆαž…αŸ’αžšαžΎαž“αž”αŸ’αžšαž—αŸαž‘αž“αŸ…αž€αŸ’αž“αž»αž„ XML αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž•αŸ’αž‘αž»αž€αž–αžΈ RKNαŸ–

  • IP
  • Π”ΠΎΠΌΠ΅Π½
  • URL

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰ αž™αžΎαž„αž“αžΉαž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αžœαžΆαž‘αŸ…αž‡αžΆαž–αžΈαžšαŸ– IP αž“αž·αž„ domain αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αžŠαž€ domain αž…αŸαž‰αž–αžΈαž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αžŠαŸ„αž™ URL (αž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž–αž½αž€αž‚αŸαž”αžΆαž“αž’αŸ’αžœαžΎαžœαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž™αžΎαž„αžšαž½αž…αž αžΎαž™)αŸ”

αž˜αž“αž»αžŸαŸ’αžŸαž›αŸ’αž’αž˜αž€αž–αžΈ Roskomsvoboda αž”αžΆαž“β€‹αžŠαžΉαž„β€‹αžαžΆβ€‹αž’αžŸαŸ’αž…αžΆαžšαŸ’αž™β€‹αž˜αž½αž™β€‹ αž€αžΆαžš APIαžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαžŠαŸ‚αž›αž™αžΎαž„αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ–

αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš VPS αž”αžšαž‘αŸαžŸαžαžΌαž…αŸ—αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž“αž·αž™αž˜αž‡αžΆαž˜αž½αž™αž…αžšαžΆαž…αžšαžŽαŸαž‚αŸ’αž˜αžΆαž“αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹ - αž˜αžΆαž“αž…αŸ’αžšαžΎαž“αž“αŸƒαž‘αžΆαŸ†αž„αž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 3-5 αžŠαž»αž›αŸ’αž›αžΆαžšαŸ” αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž™αž€αžœαžΆαž“αŸ…αž‡αž·αžαž”αžšαž‘αŸαžŸ αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™ ping αž˜αž·αž“αž’αŸ†αžαŸ’αž›αžΆαŸ†αž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαž‚αž·αžαž˜αŸ’αžαž„αž‘αŸ€αžαžαžΆ αž’αŸŠαžΈαž“αž’αžΊαžŽαŸ‚αž αž“αž·αž„αž—αžΌαž˜αž·αžŸαžΆαžŸαŸ’αžαŸ’αžšαž˜αž·αž“αžαŸ‚αž„αžαŸ‚αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαŸ” αž αžΎαž™αžŠαŸ„αž™αžŸαžΆαžšαž˜αž·αž“αž˜αžΆαž“ SLA αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 5 αžŠαž»αž›αŸ’αž›αžΆαžš αžœαžΆαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž™αž€ 2+ αž”αŸ†αžŽαŸ‚αž€αž–αžΈαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž™αžΎαž„αžαŸ’αžšαžΌαžœαžšαŸ€αž”αž…αŸ†αž•αŸ’αž›αžΌαžœαžšαžΌαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΈαžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž–αžΈαžšαŸ‰αŸ„αžαž‘αŸαžšαž’αžαž·αžαž·αž‡αž“αž‘αŸ… VPS αŸ” αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαžΎ Wireguard αž‡αžΆαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž›αžΏαž“αž”αŸ†αž•αž»αž αž“αž·αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαŸ” αžαŸ’αž‰αž»αŸ†αž€αŸαž˜αžΆαž“αžšαŸ‰αŸ„αžαž‘αŸαžšαž’αžαž·αžαž·αž‡αž“αž•αŸ’αž’αŸ‚αž€αž›αžΎαž›αžΈαž“αž»αž… (APU2 αž¬αž’αŸ’αžœαžΈαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„ OpenWRT) αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈ Mikrotik / Cisco αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž–αž·αž’αžΈαž€αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž›αžΎαž–αž½αž€αžœαžΆαžŠαžΌαž…αž‡αžΆ OpenVPN αž“αž·αž„ GRE-over-IPSEC αŸ”

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽ αž“αž·αž„αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αžαž“αŸƒαž…αžšαžΆαž…αžšαžŽαŸαž…αŸ†αžŽαžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸ

αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž–αž·αžβ€‹αžŽαžΆαžŸαŸ‹ αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž”αž·αž‘β€‹αž…αžšαžΆαž…αžšαžŽαŸβ€‹αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžβ€‹αž‘αžΆαŸ†αž„β€‹αž’αžŸαŸ‹β€‹αžαžΆαž˜β€‹αžšαž™αŸˆβ€‹αž”αžšαž‘αŸαžŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚ αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž‘αŸ†αž“αž„αž‡αžΆαž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž˜αžΆαžαž·αž€αžΆαž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€αž“αžΉαž„αžšαž„αž‘αž»αž€αŸ’αžαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž€αž˜αŸ’αžšαž·αžαž”αž‰αŸ’αž‡αžΌαž“αž“αŸ…αž›αžΎ VPS αž“αžΉαž„αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž…αŸ’αžšαžΎαž“αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αŸ‚αž„αž…αŸ‚αž€αž…αžšαžΆαž…αžšαžŽαŸαž‘αŸ…αž€αžΆαž“αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„ αž αžΎαž™αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžœαžΆαž‘αŸ…αž•αŸ’αž›αžΌαžœαžšαžΌαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΈαžŠαŸ„αž™αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž…αžšαžΆαž…αžšαžŽαŸ "αž”αž“αŸ’αžαŸ‚αž˜" αžαŸ’αž›αŸ‡αž‘αŸ…αžŠαž›αŸ‹αž‘αžΈαž“αŸ„αŸ‡αž€αŸαžŠαŸ„αž™ αžœαžΆαž“αŸ…αžαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž€αžΆαžšαž”αžΎαž€αž”αžšαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžαžΆαž˜αžšαžΌαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΈαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αžšαžΆαž…αžšαžŽαŸ αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž–αž·αž’αžΈαž€αžΆαžš BGP αž“αž·αž„αž”αŸ’αžšαž€αžΆαžŸαž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž”αžŽαŸ’αžαžΆαž‰αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž–αžΈ VPS αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸ…αž€αžΆαž“αŸ‹αž’αžαž·αžαž·αž‡αž“αŸ” αž…αžΌαžšαž™αž€ BIRD αž‡αžΆαžŠαŸαž˜αž·αž“ BGP αžŠαŸ‚αž›αž˜αžΆαž“αž˜αž»αžαž„αžΆαžš αž“αž·αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαž˜αž½αž™αŸ”

IP

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αžŠαŸ„αž™ IP αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαž…αŸ’αž”αžΆαžŸαŸ‹: αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαž€αžΆαžŸ IPs αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‡αžΆαž˜αž½αž™ VPS αŸ” αž”αž‰αŸ’αž αžΆαž‚αžΊαžαžΆαž˜αžΆαž“αž”αžŽαŸ’αžαžΆαž‰αžšαž„αž”αŸ’αžšαž αŸ‚αž› 600 αž–αžΆαž“αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαžŠαŸ‚αž› API αžαŸ’αžšαž›αž”αŸ‹αž˜αž€αžœαž·αž‰ αž αžΎαž™αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸƒαž–αž½αž€αž‚αŸαž‚αžΊαž‡αžΆ /32 hosts αŸ” αž…αŸ†αž“αž½αž“αž•αŸ’αž›αžΌαžœαž“αŸαŸ‡αž’αžΆαž…αž…αŸ’αžšαž‘αŸ†αžšαŸ‰αŸ„αžαž‘αŸαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžαŸ’αžŸαŸ„αž™αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž‰αŸ’αž‡αžΈαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŸαž„αŸ’αžαŸαž”αžšαž αžΌαžαžŠαž›αŸ‹αž”αžŽαŸ’αžαžΆαž‰ / 24 αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ 2 αž¬αž…αŸ’αžšαžΎαž“αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž…αŸ†αž“αž½αž“αž•αŸ’αž›αžΌαžœαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž˜αž€αžαŸ’αžšαžΉαž˜ ~ 100 αž–αžΆαž“αŸ‹αŸ” αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡αž“αžΉαž„αž’αŸ’αžœαžΎαžαžΆαž˜αŸ”

αžŠαŸ‚αž“

αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ αž αžΎαž™αž˜αžΆαž“αžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αž‘αžΎαž„ Squid αžαŸ’αž›αžΆαž“αŸ…αž›αžΎαžšαŸ‰αŸ„αžαž‘αŸαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž“αžΈαž˜αž½αž™αŸ— αž αžΎαž™αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹ HTTP αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ αž αžΎαž™αž…αžΌαž›αž‘αŸ…αž…αžΆαž”αŸ‹αžŠαŸƒ TLS αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“ URL αžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž‘αžΈαž˜αž½αž™ αž“αž·αž„αžŠαŸ‚αž“αž–αžΈ SNI αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αžΈαž–αžΈαžšαŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž‚αŸ’αžšαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž“αŸƒ TLS1.3 + eSNI αžŠαŸ‚αž›αž‘αžΎαž”αž“αžΉαž„αž€αžΎαžαžαŸ’αž˜αžΈ αž€αžΆαžšαžœαž·αž—αžΆαž‚ HTTPS αž€αžΆαž“αŸ‹αžαŸ‚αžαž·αž…αž‘αŸ…αŸ—αž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αžαŸ’αž„αŸƒαŸ” αž”αžΆαž‘/αž…αžΆαžŸ αž αžΎαž™αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αžαžΆαž„αž’αžαž·αžαž·αž‡αž“αž€αžΆαž“αŸ‹αžαŸ‚αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ - αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹ OpenWRT αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž™αž€αž•αŸ’αž›αžΌαžœαž“αŸƒαž€αžΆαžšαžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž‘αŸ…αž“αžΉαž„αžŸαŸ†αžŽαžΎ DNS αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš DNS-over-TLS / HTTPS αžŽαžΆαž˜αž½αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαžΆαž€αŸ‹αž–αžΈαž›αžΎαž€αŸ’αž”αžΆαž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž’αžΆαž… (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡) αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž•αŸ’αž“αŸ‚αž€αž“αŸαŸ‡αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ - αž”αž·αž‘αžœαžΆ αž¬αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ DoT / DoH αŸ”

αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαžšαžΆαžšαžΆαŸ†αž„ DNS?

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš αž’αžΆαž…αž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‡αžΆαž…αŸ’αžšαžΎαž“αŸ”

  • αž€αžΆαžšαžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹αž…αžšαžΆαž…αžš DNS αžαžΆαž˜αžšαž™αŸˆ PCAP ឬ NFLOG
    αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸƒαž€αžΆαžšαžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αžŸαŸŠαžΈαžŠαž˜αŸ‰αžΆαž. αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αž‡αžΆβ€‹αž™αžΌαžšβ€‹αž˜αž€β€‹αž αžΎαž™β€‹αž αžΎαž™β€‹αž˜αž»αžαž„αžΆαžšβ€‹αž‚αžΊβ€‹αž˜αžΆαž“β€‹αž›αž€αŸ’αžαžŽαŸˆβ€‹αžŠαžΎαž˜β€‹αž”αŸ†αž•αž»αž αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž’αŸ’αž“αž€β€‹αž“αŸ…β€‹αžαŸ‚β€‹αžαŸ’αžšαžΌαžœβ€‹αžŸαžšαžŸαŸαžšβ€‹αžαŸ’αžŸαŸ‚β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžœαžΆαŸ”
  • αž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNS
    αž‡αžΆαž’αž€αž»αžŸαž› αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰αžŠαŸ‚αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž’αžΆαž…αž€αžαŸ‹αžαŸ’αžšαžΆαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž”αžΆαž“αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αžαŸ‚αžŸαŸ†αžŽαžΎαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž“αŸαŸ‡αž‚αžΊαž‘αžΌαž‡αžΈαžαž› αž–αŸ’αžšαŸ„αŸ‡αž˜αž·αž“αžŠαžΌαž…αžŸαŸ†αžŽαžΎ αž…αž˜αŸ’αž›αžΎαž™αž˜αžΆαž“αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ αž αžΎαž™αžœαžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαžœαžΆαž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž’αžαŸ’αžαž”αž‘αŸ”
  • DNSTap
    αž‡αžΆαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’ αž–αž½αž€αž‚αŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžš DNSTap αžšαž½αž…αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž“αŸαŸ‡αŸ”

តើ DNSTap αž‡αžΆαž’αŸ’αžœαžΈ?

αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ ILV αž‡αžΆαž˜αž½αž™ DNSTap αž“αž·αž„ BGP

αžœαžΆαž‚αžΊαž‡αžΆαž–αž·αž’αžΈαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ-αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αžŠαŸ‚αž›αž•αŸ’αž’αŸ‚αž€αž›αžΎαž”αŸ’αžšαžΌαžαžΌαž€αžΌαž› αž”αŸŠαžΌαž αŸ’αžœαŸ αž“αž·αž„αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αžŸαŸŠαž»αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž‘αŸαžšαž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNS αž‘αŸ…αž€αžΆαž“αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžŽαž½αžš αž“αž·αž„αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž” DNS αžŠαŸ‚αž›αž˜αžΆαž“αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ” αžŸαŸ†αžαžΆαž“αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNS αž”αž‰αŸ’αž‡αžΌαž“αžŸαŸ†αžŽαž½αžš αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž†αŸ’αž›αžΎαž™αžαž” (αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαžŸαžΆαžš αž’αžαž·αžαž·αž‡αž“/αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ IP αŸ”

αžœαžΆαž‡αžΆαž€αžΆαžšαžŸαŸ†αžαžΆαž“αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž™αž›αŸ‹αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ†αžšαžΌ DNSTap αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNS αžŠαžΎαžšαžαž½αž‡αžΆαž’αžαž·αžαž·αž‡αž“ αž αžΎαž™αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŠαžΎαžšαžαž½αž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ” αž“αŸ„αŸ‡αž‚αžΊαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNS αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž› αž“αž·αž„αž˜αž·αž“αž•αŸ’αž‘αž»αž™αž˜αž€αžœαž·αž‰αŸ”

αžŸαž–αŸ’αžœαžαŸ’αž„αŸƒαž“αŸαŸ‡ DNSTap αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNS αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ BIND αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž‡αžΆαž…αŸ’αžšαžΎαž“ (αžŠαžΌαž…αž‡αžΆ Ubuntu LTS) αž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžšαž”αžŸαŸ‹αžœαžΆαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž…αžΌαžšαž™αžΎαž„αž€αž»αŸ†αž’αž»αž‰αž‘αŸ’αžšαžΆαž“αŸ‹αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž‚αž»αŸ†αž‘αžΎαž„αžœαž·αž‰ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰αžŠαŸ‚αž›αžŸαŸ’αžšαžΆαž›αž‡αžΆαž„αž˜αž»αž“ αž“αž·αž„αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“ - Unbound αŸ”

αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹ DNSTap?

αž˜αžΆαž“ αžαŸ’αž›αŸ‡ αž”αžšαž·αž˜αžΆαžŽαŸ” αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ CLI αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ DNSTap αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αž„αŸ’αž€αžΎαžαž€αž„αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžŠαŸ‚αž›αž“αžΉαž„αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ– dnstap-bgp

αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž„αžΆαžšαŸ–

  • αž“αŸ…αž–αŸαž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžœαžΆαž•αŸ’αž‘αž»αž€αž”αž‰αŸ’αž‡αžΈαžŠαŸ‚αž“αž–αžΈαž―αž€αžŸαžΆαžšαž’αžαŸ’αžαž”αž‘ αž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸαž–αž½αž€αžœαžΆ (habr.com -> com.habr) αž˜αž·αž“αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αžŠαŸ‚αž›αžαžΌαž… αžŸαŸ’αž‘αž½αž“ αž“αž·αž„αžŠαŸ‚αž“αžšαž„ (ឧ. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αž‰αŸ’αž‡αžΈαž˜αžΆαž“ habr.com αž“αž·αž„ www.habr.com, αžœαžΆβ€‹αž“αžΉαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž•αŸ’αž‘αž»αž€β€‹αžαŸ‚β€‹αž˜αž½αž™β€‹αžŠαŸ†αž”αžΌαž„β€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡β€‹) αž“αž·αž„β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž˜αŸ‚αž€αž’αžΆαž„β€‹αž”αž»αž–αŸ’αžœαž”αž‘β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αžŸαŸ’αžœαŸ‚αž„β€‹αžšαž€β€‹αž™αŸ‰αžΆαž„β€‹αž›αžΏαž“β€‹αžαžΆαž˜β€‹αžšαž™αŸˆβ€‹αž”αž‰αŸ’αž‡αžΈβ€‹αž“αŸαŸ‡β€‹
  • αžŠαžΎαžšαžαž½αž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNSTap αžœαžΆαžšαž„αŸ‹αž…αžΆαŸ†αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNS αŸ” αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αžœαžΆαž‚αžΆαŸ†αž‘αŸ’αžšαž‘αžΆαŸ†αž„αžšαž“αŸ’αž’ UNIX αž“αž·αž„ TCP αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ DNS αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžŸαŸ’αž‚αžΆαž›αŸ‹αž’αžΆαž…αž”αŸ’αžšαžΎαžαŸ‚αžšαž“αŸ’αž’ UNIX αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”
  • αž€αž‰αŸ’αž…αž”αŸ‹ DNSTap αž…αžΌαž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž‘αŸ…αž‡αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ Protobuf αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŸαžΆαžš DNS αž‚αŸ„αž›αž–αžΈαžšαžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž› Protobuf αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‰αŸ‚αž€αž‘αŸ…αž‡αžΆαž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆ DNS RR
  • αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αžαžΆαžαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž“αžΎαžŸαž»αŸ† (αž¬αžŠαŸ‚αž“αž˜αŸαžšαž”αžŸαŸ‹αžœαžΆ) αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αž‘αž»αž€ αž¬αž’αžαŸ‹ αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž“αžΉαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΎαž–αžΎ
  • αž˜αžΆαž“αžαŸ‚ A/AAAA/CNAME RRs αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž–αžΈαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž” αž αžΎαž™αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IPv4/IPv6 αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αžšαž„αŸ‹αž…αŸαž‰αž–αžΈαž–αž½αž€αžœαžΆ
  • αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž»αž€αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‡αžΆαž˜αž½αž™ TTL αžŠαŸ‚αž›αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžΆαž“ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž‘αŸ…αž˜αž·αžαŸ’αžαžšαž½αž˜ BGP αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž’αžŸαŸ‹
  • αž“αŸ…αž–αŸαž›αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžŠαŸ‚αž›αž…αž„αŸ’αž’αž»αž›αž‘αŸ… IP αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžšαž½αž…αž αžΎαž™ TTL αžšαž”αžŸαŸ‹αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–
  • αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ TTL αž•αž»αžαž€αŸ†αžŽαžαŸ‹ αž’αžΆαžαž»αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαž€αž…αŸαž‰αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž–αžΈαž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸ BGP

αž˜αž»αžαž„αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αŸ–

  • αž€αžΆαžšαž’αžΆαž“αž”αž‰αŸ’αž‡αžΈαžŠαŸ‚αž“αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™ SIGHUP
  • αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž±αŸ’αž™αžŸαŸŠαžΈαžŸαž„αŸ’αžœαžΆαž€αŸ‹αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αžœαžαŸ’αžαž»αž•αŸ’αžŸαŸαž„αŸ— dnstap-bgp αžαžΆαž˜αžšαž™αŸˆ HTTP/JSON
  • αžŸαŸ’αž‘αž½αž“αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž“αŸ…αž›αžΎαžαžΆαžŸ (αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ BoltDB) αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžŠαžΆαžšαž˜αžΆαžαž·αž€αžΆαžšαž”αžŸαŸ‹αžœαžΆαž‘αžΎαž„αžœαž·αž‰αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰
  • αž€αžΆαžšβ€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌβ€‹αžšβ€‹αž‘αŸ…β€‹αž‘αŸ†αž αŸ†β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αž”β€‹αžŽαŸ’αžαžΆβ€‹αž‰β€‹αž•αŸ’αžŸαŸαž„β€‹αž‚αŸ’αž“αžΆ (αž αŸαžαž»β€‹αž’αŸ’αžœαžΈβ€‹αž”αžΆαž“β€‹αž‡αžΆβ€‹αžœαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž“αžΉαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž–αž·αž–αžŽαŸŒαž“αžΆβ€‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜β€‹)
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš IPv6

αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹:

  • αžŠαŸ‚αž“ IDN αž˜αž·αž“β€‹αž‘αžΆαž“αŸ‹β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αž“αŸ…β€‹αž‘αžΎαž™β€‹αž‘αŸαŸ”
  • αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ BGP αž˜αž½αž™αž…αŸ†αž“αž½αž“

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž› RPM αž“αž·αž„ DEB αž€αž‰αŸ’αž…αž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ” αž‚αž½αžšαžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ OS αžαŸ’αž˜αžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“ systemdαŸ” αž–αž½αž€αž‚αŸαž˜αž·αž“αž˜αžΆαž“αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžŽαžΆαž˜αž½αž™αž‘αŸαŸ”

αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž…αžΌαžšβ€‹αž™αžΎαž„β€‹αž…αžΆαž”αŸ‹β€‹αž•αŸ’αžαžΎβ€‹αž˜β€‹αž•αŸ’αž‚αž»αŸ†β€‹αžŸαž˜αžΆαžŸαž’αžΆαžαž»β€‹αž‘αžΆαŸ†αž„β€‹αž’αžŸαŸ‹β€‹αž‡αžΆαž˜αž½αž™β€‹αž‚αŸ’αž“αžΆαŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž™αžΎαž„αž‚αž½αžšαžαŸ‚αž‘αž‘αž½αž›αž”αžΆαž“αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαžΌαž…αž‡αžΆ topology αž”αžŽαŸ’αžαžΆαž‰αž“αŸαŸ‡αŸ–
αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ ILV αž‡αžΆαž˜αž½αž™ DNSTap αž“αž·αž„ BGP

αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸƒαž€αžΆαžšαž„αžΆαžš αžαŸ’αž‰αž»αŸ†αž‚αž·αžαžαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αž–αžΈαžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αŸ–

  • αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆ DNS αž αžΎαž™αžŸαŸ†αžŽαž½αžš DNS αž€αŸαžαŸ’αžšαžΌαžœαžαŸ‚αž†αŸ’αž›αž„αž€αžΆαžαŸ‹ VPN αž•αž„αžŠαŸ‚αžšαŸ” αž“αŸαŸ‡αž‚αžΊαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαžΎαž€αžΆαžšαžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹ DNS αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αŸ”
  • αž“αŸ…αž–αŸαž›αž”αžΎαž€αž‚αŸαž αž‘αŸ†αž–αŸαžš αž’αžαž·αžαž·αž‡αž“αž•αŸ’αž‰αžΎαžŸαŸ†αžŽαž½αžš DNS αžŠαžΌαž…αž‡αžΆ "αž’αŸ’αžœαžΈαž‡αžΆ IPs αžšαž”αžŸαŸ‹ xxx.org"
  • unbound αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ xxx.org (αž¬αž™αž€αžœαžΆαž…αŸαž‰αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹) αž αžΎαž™αž•αŸ’αž‰αžΎαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž‘αŸ…αž’αžαž·αžαž·αž‡αž“ β€œxxx.org αž˜αžΆαž“ IP αž”αŸ‚αž”αž“αŸαŸ‡β€ αžŠαŸ„αž™αž…αž˜αŸ’αž›αž„αžœαžΆαžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαžαžΆαž˜αžšαž™αŸˆ DNSTap
  • dnstap-bgp αž”αŸ’αžšαž€αžΆαžŸαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ αž”αŸŠαžΈ αžαžΆαž˜αžšαž™αŸˆ BGP αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŠαŸ‚αž“αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž”αž·αž‘
  • αž”αŸŠαžΈ αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹ IP αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‡αžΆαž˜αž½αž™ next-hop self αžšαŸ‰αŸ„αžαž‘αŸαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ
  • αž€αž‰αŸ’αž…αž”αŸ‹αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αžαž·αžαž·αž‡αž“αž‘αŸ… IP αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž•αŸ’αž›αžΌαžœαžšαžΌαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΈ

αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„ αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαžΎαžαžΆαžšαžΆαž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ BIRD αž αžΎαž™αžœαžΆαž˜αž·αž“αž”αŸ’αžšαžŸαž–αŸ’αžœαž‡αžΆαž˜αž½αž™ OS αžαžΆαž˜αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ”

αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αž˜αžΆαž“αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αž˜αž½αž™αŸ– αž€αž‰αŸ’αž…αž”αŸ‹ SYN αžŠαŸ†αž”αžΌαž„αž–αžΈαž’αžαž·αžαž·αž‡αž“ αžŠαŸ‚αž›αž‘αŸ†αž“αž„αž‡αžΆαž“αžΉαž„αž˜αžΆαž“αž–αŸαž›αžœαŸαž›αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž€αž…αŸαž‰αžαžΆαž˜αžšαž™αŸˆαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€αŸ” αž•αŸ’αž›αžΌαžœαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαž—αŸ’αž›αžΆαž˜αŸ—αž‘αŸαŸ” αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‡αž˜αŸ’αžšαžΎαžŸαž‚αžΊαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž’αŸ’αžœαžΎαž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αŸ” αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αž‚αžΆαžαŸ‹β€‹αž‚αŸ’αžšαžΆαž“αŸ‹β€‹αžαŸ‚β€‹αž’αŸ’αžœαžΎβ€‹αž…αžšαžΆαž…αžšαžŽαŸβ€‹αž˜αž·αž“β€‹αž˜αžΆαž“β€‹αž”αž‰αŸ’αž αžΆβ€‹αž“αŸ„αŸ‡β€‹αž‘αŸαŸ” αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‚αžΆαžαŸ‹αž”αŸ’αžαžΌαžšαž‘αž·αžŸαžœαžΆαž‘αŸ… DPI αžαŸ’αž›αŸ‡αž“αŸ„αŸ‡ (αžαžΆαž˜αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈ) αž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αž–αž·αžŸαŸαžŸαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ”

αžœαžΆαž€αŸαž’αžΆαž…αž‘αŸ…αžšαž½αž…αžŠαŸ‚αžšαžŠαŸ‚αž›αž’αžαž·αžαž·αž‡αž“αž˜αž·αž“αž‚αŸ„αžšαž–αž’αž–αŸ’αž—αžΌαžαž αŸαžαž» DNS TTL αžŠαŸ‚αž›αž’αžΆαž…αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž”αŸ’αžšαžΎαž’αžΆαžαž»αž‡αžΆαž”αŸ‹αž‚αžΆαŸ†αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αžšαž›αž½αž™αžšαž”αžŸαŸ‹αžœαžΆαž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαžŸαž½αžš Unbound αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž˜αž·αž“αžαžΆαž‘αžΈαž˜αž½αž™ αž¬αž‘αžΈαž–αžΈαžšαž”αž„αŸ’αž€αž”αž‰αŸ’αž αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž‰αž»αŸ†αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αž˜αŸ’αž„αžΆαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αŸ”

αž€αžΆαžšαž›αŸƒαžαž˜αŸ’αžšαžΌαžœαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ

αžŠαžΎαž˜αŸ’αž”αžΈαž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαžšαž˜αŸ€αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαžšαžŸαŸαžš αžαž½αž“αžΆαž‘αžΈαžšαž”αžŸαŸ‹ Ansible. αžœαžΆαž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž›αžΈαž“αž»αž… (αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎ deb) αŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αžΊαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ inventory.yml. αžαž½αž“αžΆαž‘αžΈαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž…αŸαž‰αž–αžΈαžŸαŸ€αžœαž—αŸ…αž›αŸαž„αžŠαŸαž’αŸ†αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž’αžΆαž…αž˜αžΆαž“αž€αŸ†αž αž»αžŸ - αž‘αžΆαž‰αžŸαŸ†αžŽαžΎ αžŸαžΌαž˜αžŸαŸ’αžœαžΆαž‚αž˜αž“αŸ πŸ™‚

αž…αžΌαžšαž™αžΎαž„αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ”

αž”αŸŠαžΈαŸ” αž‡αžΈαŸ” αž—αžΈ

αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸαž˜αž·αž“ BGP αž–αžΈαžšαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαžΌαž…αž‚αŸ’αž“αžΆαž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“: BIRD αž˜αž·αž“αž…αž„αŸ‹αžŠαŸ†αž‘αžΎαž„ BGP peering αž‡αžΆαž˜αž½αž™ localhost (αž¬αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŽαžΆαž˜αž½αž™) αŸ” αž–αžΈαž–αžΆαž€αŸ’αž™αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” Googling αž“αž·αž„αž€αžΆαžšαž’αžΆαž“αž”αž‰αŸ’αž‡αžΈαžŸαŸ†αž”αž»αžαŸ’αžšαžšαž½αž˜αž˜αž·αž“αž”αžΆαž“αž‡αž½αž™αž‘αŸ αž–αž½αž€αž‚αŸαž’αŸ‡αž’αžΆαž„αžαžΆαž“αŸαŸ‡αž‚αžΊαžŠαŸ„αž™αžŸαžΆαžšαž€αžΆαžšαžšαž…αž“αžΆαŸ” αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αž˜αžΆαž“β€‹αžœαž·αž’αžΈβ€‹αžαŸ’αž›αŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžαŸ’αž‰αž»αŸ†β€‹αžšαž€β€‹αž˜αž·αž“β€‹αžƒαžΎαž‰αŸ”

αž’αŸ’αž“αž€αž’αžΆαž…αžŸαžΆαž€αž›αŸ’αž”αž„αžŠαŸαž˜αž·αž“ BGP αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž…αžΌαž›αž…αž·αžαŸ’αž BIRD αž αžΎαž™αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‚αŸ’αžšαž”αŸ‹αž‘αžΈαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ„αž™αžαŸ’αž‰αž»αŸ† αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž…αž„αŸ‹αž”αž„αŸ’αž€αžΎαžαž’αž„αŸ’αž‚αž—αžΆαž–αž‘αŸαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž›αžΆαž€αŸ‹ dnstap-bgp αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ network namespace αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… root αžαžΆαž˜αžšαž™αŸˆ veth interfaceαŸ– αžœαžΆαžŠαžΌαž…αž‡αžΆαž”αŸ†αž–αž„αŸ‹αž˜αž½αž™ αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž‡αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ namespaces αž•αŸ’αžŸαŸαž„αŸ—αŸ” αž“αŸ…αž…αž»αž„αž“αžΈαž˜αž½αž™αŸ— αž™αžΎαž„αž–αŸ’αž™αž½αžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž―αž€αž‡αž“ p2p αžŠαŸ‚αž›αž˜αž·αž“αž αž½αžŸαž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž–αž½αž€αžœαžΆαž’αžΆαž…αž‡αžΆαž’αŸ’αžœαžΈαž€αŸαž”αžΆαž“αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž™αž“αŸ’αžαž€αžΆαžšαžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαžΆαž„αž€αŸ’αž“αž»αž„ αžŸαŸ’αžšαž‘αžΆαž‰αŸ‹αžŠαŸ„αž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” Docker αž“αž·αž„αž’αž»αž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžš αžŸαŸ’αž‚αŸ’αžšαžΈαž” αž αžΎαž™αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžαžΆαž„αž›αžΎαžšαž½αž…αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αžΌαžŸαžαŸ’αž›αž½αž“αž’αŸ’αž“αž€αžŠαŸ„αž™αžŸαž€αŸ‹αž‘αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžˆαŸ’αž˜αŸ„αŸ‡αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ… dnstap-bgp αŸ” αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž“αŸαŸ‡ αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆ root αž¬αž…αŸαž‰αž‘αŸ…αž€αžΆαž“αŸ‹ CAP_SYS_ADMIN binary αžαžΆαž˜αžšαž™αŸˆαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ setcap αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαž namespace

#!/bin/bash

NS="dtap"

IP="/sbin/ip"
IPNS="$IP netns exec $NS $IP"

IF_R="veth-$NS-r"
IF_NS="veth-$NS-ns"

IP_R="192.168.149.1"
IP_NS="192.168.149.2"

/bin/systemctl stop dnstap-bgp || true

$IP netns del $NS > /dev/null 2>&1
$IP netns add $NS

$IP link add $IF_R type veth peer name $IF_NS
$IP link set $IF_NS netns $NS

$IP addr add $IP_R remote $IP_NS dev $IF_R
$IP link set $IF_R up

$IPNS addr add $IP_NS remote $IP_R dev $IF_NS
$IPNS link set $IF_NS up

/bin/systemctl start dnstap-bgp

dnstap-bgp.conf

namespace = "dtap"
domains = "/var/cache/rkn_domains.txt"
ttl = "168h"

[dnstap]
listen = "/tmp/dnstap.sock"
perm = "0666"

[bgp]
as = 65000
routerid = "192.168.149.2"

peers = [
    "192.168.149.1",
]

bird.conf

router id 192.168.1.1;

table rkn;

# Clients
protocol bgp bgp_client1 {
    table rkn;
    local as 65000;
    neighbor 192.168.1.2 as 65000;
    direct;
    bfd on;
    next hop self;
    graceful restart;
    graceful restart time 60;
    export all;
    import none;
}

# DNSTap-BGP
protocol bgp bgp_dnstap {
    table rkn;
    local as 65000;
    neighbor 192.168.149.2 as 65000;
    direct;
    passive on;
    rr client;
    import all;
    export none;
}

# Static routes list
protocol static static_rkn {
    table rkn;
    include "rkn_routes.list";
    import all;
    export none;
}

rkn_routes.list

route 3.226.79.85/32 via "ens3";
route 18.236.189.0/24 via "ens3";
route 3.224.21.0/24 via "ens3";
...

αžˆαŸ’αž˜αŸ„αŸ‡ DNS

αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž“αŸ…αž€αŸ’αž“αž»αž„αž’αŸŠαžΌαž”αŸŠαž»αž“αž‘αžΌ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžš Unbound αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ„αž„αžŠαŸ„αž™αž‘αž˜αŸ’αžšαž„αŸ‹ AppArmor αžŠαŸ‚αž›αž αžΆαž˜αžƒαžΆαžαŸ‹αžœαžΆαž–αžΈαž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž‚αŸ’αžšαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαžšαž“αŸ’αž’ DNSTap αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž›αž»αž”αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸαŸ‡ αž¬αž”αž·αž‘αžœαžΆαŸ–

# cd /etc/apparmor.d/disable && ln -s ../usr.sbin.unbound .
# apparmor_parser -R /etc/apparmor.d/usr.sbin.unbound

αž“αŸαŸ‡αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžŸαŸ€αžœαž—αŸ…αž›αŸαž„αŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αžœαžΆαž‡αžΆαž€αžΆαžšαž›αŸ’αž’αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ‚αž‘αž˜αŸ’αžšαž„αŸ‹ αž“αž·αž„αž…αŸαž‰αžŸαž·αž‘αŸ’αž’αž·αž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αžαŸ’αž‡αž·αž›αž–αŸαž€αŸ”

unbound.conf

server:
    chroot: ""
    port: 53
    interface: 0.0.0.0
    root-hints: "/var/lib/unbound/named.root"
    auto-trust-anchor-file: "/var/lib/unbound/root.key"
    access-control: 192.168.0.0/16 allow

remote-control:
    control-enable: yes
    control-use-cert: no

dnstap:
    dnstap-enable: yes
    dnstap-socket-path: "/tmp/dnstap.sock"
    dnstap-send-identity: no
    dnstap-send-version: no

    dnstap-log-client-response-messages: yes

αž€αŸ†αž–αž»αž„αž‘αžΆαž‰αž™αž€ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž‰αŸ’αž‡αžΈ

αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αžΆαž‰αž™αž€ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž‰αŸ’αž‡αžΈαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP
αžœαžΆαž‘αžΆαž‰αž™αž€αž”αž‰αŸ’αž‡αžΈ αžŸαžšαž»αž”αž‘αŸ…αž”αž»αž–αŸ’αžœαž”αž‘ pfxαŸ” αž“αŸαŸ‡ dont_add ΠΈ dont_αžŸαž„αŸ’αžαŸαž” αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΆαž”αŸ‹ IP αž“αž·αž„αž”αžŽαŸ’αžαžΆαž‰αž±αŸ’αž™αžšαŸ†αž›αž„ αž¬αž˜αž·αž“αžŸαž„αŸ’αžαŸαž”αŸ” αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαž€αžΆαžšαžœαžΆαŸ” αž”αžŽαŸ’αžαžΆαž‰αžšαž„αž“αŸƒ VPS αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž‚αžΊαž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž”αž·αž‘πŸ™‚

αžšαžΏαž„αž‚αž½αžšαž±αŸ’αž™αž’αžŸαŸ‹αžŸαŸ†αžŽαžΎαž…αž‚αžΊαžαžΆ RosKomSvoboda API αžšαžΆαžšαžΆαŸ†αž„αžŸαŸ†αžŽαžΎαž‡αžΆαž˜αž½αž™αž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžšαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Python αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” αž˜αžΎαž›β€‹αž‘αŸ…β€‹αžŠαžΌαž…β€‹αž‡αžΆ script-kiddy αž‘αž‘αž½αž›β€‹αž”αžΆαž“β€‹αžœαžΆαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž”αŸ’αžαžΌαžšαžœαžΆαž‘αŸ…αž‡αžΆ Ognelis αŸ”

αžšαž αžΌαžαž˜αž€αžŠαž›αŸ‹αž–αŸαž›αž“αŸαŸ‡ αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ‚αž‡αžΆαž˜αž½αž™ IPv4 αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž…αŸ†αžŽαŸ‚αž€αž“αŸƒ IPv6 αž‚αžΊαžαžΌαž…αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αžΉαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αŸ” αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎ bird6 αž•αž„αžŠαŸ‚αžšαŸ”

rkn.py

#!/usr/bin/python3

import json, urllib.request, ipaddress as ipa

url = 'https://api.reserve-rbl.ru/api/v2/ips/json'
pfx = '24'

dont_summarize = {
    # ipa.IPv4Network('1.1.1.0/24'),
}

dont_add = {
    # ipa.IPv4Address('1.1.1.1'),
}

req = urllib.request.Request(
    url,
    data=None, 
    headers={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
    }
)

f = urllib.request.urlopen(req)
ips = json.loads(f.read().decode('utf-8'))

prefix32 = ipa.IPv4Address('255.255.255.255')

r = {}
for i in ips:
    ip = ipa.ip_network(i)
    if not isinstance(ip, ipa.IPv4Network):
        continue

    addr = ip.network_address

    if addr in dont_add:
        continue

    m = ip.netmask
    if m != prefix32:
        r[m] = [addr, 1]
        continue

    sn = ipa.IPv4Network(str(addr) + '/' + pfx, strict=False)

    if sn in dont_summarize:
        tgt = addr
    else:
        tgt = sn

    if not sn in r:
        r[tgt] = [addr, 1]
    else:
        r[tgt][1] += 1

o = []
for n, v in r.items():
    if v[1] == 1:
        o.append(str(v[0]) + '/32')
    else:
        o.append(n)

for k in o:
    print(k)

αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–
αžαŸ’αž‰αž»αŸ†αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαž“αŸ…αž›αžΎαž˜αž€αž»αžŠαž˜αŸ’αžαž„αž€αŸ’αž“αž»αž„αž˜αž½αž™αžαŸ’αž„αŸƒ αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžœαžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž‘αžΆαž‰αžœαžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹ 4 αž˜αŸ‰αŸ„αž„αž˜αŸ’αžαž„αŸ” αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžšαž™αŸˆαž–αŸαž›αž”αž“αŸ’αžαžŠαŸ‚αž› RKN αž‘αžΆαž˜αž‘αžΆαžšαž–αžΈαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž–αž½αž€αž‚αŸαž˜αžΆαž“αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž”αž“αŸ’αž‘αžΆαž“αŸ‹αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αŸ€αž αžŠαŸ‚αž›αž’αžΆαž…αž“αžΉαž„αž˜αž€αžŠαž›αŸ‹αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“αŸ”

αž’αŸ’αžœαžΎαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  • αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ†αž”αžΌαž„ αž“αž·αž„αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž”αž‰αŸ’αž‡αžΈαž•αŸ’αž›αžΌαžœ (rkn_routes.list) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ BIRD
  • αž•αŸ’αž‘αž»αž€ BIRD αž‘αžΎαž„αžœαž·αž‰
  • αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž– αž“αž·αž„αžŸαž˜αŸ’αž’αžΆαžαž”αž‰αŸ’αž‡αžΈαžŠαŸ‚αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ dnstap-bgp
  • αž•αŸ’αž‘αž»αž€ dnstap-bgp αž‘αžΎαž„αžœαž·αž‰

rkn_update.sh

#!/bin/bash

ROUTES="/etc/bird/rkn_routes.list"
DOMAINS="/var/cache/rkn_domains.txt"

# Get & summarize routes
/opt/rkn.py | sed 's/(.*)/route 1 via "ens3";/' > $ROUTES.new

if [ $? -ne 0 ]; then
    rm -f $ROUTES.new
    echo "Unable to download RKN routes"
    exit 1
fi

if [ -e $ROUTES ]; then
    mv $ROUTES $ROUTES.old
fi

mv $ROUTES.new $ROUTES

/bin/systemctl try-reload-or-restart bird

# Get domains
curl -s https://api.reserve-rbl.ru/api/v2/domains/json -o - | jq -r '.[]' | sed 's/^*.//' | sort | uniq > $DOMAINS.new

if [ $? -ne 0 ]; then
    rm -f $DOMAINS.new
    echo "Unable to download RKN domains"
    exit 1
fi

if [ -e $DOMAINS ]; then
    mv $DOMAINS $DOMAINS.old
fi

mv $DOMAINS.new $DOMAINS

/bin/systemctl try-reload-or-restart dnstap-bgp

αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž‚αž·αžαž…αŸ’αžšαžΎαž“ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžƒαžΎαž‰αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αž’αžΆαž…αž€αŸ‚αž›αž˜αŸ’αž’αž”αžΆαž“ αž…αžΌαžšαž‘αŸ…αžšαž€αžœαžΆαŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž’αžαž·αžαž·αž‡αž“

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž§αž‘αžΆαž αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαŸ‰αŸ„αžαž‘αŸαžšαž›αžΈαž“αž»αž… αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈ Mikrotik / Cisco αžœαžΆαž‚αž½αžšαžαŸ‚αž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‡αžΆαž„αŸ”

αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αžšαŸ€αž”αž…αŸ† BIRD:

bird.conf

router id 192.168.1.2;
table rkn;

protocol device {
    scan time 10;
};

# Servers
protocol bgp bgp_server1 {
    table rkn;
    local as 65000;
    neighbor 192.168.1.1 as 65000;
    direct;
    bfd on;
    next hop self;
    graceful restart;
    graceful restart time 60;
    rr client;
    export none;
    import all;
}

protocol kernel {
    table rkn;
    kernel table 222;
    scan time 10;
    export all;
    import none;
}

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž•αŸ’αž›αžΌαžœαžŠαŸ‚αž›αž”αžΆαž“αž‘αž‘αž½αž›αž–αžΈ BGP αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαžΆαžšαžΆαž„αž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαžαžΊαžŽαŸ‚αž›αž›αŸαž 222αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡ αžœαžΆαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαž½αžšαžαžΊαžŽαŸ‚αž›αž˜αžΎαž›αž…αžΆαž“αž“αŸαŸ‡αž˜αž»αž“αž“αžΉαž„αž˜αžΎαž›αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž˜αž½αž™αŸ–

# ip rule add from all pref 256 lookup 222
# ip rule
0:  from all lookup local
256:    from all lookup 222
32766:  from all lookup main
32767:  from all lookup default

αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžœαžΆαž“αŸ…αžŸαž›αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ DHCP αž“αŸ…αž›αžΎαžšαŸ‰αŸ„αžαž‘αŸαžšαžŠαžΎαž˜αŸ’αž”αžΈαž…αŸ‚αž€αž…αžΆαž™αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž•αŸ’αž›αžΌαžœαžšαžΌαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΈαžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‡αžΆ DNS αž αžΎαž™αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž‚αžΊαžšαž½αž…αžšαžΆαž›αŸ‹αŸ”

αž€αŸ†αž αž»αžŸ

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž‰αŸ’αž‡αžΈαžŠαŸ‚αž“ αžœαžΆαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžšαž”αžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž youtube.com αž“αž·αž„ CDNs αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž αžΎαž™αž“αŸαŸ‡αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαžœαžΈαžŠαŸαž’αžΌαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αžΉαž„αž†αŸ’αž›αž„αž€αžΆαžαŸ‹ VPN αžŠαŸ‚αž›αž’αžΆαž…αžŸαŸ’αž‘αŸ‡αž†αžΆαž“αŸ‚αž›αž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ” αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžœαžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž”αž‰αŸ’αž‡αžΈαž“αŸƒ domains-exclusions αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αžŠαŸ‚αž›αžšαžΆαžšαžΆαŸ†αž„ RKN αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡ αž–αŸ„αŸ‡αžœαŸ€αž“αž‚αžΊαžŸαŸ’αžαžΎαž„αŸ” αž αžΎαž™αžšαŸ†αž›αž„αž–αž½αž€αžœαžΆαž“αŸ…αž–αŸαž›αž‰αŸ‚αž€αŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžšαŸ†αž›αž„αžŸαŸ’αž‘αžΎαžšαžαŸ‚αžšαžΆαž›αŸ‹αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αžŠαŸ‚αž›αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž’αž“αž»αžœαžαŸ’αžαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ”

αž‡αžΆαž‘αžΌαž‘αŸ…, dnstap-bgp αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αžšαžΆαž…αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž“αŸ” αžŸαžΌαž˜αž…αž„αž…αžΆαŸ†αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αŸαž™αžšαž”αžŸαŸ‹αž™αžΎαž„ αž‚αŸαž αž‘αŸ†αž–αŸαžšαž˜αž½αž™αž–αžΆαž“αŸ‹αž’αžΆαž…αž–αŸ’αž™αž½αžšαž“αŸ…αž›αžΎαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžŠαžΌαž…αž‚αŸ’αž“αžΆ (αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ„αž™ Cloudflare αž˜αž½αž™αž…αŸ†αž“αž½αž“) αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž“αŸαŸ‡αž˜αžΆαž“αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αžΆαž”αŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžαž˜αŸ’αžšαžΌαžœβ€‹αž€αžΆαžšβ€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž”αž·αž‘β€‹αžŸαŸ„β€‹αž‚αžΊβ€‹αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹β€‹αž αžΎαž™αŸ”

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜ αž€αžΆαžšαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› αž‘αžΆαž‰αžŸαŸ†αžŽαžΎ - αžŸαžΌαž˜αžŸαŸ’αžœαžΆαž‚αž˜αž“αŸ!

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹