เบ‚เป‰เบฒเบก ILV blocking เบ”เป‰เบงเบ DNSTap เปเบฅเบฐ BGP

เบ‚เป‰เบฒเบก ILV blocking เบ”เป‰เบงเบ DNSTap เปเบฅเบฐ BGP

เบซเบปเบงเบ‚เปเป‰เบ–เบทเบเบ•เบตเบซเบผเบฒเบ, เบ‚เป‰เบญเบเบฎเบนเป‰. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบญเบฑเบ™เบเบดเปˆเบ‡เปƒเบซเบเปˆ เบšเบปเบ”เบ„เบงเบฒเบก, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเปˆเบงเบ™ IP เบ‚เบญเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบเบฒเบ™เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเป€เบžเบตเปˆเบกเป‚เบ”เป€เบกเบ™.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบชเบฒเบ™เบ›เบฐเบŠเบฒเบŠเบปเบ™เปเบฅเบฐ RKN เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ‚เบงเบฒเปเบฅเบฐเบŠเป‰เบฒเบ, เปเบฅเบฐเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบกเบขเปˆเบฒเบ‡เบซเบ™เบฑเบเบ—เบตเปˆเบˆเบฐเบšเปเปˆเบ•เบปเบเบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบ›เบฑเบšเป„เบซเบกเบ—เบตเปˆเบญเบญเบเป‚เบ”เบ Revizorro, เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปƒเบซเบเปˆ. เปเบฅเบฐเปƒเบ™เบšเบฑเบ™เบ”เบฒเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบ–เบทเบเบšเบฅเบฑเบญเบ "เบ•เบฒเบกเบเบปเบ”เบซเบกเบฒเบ" เบกเบตเบซเบผเบฒเบเบญเบฑเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ” (เบชเบฐเบšเบฒเบเบ”เบต, rutracker)

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบญเบฒโ€‹เปƒเบชโ€‹เบขเบนเปˆโ€‹เบ™เบญเบโ€‹เบชเบดเบ”โ€‹เบญเปเบฒโ€‹เบ™เบฒเบ”โ€‹เบ‚เบญเบ‡ RKN, เปเบ•เปˆโ€‹เบžเปเปˆโ€‹เปเบกเปˆ, เบžเบตเปˆโ€‹เบ™เป‰เบญเบ‡โ€‹เปเบฅเบฐโ€‹เบซเบกเบนเปˆโ€‹เป€เบžเบทเปˆเบญเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบเบฑเบ‡โ€‹เบ„เบปเบ‡โ€‹เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เป€เบฎเบทเบญเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบกเบฒเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบขเบนเปˆเป„เบเบˆเบฒเบ IT เป€เบžเบทเปˆเบญเบซเบฅเบตเบเบฅเปˆเบฝเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡, เบ”เบตเบเบงเปˆเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”.

เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเปเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™, เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบซเบผเบฑเบเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเบฐเปƒเบ™ Linux เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบกเบต.

เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ locks

เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเบชเบฐเบเบฑเบ”.

เบกเบตเบซเบผเบฒเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบเบขเบนเปˆเปƒเบ™ XML เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป‚เบซเบฅเบ”เบˆเบฒเบ RKN:

  • IP
  • เป€เบžเบตเปˆเบกเป€เบ•เบตเบก
  • URL

เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™เบชเบญเบ‡: IP เปเบฅเบฐเป‚เบ”เป€เบกเบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเบ”เบถเบ‡เป‚เบ”เป€เบกเบ™เบญเบญเบเบˆเบฒเบเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป‚เบ”เบ URL (เบซเบผเบฒเบเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เปเบฅเป‰เบงเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ).

เบ„เบปเบ™เบ”เบตเบˆเบฒเบ Roskomsvoboda เป„เบ”เป‰เบฎเบฑเบšเบฎเบนเป‰เบชเบดเปˆเบ‡เบกเบฐเบซเบฑเบ” API, เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™:

เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบ–เบทเบเบšเบฅเบฑเบญเบ

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ VPS เบ•เปˆเบฒเบ‡เบ›เบฐเป€เบ—เบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบกเบฑเบเบˆเบฐเบกเบตเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบšเปเปˆเบˆเปเบฒเบเบฑเบ” - เบกเบตเบซเบผเบฒเบเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบš 3-5 bucks. เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบญเบปเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ•เปˆเบฒเบ‡เบ›เบฐเป€เบ—เบ”เบขเบนเปˆเปƒเบเป‰เป†เป€เบžเบทเปˆเบญเบงเปˆเบฒ ping เปเบกเปˆเบ™เบšเปเปˆเปƒเบซเบเปˆเบซเบผเบฒเบ, เปเบ•เปˆเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบงเปˆเบฒเบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เปเบฅเบฐเบžเบนเบกเบชเบฒเบ”เบšเปเปˆเบเบปเบ‡เบเบฑเบ™เบชเบฐเป€เบซเบกเบต. เปเบฅเบฐเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบšเปเปˆเบกเบต SLA เบชเปเบฒเบฅเบฑเบš 5 bucks, เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒ 2+ เบŠเบดเป‰เบ™เบˆเบฒเบเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ•เบฑเป‰เบ‡เบญเบธเป‚เบกเบ‡เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบˆเบฒเบ router เบฅเบนเบเบ‚เปˆเบฒเบเป„เบ›เบซเบฒ VPS. เบ‚เป‰เบญเบเปƒเบŠเป‰ Wireguard เป€เบ›เบฑเบ™เป„เบงเบ—เบตเปˆเบชเบธเบ” เปเบฅเบฐเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบ‚เป‰เบญเบเบเบฑเบ‡เบกเบต router เบฅเบนเบเบ„เป‰เบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Linux (APU2 เบซเบผเบทเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™ OpenWRT). เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบšเบฒเบ‡ Mikrotik / Cisco, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบžเบงเบเบกเบฑเบ™เป€เบŠเบฑเปˆเบ™ OpenVPN เปเบฅเบฐ GRE-over-IPSEC.

เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆ

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”, เปเบ™เปˆเบ™เบญเบ™, เบ›เบดเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบฒเบ‡เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบ•เปˆเบฒเบ‡เบ›เบฐเป€เบ—เบ”. เปเบ•เปˆ, เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐ, เบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบ™เบทเป‰เบญเบซเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบˆเบฐเบ—เบปเบ™เบ—เบธเบเบˆเบฒเบเบ™เบตเป‰. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบšเบ™เบงเบดเบ”เปƒเบ™ VPS เบˆเบฐเบชเบนเบ‡เบเบงเปˆเบฒเบซเบผเบฒเบ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบˆเบฑเบ”เบชเบฑเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปƒเบซเป‰เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบ–เบทเบเบšเบฅเบฑเบญเบเปเบฅเบฐเป€เบฅเบทเบญเบเบ—เบดเบ”เบ—เบฒเบ‡เบกเบฑเบ™เป„เบ›เบซเบฒเบญเบธเป‚เบกเบ‡. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™ "เบžเบดเป€เบชเบ”" เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบกเบฒเบฎเบญเบ”, เบกเบฑเบ™เบเบฑเบ‡เบ”เบตเบเปˆเบงเบฒเบเบฒเบ™เบ‚เบฑเบšเบฅเบปเบ”เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบœเปˆเบฒเบ™เบญเบธเป‚เบกเบ‡.

เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เป‚เบ›เป‚เบ•เบ„เบญเบ™ BGP เปเบฅเบฐเบ›เบฐเบเบฒเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบชเบนเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบˆเบฒเบ VPS เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ. เปƒเบซเป‰เบ–เบท BIRD เป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™ daemons BGP เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปเบฅเบฐเบชเบฐเบ”เบงเบเบ—เบตเปˆเบชเบธเบ”.

IP

เบ”เป‰เบงเบเบเบฒเบ™เบšเบฅเบฑเบญเบเป‚เบ”เบ IP, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡: เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบเบฒเบ” IP เบ—เบตเปˆเบ–เบทเบเบšเบฅเบฑเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ”เป‰เบงเบ VPS. เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบ›เบฐเบกเบฒเบ™ 600 เบžเบฑเบ™ subnets เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆ API เบเบฑเบšเบ„เบทเบ™เบกเบฒ, เปเบฅเบฐเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เปเบกเปˆเบ™ /32 hosts. เบˆเปเบฒเบ™เบงเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบชเบฑเบšเบชเบปเบ™ router เบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเบญเปˆเบญเบ™เปเบญ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบชเบฐเบซเบผเบธเบšเป€เบ–เบดเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ / 24 เบ–เป‰เบฒเบกเบฑเบ™เบกเบต 2 เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบžเบฒเบš. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบˆเปเบฒเบ™เบงเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ–เบดเบ‡ ~ 100 เบžเบฑเบ™เบ„เบปเบ™. script เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก.

เป‚เบ”เป€เบกเบ™

เบกเบฑเบ™เบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเปเบฅเบฐเบกเบตเบซเบผเบฒเบเบงเบดเบ—เบต. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Squid เป‚เบ›เปˆเบ‡เปƒเบชเบขเบนเปˆเปƒเบ™เปเบ•เปˆเบฅเบฐ router เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเป€เบฎเบฑเบ” HTTP interception เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบˆเบฑเบšเบกเบท TLS เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบš URL เบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เปเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเป‚เบ”เป€เบกเบ™เบˆเบฒเบ SNI เปƒเบ™เบ—เบตเบชเบญเบ‡.

เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ TLS1.3 + eSNI newfangled, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ HTTPS เบเบฒเบเป€เบ›เบฑเบ™เบˆเบดเบ‡เบซเบ™เป‰เบญเบเบฅเบปเบ‡เบ—เบธเบเป†เบกเบทเป‰. เปเบกเปˆเบ™เปเบฅเป‰เบง, เปเบฅเบฐเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบ™เบเปˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ - เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰ OpenWRT เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบญเบปเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เบ•เบญเบšเบ„เปเบฒเบ–เบฒเบก DNS. เบ—เบตเปˆเบ™เบตเป‰, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, DNS-over-TLS / HTTPS เปƒเบ”เป†เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบทเปˆเบญเบ™เบขเบนเปˆเป€เบ—เบดเบ‡เบซเบปเบงเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ” (เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™) เบ„เบงเบšเบ„เบธเบกเบชเปˆเบงเบ™เบ™เบตเป‰เปƒเบ™เบฅเบนเบเบ„เป‰เบฒ - เบšเปเปˆเบงเปˆเบฒเบˆเบฐเบ›เบดเบ”เบกเบฑเบ™เบซเบผเบทเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš DoT / DoH.

เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡ DNS?

เบ—เบตเปˆเบ™เบตเป‰, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เบญเบฒเบ”เบˆเบฐเบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡.

  • เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ DNS เบœเปˆเบฒเบ™ PCAP เบซเบผเบท NFLOG
    เบ—เบฑเบ‡เบชเบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ” sidmat. เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เปเบกเปˆเบ™ primitive เบซเบผเบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ‚เบฝเบ™ harness เบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™.
  • เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบšเบฑเบ™เบ—เบถเบ DNS server
    เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, recursors เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบเบฑเบšเบ‚เป‰เบญเบเปเบกเปˆเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบ—เบถเบเบ„เปเบฒเบ•เบญเบš, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป. เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ, เบšเปเปˆเบ„เบทเบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, เบ„เปเบฒเบ•เบญเบšเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เปเบฅเบฐเบกเบฑเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบžเบงเบเบกเบฑเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบ„เบงเบฒเบก.
  • DNSTap
    เป‚เบŠเบเบ”เบต, เบซเบผเบฒเบเบ„เบปเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ DNSTap เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ™เบตเป‰.

DNSTap เปเบกเปˆเบ™เบซเบเบฑเบ‡?

เบ‚เป‰เบฒเบก ILV blocking เบ”เป‰เบงเบ DNSTap เปเบฅเบฐ BGP

เบกเบฑเบ™เป€เบ›เบฑเบ™เป‚เบ›เป‚เบ•เบ„เบญเบ™เป€เบŠเบตเบšเป€เบงเบตเบฅเบนเบเบ„เป‰เบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Protocol Buffers เปเบฅเบฐ Frame Stream เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบญเบ™เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ DNS เป„เบ›เบซเบฒเบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปเบฅเบฐเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ DNS เบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ DNS เบชเบปเปˆเบ‡เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปเบฅเบฐเบเบฒเบ™เบ•เบญเบšเป‚เบ•เป‰ metadata (เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก, client / server IP, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เบšเบงเบเบเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบก DNS เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš (binary) เบ—เบตเปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒเบœเปˆเบฒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเปƒเบ™เปเบšเบš DNSTap, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ DNS เป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเบ•เบปเบงเป€เบเบฑเบšเบฅเบงเบšเบฅเบงเบกเป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ DNS เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบ•เบปเบงเป€เบเบฑเบš, เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™.

เบกเบทเป‰เบ™เบตเป‰ DNSTap เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ DNS เบ—เบตเปˆเบ™เบดเบเบปเบกเบ—เบฑเบ‡เบซเบกเบปเบ”. เปเบ•เปˆ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, BIND เปƒเบ™เบซเบผเบฒเบเป†เบเบฒเบ™เปเบˆเบเบขเบฒเบ (เป€เบŠเบฑเปˆเบ™ Ubuntu LTS) เบกเบฑเบเบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบ”เป‰เบงเบเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ‚เบญเบ‡เบกเบฑเบ™. เบชเบฐเบ™เบฑเป‰เบ™เปƒเบซเป‰เป€เบฎเบปเบฒเบšเปเปˆเป€เบšเบทเปˆเบญเบเบฑเบš reassembly, เปเบ•เปˆเป€เบญเบปเบฒ recursor เบชเบตเบกเป‰เบฒเบ™เปเบฅเบฐเป„เบงเบ‚เบถเป‰เบ™ - Unbound.

เบงเบดเบ—เบตเบเบฒเบ™เบˆเบฑเบš DNSTap?

เบกเบต เบšเบฒเบ‡ เบ›เบฐเบฅเบดเบกเบฒเบ™ เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ” CLI เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฐเปเบชเบ‚เบญเบ‡เป€เบซเบ”เบเบฒเบ™ DNSTap, เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ”เบดเบ”เบฅเบปเบ”เบ–เบตเบšเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™: dnstap-bgp

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ:

  • เป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เบ•เบปเบง, เบกเบฑเบ™เป‚เบซเบฅเบ”เบฅเบฒเบเบŠเบทเปˆเป‚เบ”เป€เบกเบ™เบˆเบฒเบเป„เบŸเบฅเปŒเบ‚เปเป‰เบ„เบงเบฒเบก, เบ›เปˆเบฝเบ™เบžเบงเบเบกเบฑเบ™ (habr.com -> com.habr), เบšเปเปˆเบฅเบงเบกเป€เบญเบปเบฒเป€เบชเบฑเป‰เบ™เบ—เบตเปˆเปเบ•เบเบซเบฑเบ, เบŠเปเป‰เบฒเบเบฑเบ™เปเบฅเบฐเป‚เบ”เป€เบกเบ™เบเปˆเบญเบ (i.e. เบ–เป‰เบฒเบฅเบฒเบเบŠเบทเปˆเบกเบต habr.com เปเบฅเบฐ www.habr.com, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเป‚เบซเบฅเบ”เบžเบฝเบ‡เปเบ•เปˆเบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”) เปเบฅเบฐเบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒเป„เบงเป‚เบ”เบเบœเปˆเบฒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ™เบตเป‰
  • เป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ DNSTap, เบกเบฑเบ™เบฅเปเบ–เป‰เบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ DNS. เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบกเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบฑเบ‡เบŠเบฑเบญเบเป€เบเบฑเบ” UNIX เปเบฅเบฐ TCP, เปเบ•เปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ DNS เบ—เบตเปˆเบ‚เป‰เบญเบเบฎเบนเป‰เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบŠเบฑเบญเบเป€เบเบฑเบ” UNIX เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.
  • เปเบžเบฑเบเป€เบเบฑเบ” DNSTap เบ‚เบฒเป€เบ‚เบปเป‰เบฒเปเบกเปˆเบ™เบ–เบทเบเปเบเบเบญเบญเบเป€เบ›เบฑเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ Protobuf เบ—เปเบฒเบญเบดเบ”, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เปเป‰เบ„เบงเบฒเบก DNS binary เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบ—เบตเปˆเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ Protobuf, เบ–เบทเบเปเบเบเบญเบญเบเป€เบ›เบฑเบ™เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบ DNS RR.
  • เบกเบฑเบ™เบ–เบทเบเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป‚เบฎเบ”เบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เป (เบซเบผเบทเป‚เบ”เป€เบกเบ™เปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™) เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเป‚เบซเบฅเบ”, เบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™, เบ„เปเบฒเบ•เบญเบšเบˆเบฐเบ–เบทเบเบฅเบฐเป€เบฅเบตเบ.
  • เบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบทเบญเบ A/AAAA/CNAME RRs เบˆเบฒเบเบเบฒเบ™เบ•เบญเบšเป‚เบ•เป‰ เปเบฅเบฐเบ—เบตเปˆเบขเบนเปˆ IPv4/IPv6 เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบ–เบทเบเปเบเบเบญเบญเบเบˆเบฒเบเบžเบงเบเบกเบฑเบ™.
  • เบ—เบตเปˆเบขเบนเปˆ IP เปเบกเปˆเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เบ”เป‰เบงเบ TTL เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป„เบ”เป‰ เปเบฅเบฐเบ–เบทเบเป‚เบ„เบชเบฐเบ™เบฒเปƒเบซเป‰เบเบฑเบšเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบก BGP เบ—เบตเปˆเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบฑเบ‡เปเบปเบ”.
  • เป€เบกเบทเปˆเบญเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ—เบตเปˆเบŠเบตเป‰เป„เบ›เบซเบฒ IP เบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปเบฅเป‰เบง, TTL เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡
  • เบซเบผเบฑเบ‡เบˆเบฒเบ TTL เปเบปเบ”เบญเบฒเบเบธ, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบˆเบฐเบ–เบทเบเป€เบญเบปเบฒเบญเบญเบเบˆเบฒเบเปเบ„เบ”เปเบฅเบฐเบˆเบฒเบเบเบฒเบ™เบ›เบฐเบเบฒเบ” BGP

เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก:

  • เบเบฒเบ™เบญเปˆเบฒเบ™เบฅเบฒเบเบŠเบทเปˆเป‚เบ”เป€เบกเบ™เบ„เบทเบ™เปƒเปเปˆเป‚เบ”เบ SIGHUP
  • เบฎเบฑเบเบชเบฒ cache เปƒเบ™ sync เบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™เป† dnstap-bgp เบœเปˆเบฒเบ™ HTTP/JSON
  • เบชเบณเป€เบ™เบปเบฒเปเบ„เบŠเปŒเบขเบนเปˆเปƒเบ™เปเบœเปˆเบ™ (เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ BoltDB) เป€เบžเบทเปˆเบญเบŸเบทเป‰เบ™เบŸเบนเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบฃเบตเบชเบฐเบ•เบฒเบ”
  • เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบซเบผเบฑเบšโ€‹เบเบฑเบš namespace เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™ (เป€เบ›เบฑเบ™โ€‹เบซเบเบฑเบ‡โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบ‚เป‰เบฒเบ‡โ€‹เบฅเบธเปˆเบกโ€‹เบ™เบตเป‰โ€‹)
  • เบฎเบญเบ‡เบฎเบฑเบš IPv6

เบ‚เปเป‰ เบˆเบณ เบเบฑเบ”:

  • เป‚เบ”เป€เบกเบ™ IDN เบเบฑเบ‡เบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเป€เบ—เบทเปˆเบญ
  • เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ BGP เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบ

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบเบฑเบšเบเปเบฒ RPM เปเบฅเบฐ DEB เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‡เปˆเบฒเบ. เบ„เบงเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบ—เบธเบ OS เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฑเบš systemd. เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปƒเบ”เป†.

เป‚เบ„เบ‡เบเบฒเบ™

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ›เบฐเบเบญเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบฎเปˆเบงเบกเบเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: topology เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ™เบตเป‰:
เบ‚เป‰เบฒเบก ILV blocking เบ”เป‰เบงเบ DNSTap เปเบฅเบฐ BGP

เป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒ, เปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡เบˆเบฒเบเปเบœเบ™เบงเบฒเบ”:

  • เบฅเบนเบเบ„เป‰เบฒเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ›เบฑเบ™ DNS, เปเบฅเบฐเบเบฒเบ™เบชเบญเบšเบ–เบฒเบก DNS เบ•เป‰เบญเบ‡เบœเปˆเบฒเบ™ VPN. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ DNS interception เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”.
  • เป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เป€เบงเบฑเบšเป„เบŠเบ—เปŒ, เบฅเบนเบเบ„เป‰เบฒเบชเบปเปˆเบ‡เบ„เปเบฒเบ–เบฒเบก DNS เป€เบŠเบฑเปˆเบ™ "IPs เบ‚เบญเบ‡ xxx.org เปเบกเปˆเบ™เบซเบเบฑเบ‡"
  • เบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบนเบเบกเบฑเบ” เปเบเป‰เป„เบ‚ xxx.org (เบซเบผเบทเป€เบญเบปเบฒเบกเบฑเบ™เบญเบญเบเบˆเบฒเบเปเบ„เบ”) เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เปเบฒเบ•เบญเบšเปƒเบซเป‰เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ "xxx.org เบกเบต IP เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบฅเบฐเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง", เป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบกเบฑเบ™เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบœเปˆเบฒเบ™ DNSTap.
  • dnstap-bgp เบ›เบฐเบเบฒเบ”เบ—เบตเปˆเบขเบนเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™ เปเบต เบœเปˆเบฒเบ™ BGP เบ–เป‰เบฒเป‚เบ”เป€เบกเบ™เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบ–เบทเบเบšเบฅเบฑเบญเบ
  • เปเบต เป‚เบ„เบชเบฐเบ™เบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒ IP เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ”เป‰เบงเบ next-hop self เบฅเบนเบเบ„เป‰เบฒ router
  • เบŠเบญเบ‡เบ•เปเปˆเบกเบฒเบˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเป„เบ›เบซเบฒ IP เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบœเปˆเบฒเบ™เบญเบธเป‚เบกเบ‡

เปƒเบ™เป€เบŠเบตเบŸเป€เบงเบต, เบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบ–เบทเบเบšเบฅเบฑเบญเบ, เบ‚เป‰เบญเบเปƒเบŠเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบžเบฒเบเปƒเบ™ BIRD เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ•เบฑเบ”เบเบฑเบš OS เปƒเบ™เบ—เบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก.

เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เบกเบตเบ‚เปเป‰เป€เบชเบเบ„เบท: เบŠเบธเบ” SYN เบ—เปเบฒเบญเบดเบ”เบˆเบฒเบเบฅเบนเบเบ„เป‰เบฒ, เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐ, เบˆเบฐเบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบญเบญเบเบˆเบฒเบเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบžเบฒเบเปƒเบ™. เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบฒเบ”เปƒเบ™เบ—เบฑเบ™เบ—เบต. เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบถเป‰เบ™เบขเบนเปˆเบเบฑเบšเบงเปˆเบฒเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป€เบฎเบฑเบ”เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เปเบ™เบงเปƒเบ”. เบ–เป‰เบฒเบฅเบฒเบงเบžเบฝเบ‡เปเบ•เปˆเบฅเบธเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒ. เปเบฅเบฐเบ–เป‰เบฒเบฅเบฒเบงเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒ DPI เบšเบฒเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ (เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต) เบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบดเป€เบชเบ”เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰.

เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบงเปˆเบฒเบฅเบนเบเบ„เป‰เบฒเบšเปเปˆเป€เบ„เบปเบฒเบฅเบปเบš DNS TTL เบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบนเบเบ„เป‰เบฒเปƒเบŠเป‰เบšเบฒเบ‡เบฅเบฒเบเบเบฒเบ™ stale เบˆเบฒเบ cache เป€เบ™เบปเปˆเบฒเป€เบ›เบทเปˆเบญเบเบ‚เบญเบ‡เบกเบฑเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ–เบฒเบก Unbound.

เปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบšเปเปˆเบงเปˆเบฒเบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เบซเบผเบทเบญเบฑเบ™เบ—เบตเบชเบญเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ, เปเบ•เปˆเป„เบฅเบเบฐเบ—เบฒเบ‡เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เป€เบŠเบตเบšเป€เบงเบต

เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เบกเป‰เบงเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™ เบšเบปเบ”เบšเบฒเบ”เบ‚เบญเบ‡ Ansible. เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบเบณเบ™เบปเบ”เบ„เปˆเบฒเบ—เบฑเบ‡เป€เบŠเบตเบšเป€เบงเบต เปเบฅเบฐเบฅเบนเบเบ‚เปˆเบฒเบเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Linux (เบญเบญเบเปเบšเบšเบกเบฒเบชเบณเบฅเบฑเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเบ•เบฒเบก deb). เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เปเบฅเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เป„เบงเป‰เปƒเบ™ inventory.yml. เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ”เบ™เบตเป‰เบ–เบทเบเบ•เบฑเบ”เบญเบญเบเบˆเบฒเบ playbook เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” - เบ”เบถเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป เบเบดเบ™เบ”เบตเบ•เป‰เบญเบ™เบฎเบฑเบš ๐Ÿ™‚

เปƒเบซเป‰เป„เบ›เป‚เบ”เบเบœเปˆเบฒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ•เบปเป‰เบ™เบ•เป.

BGP

เบเบฒเบ™เปเบฅเปˆเบ™เบชเบญเบ‡ daemons BGP เบขเบนเปˆเปƒเบ™เป‚เบฎเบ”เบ”เบฝเบงเบเบฑเบ™เบกเบตเบšเบฑเบ™เบซเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™: BIRD เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡ BGP peering เบเบฑเบš localhost (เบซเบผเบทเบชเปˆเบงเบ™เบ•เบดเบ”เบ•เปเปˆเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™). เบˆเบฒเบเบ„เปเบฒเบชเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. Googling เปเบฅเบฐเบเบฒเบ™เบญเปˆเบฒเบ™เบฅเบฒเบเบŠเบทเปˆเบ—เบฒเบ‡เป„เบ›เบชเบฐเบ™เบตเบšเปเปˆเป„เบ”เป‰เบŠเปˆเบงเบ, เบžเบงเบเป€เบ‚เบปเบฒเบญเป‰เบฒเบ‡เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เป‚เบ”เบเบเบฒเบ™เบญเบญเบเปเบšเบš. เบšเบฒเบ‡เบ—เบตเบญเบฒเบ”เบกเบตเบšเบฒเบ‡เบ—เบฒเบ‡, เปเบ•เปˆเบ‚เป‰เบญเบเบšเปเปˆเบžเบปเบšเบกเบฑเบ™.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบญเบ‡ daemon BGP เบญเบทเปˆเบ™, เปเบ•เปˆเบ‚เป‰เบญเบเบกเบฑเบ BIRD เปเบฅเบฐเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡เป‚เบ”เบเบ‚เป‰เบญเบ, เบ‚เป‰เบญเบเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบœเบฐเบฅเบดเบ”เบซเบ™เปˆเบงเบเบ‡เบฒเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบŠเบทเปˆเบญเบ‡ dnstap-bgp เบžเบฒเบเปƒเบ™ namespace เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เป€เบŠเบดเปˆเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบฎเบฒเบเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš veth: เบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบทเบ—เปเปˆ, เบ›เบฒเบเบ—เบตเปˆเบ•เบดเบ”เบขเบนเปˆเปƒเบ™ namespaces เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เปƒเบ™เปเบ•เปˆเบฅเบฐเบ›เบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เบชเบฒเบเบ—เบตเปˆเบขเบนเปˆ IP p2p เบชเปˆเบงเบ™เบ•เบปเบงเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป„เบ›เบ™เบญเบเป€เบซเบ™เบทเบญเป€เบˆเบปเป‰เบฒเบžเบฒเบš, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เปƒเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบเบปเบ™เป„เบเบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฒเบเปƒเบ™ เบฎเบฑเบเป‚เบ”เบเบ—เบธเบเบ„เบปเบ™ Docker เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบญเบทเปˆเบ™เป†.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™ เบชเบฐเบ„เบฃเบดเบš เปเบฅเบฐเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบฒเบเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เป‚เบ”เบเบœเบปเบกเป„เบ›เบซเบฒ namespace เบญเบทเปˆเบ™เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ dnstap-bgp. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰, เบกเบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ›เบฑเบ™เบฎเบฒเบเบซเบผเบทเบญเบญเบเปƒเบซเป‰ CAP_SYS_ADMIN binary เบœเปˆเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ setcap.

เบ•เบปเบงเบขเปˆเบฒเบ‡ script เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡ 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

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปƒเบ™ Ubuntu, Unbound binary เบ–เบทเบเบเบถเบ”เป‚เบ”เบเป‚เบ›เป„เบŸ AppArmor, เป€เบŠเบดเปˆเบ‡เบซเป‰เบฒเบกเบกเบฑเบ™เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบ—เบธเบเป†เบŠเบฑเบญเบเป€เบเบฑเบ” DNSTap. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบถเบšเป‚เบ›เบฃเป„เบŸเบฅเปŒเบ™เบตเป‰, เบซเบผเบทเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบกเบฑเบ™เป„เบ”เป‰:

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

เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ playbook. เบกเบฑเบ™เป€เบซเบกเบฒเบฐเบชเบปเบก, เปเบ™เปˆเบ™เบญเบ™, เปเบเป‰เป„เบ‚เป‚เบ›เบฃเป„เบŸเบฅเปŒเปเบฅเบฐเบญเบญเบเบชเบดเบ”เบ—เบดเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบ•เปˆเบ‚เป‰เบญเบเบ‚เบตเป‰เบ„เป‰เบฒเบ™เป€เบเบตเบ™เป„เบ›.

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_summarize เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบšเบญเบ IPs เปเบฅเบฐเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ‚เป‰เบฒเบกเบซเบผเบทเบšเปเปˆเบชเบฐเบซเบผเบธเบš. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™. เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเบ‚เบญเบ‡ 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

เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ„เบดเบ”เบซเบผเบฒเบ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เป„เบ”เป‰ - เป„เบ›เบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™.

เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบฅเบนเบโ€‹เบ„เป‰เบฒโ€‹

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเปƒเบซเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบš routers Linux, เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ 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;
}

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐ synchronize เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบ BGP เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ kernel routing เป€เบฅเบ 222.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบ‚เปเปƒเบซเป‰ kernel เป€เบšเบดเปˆเบ‡เปเบœเปˆเบ™เบ™เบตเป‰เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™:

# 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 เปƒเบ™ router เป€เบžเบทเปˆเบญเปเบˆเบเบขเบฒเบเบ—เบตเปˆเบขเบนเปˆ IP tunnel เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบ›เบฑเบ™ DNS, เปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบเบฝเบกเบžเป‰เบญเบก.

เบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡

เบ”เป‰เบงเบเบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป‚เบ”เป€เบกเบ™, เบกเบฑเบ™เบ›เบฐเบเบญเบšเบกเบต, เปƒเบ™เบšเบฑเบ™เบ”เบฒเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†, youtube.com เปเบฅเบฐ CDNs เบ‚เบญเบ‡เบกเบฑเบ™.

เปเบฅเบฐเบ™เบตเป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบงเบดเบ”เบตเป‚เบญเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบœเปˆเบฒเบ™ VPN, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบŠเปˆเบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เบšเบฒเบ‡เบ—เบตเบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบ™เบดเบเบปเบก - เบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡ RKN เบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเบ™เบตเป‰, guts เปเบกเปˆเบ™เบšเบฒเบ‡เป†. เปเบฅเบฐเบ‚เป‰เบฒเบกเบžเบงเบเบกเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบงเบดเป€เบ„เบฒเบฐ.

เบชเบฐเบซเบฅเบธเบš

เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ‚เป‰เบฒเบกเป€เบเบทเบญเบšเบ—เบธเบเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ—เบตเปˆเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, dnstap-bgp เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบšเบฒเบ‡เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบŠเบทเปˆเป‚เบ”เป€เบกเบ™. เบžเบฝเบ‡เปเบ•เปˆเบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบซเบ™เบถเปˆเบ‡เบžเบฑเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบขเบนเปˆเปƒเบ™เบ—เบตเปˆเบขเบนเปˆ IP เบ”เบฝเบงเบเบฑเบ™ (เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบšเบฒเบ‡ Cloudflare, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡), เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบกเบตเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ•เปˆเปเบฒเบเบงเปˆเบฒ.

เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡ bypassing locks, เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบžเบฝเบ‡เบžเป.

เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบเบฒเบ™เปเบเป‰เป„เบ‚, เบ”เบถเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป - เบเบดเบ™เบ”เบตเบ•เป‰เบญเบ™เบฎเบฑเบš!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™