áááą á áŁá á°á°áĽáľá§á ᣠá ááááᢠáááłá áłáá
á á
áááľ á¤áśá˝ áĽá á ááŹá¤á áááá ááá áá° áá áĽá áá° á፠á ááááłá¸á áĽá á á áŤá˘ááš á áŞáŞáᎠá á°á°áĄáľ á¨áááἠáááŽáá˝ áá ááááá¨áľ á¨áá°á áĽá¨áľ á ááľá¨á áá á áááá¸á ᣠá¨áááľ áá á°áŤáá áŤáá áŞáłáŤ á áŁá áľáá ááᢠáĽá "á á áá" á¨á°á¨áá¨ááľ áŁá˘áŤáá˝ ááŤá¨á áĽá á áááá˝ á á (á°áá ᣠáŠáľáŤáá¨á)
á¨ááá¨á ᨠRKN áĽááŁá áá ááᣠááá áá ááááźáŁ áááśáź áĽá áá°ááź áĽá¤áľ ááŠá˘ áľááá ᨠIT ááá áááአá°áá˝ áĽááłá áááá ááá ááááľ áĽáá˛áá á á°ááľáá ᣠá á°ááá áŤáááą á°áłáľáá˘
á áá ááľáłááť ááľáĽ áá°á¨áłá á¨ááľááá áááŽá˝á á á°á¨á á áááá˝á, ááá áá áá áĽá áľ áĽáá´áľ áĽáá°áá°áá á á á ááá áááá˝á áĽáááťáá. áľááá á ááłá¨ áá¨áĄ á á á ááá áĽá á á°ááá á ááááľ áĽáá´áľ áĽáá°áá°áŤ ááá á¨ááľ á áľááá áá.
á¨áááá፠ááááśá˝
á ááááŞáŤáŁ á¨áłááąáľá áľááľáłá˝áá áĽááľáľá˘
ᨠRKN á áá¨á°á á¤ááľá¤áá¤á ááľáĽ áĽá á áááľ áááááŤáá˝ á ááĄ-
- IP
- ĐОПон
- አá á á¤á
ááááááľáŁ áá° áááľ áĽááááłá¸áááᥠá áá áĽá ááŤáŁ áĽá á ááá ááŤáá á áŠá áá¤á áĽááłááłááľ áĽáááŁáá (áá áἠá áľáááᣠáá á á áľáááááá)á˘
áĽáŠ á°áá˝ á¨
- IP:
https://api.reserve-rbl.ru/api/v2/ips/json - ááŤáá˝áĄ
https://api.reserve-rbl.ru/api/v2/domains/json
á¨áłááą áŁá˘áŤáá˝ ááłá¨áť
áá áá áááľá¨á, á ááłááľ áľáá˝ á¨áá áŞáá¤áľ áŤáľááááá, á á°ááá áŤáá°áá°á áľáŤáá - á¨áĽááá ááľáĽ áĽáááš á 3-5 áśáá á á. ááá á áŁá áľáá áĽááłááá á á á áŤá˘áŤá áá° áá á áá ááá°áľ áŤáľáááááłá ᣠáá áĽáá°áá ᣠá áááá¨áĽ áĽá ááŚááŤá áá áá á ááľ áá áĽáá°áááá áááľ ááľáĽ áŤáľááĄá˘ áĽá á 5 áśááŽá˝ SLA áľááá áŁááľá á°áľ ááťáťá á¨á°ááŤáŠ á á áŤá˘áá˝ 2+ áááĽáŤáŽá˝á ááá°áľ á¨á°áťá ááá˘
á ááá á, á¨á°áá áá áŤáá°á áá° áŞáá¤áľ á˘áááŞááľ á¨á°á°á¨á ááť áááááľ á ááĽá. áĽá Wireguardá áĽáá° ááŁá áĽá ááááááľ áĽá ááááᢠá ááááľ áá á¨á°áá°á¨áą á°áá á áŤáá°áŽá˝á á áá (
á¨ááááľ áľáŤááá ááá¨áľ áĽá á á áŁáŤ ááá¨á
á á᪠áááŤáľ áááá á¨á˘áá°áááľ áľáŤáá ááĽááľ áľá˝ááá ᢠáá ᣠááááŁáľá ᣠá¨á áŤáŁá˘áŤá áááľ áá á¨ááĽáŤáľ ááĽááľ á¨áá á áĽá á áááłáᢠá á°á¨ááŞá, á VPS áá á¨áá°ááá፠áááľ ááľáááśá˝ á áŁá á¨á áŤá áááá.
áľááá áľáŤáá áá°á¨áá¨á áŚáłáá˝ áĽáá°ááá ááľáŚ áá° ááťá á á áŁáŤ áááŤáľ á ááĽáᢠááá áĽááłá á ááłááľ "á°á¨ááŞ" áľáŤáá áĽá፠á˘á°ááą áááá ááá á ááťá ááľáĽ á¨áá˝á¨áá¨á á ááá á áŁá á¨á°áťá ááá˘
áľáŤááá ááááŁá á á¨BGP ááŽáśáŽáá áĽáá áááá áĽá áá° á áľááá á ááłá¨ áá¨áŚá˝ ᨠVPS áá° á°áá áá˝ á¨áááľáąáľá ááááśá˝ áĽááłááááᢠBIRD á áŁá á°ááŁáŤá áĽá ááš á¨áá BGP deemons áĽáá° á ááą áĽááá°áľá˘
IP
á á áá á ááᾠᣠááá ááá ááá áá ᣠáááá á¨áłááą á áááá˝á á VPS áĽááłáááá ᢠá˝áአá¤áá á á áááá°á áááá ááľáĽ áá° 600 áşá á¨áá á áááľ á ááłá¨ áá¨áŚá˝ á á ᣠáĽá á áĽááááš /32 á áľá°áááá˝ áá¸áᢠá¨áá ááľááŽá˝ áĽááľ á°áŤá á¨á°áá á áŤáá°áŽá˝á ááŤá°ááá áá˝ááá˘
áľááá , ááááŠá á áá°áŤá áľ áá, 24 ááá á¨á፠á áá á áľá°áááá˝ áŤááľ áĽáľá¨ á ááłá¨ áá¨áĄ / 2 ááá ááá á°ááľáá. áľááá á¨ááááśáš ááĽá áá° ~ 100 áşá áááˇá. á¨áá á˝áá áľááŞááľ áá¨á°áá.
ááŤáá˝
áĽáą á¨á áá á¨á°ááłá°á áá áĽá áĽá ááááśá˝ á áᢠáááłáᣠá áĽáŤááłááą á°áá á áŤáá°á áá ááá áľáŠááľ ááŤá áĽá áĽá፠á¨á¤á˝á˛á˛á ááĽáá ááľá¨á áĽá á ááááŞáŤá ááłá á¨á°á á¨ááá áŠá áá¤á áĽá á ááá°áá á¨SNI á፠áááááľ áá° TLS áĽá áá¨áŁá ἠáá¨áľ áá˝ááá˘
ááá áá á ááá ááááľ á á˛áľ áááááľ TLS1.3 + eSNI ááááŤáľ HTTPS áľááłá á á¨áá áĽá¨ááá° áĽá áĽá¨ááá° ááĽáˇáᢠá áᣠáĽá á á°áá áá á áŠá áŤáá áá á¨á° áááľ áá áἠá¨á°ááłá°á áĽá¨áá ááĽáˇá - á˘áŤááľ OpenWRT áá áá ááááĽááłáá˘
áľááá ᣠáᲠá¤á á¤áľ áĽáŤááá˝ ááážá˝á á¨ááĽáá ááááľá áááá°áľ áá°ááŠá˘ áĽáá ááá ááááá á˛á¤áá¤áľ-áŚá¨á-á˛á¤áá¤áľ/á¤á˝á˛á˛áá¤áľ á ááá ááłá˝á áá áááŁá ἠááááŤááŁááá áá áá áá ááá á á°áá áá áá (áá áá) áááŁá á áĽáá˝ááá - áá°áá¨á ááá á¨áŤáľáá á áááá á DoT/DoH áá ááá˘
Რá¤á á¤áľ áĽáá´áľ ááĽáá ááťáá?
áĽáá á, á ááŤáł á ááŤá¨áŚá˝ ááአáá˝áá.
- á PCAP ááá NFLOG á áŠá á¨á˛ á¤á á¤áľ áľáŤáá ááĽáá
áĽááá áááąá á¨ááĽáá áá´áá˝ á áááááŤá ááľáĽ áá°áá áŤáá˛áľááľ . áá áá¨á á áá á áá°á°ááá áĽá á°ááŁáŤáą á áŁá áĽááłá áá, áľááá á ááá ááĽáą áá°áŞáŤ ááťá áŤáľáááááłá. - á¨á˛ á¤á á¤áľ á áááá áááἠááľáłááťáá˝ áľáá°á
áĽáá° á áááłá°á ááᣠááĽá á¨ááłáááľ á°á°ááááá˝ ááážá˝á ááááἠá áá˝ááᣠáá áĽáŤááá˝á áĽáť ááᢠá ááá á°á¨á, áá á ááááŽá á áá, ááááŤáąá á¨áĽáŤááá˝ á á°áᨠááአáááśá˝ ááľáĽáľáĽ ááá á áľááá¸á áĽá á á˝áá ááá áááťá á áľá¸á᪠áá. DNSTap
áĽáá° áĽáľá ááᣠáĽááᚠᲠá¤á á¤áľ áłáá ááá ááá áá°áááá˘
DNSTap áááľá áá?
á¨á˛á¤áá¤áľ á áááá áá° á¨á°ááአá¨á˛ á¤á á¤áľ áá ááá˝ áĽá ááážá˝ á°áĽáłá˘ áááááá á ááŽáśáŽá ááá¨áŤáá˝ áĽá ááŹá áĽá¨áśá˝ áá á¨á°áá°á¨á° á¨á°áá á á áááá ááŽáśáŽá ááᢠá ááááľáŁ á¨á˛á¤áá¤áľ á áááá áá áá áĽá ááá˝ ááłáłáł (á¨áááĽááľ á áááľáŁ á°áá á/á áááá á ááᣠááá°) áĽá áá á¨DNS áááááśá˝á á á ááłá¨ áá¨áĄ áá á áĽáŽ á áá°áŤá áľ (áááľáŽá˝) á á˝ áŤáľá°ááááá˘
á Რá¤á á¤áľ áłá ááŤá˛á ááľáĽ á¨á˛ á¤á á¤áľ á áááá áĽáá° á°áá á áĽá á°áĽáłá˘á áĽáá° á áááá áĽáá°áá°áŤ áá¨áłáľ á áŁá á áľááá áá. áŤá áááľ á¨á˛ á¤á á¤áľ á áááá á¨á á°áŁáłá˘á áá ááááá, áĽá á á°ááŤáá á áá°áá.
áᏠDNSTap á ááá áłáá á¨á˛ á¤á á¤áľ á ááááŽá˝ ááľáĽ áá°áááᢠááá ááᣠáááłáᣠBIND á áĽá áľáááśá˝ (áĽáá° áĄáĄááą LTS) áĽááá áá áŤá áĽáą áľáá á áá ááááŤáľ ááááŁáᢠáľááá áĽáá°áá ááááŁá á á áá¸ááᣠááá áá ááá áŤá áĽá ááŁá á°á°ááá áľáááášá ááá°áą - Unboundá˘
DNSTap áĽáá´áľ áĽáá°ááá?
á á
á¨áľáŤ áľáá° ááááĄ
- á˛ááá á¨ááŤáá˝á áááá á¨á˝áá ááá ááááᣠááááĽáŁá¸áá (habr.com -> com.habr)ᣠá¨á°á°á አááľááŽá˝áᣠá¨á°áŁá áĽá áááľ ááŤáá˝á á áŤáŤáľáľá (áááľá áááአhabr.com áĽá www.habr.com á¨áŤá á¨ááᣠá¨ááŤáá á¨ááááŞáŤá áĽáť áá) áĽá á áá áááá ááľáĽ áááŁá ááá á áľá á áĽáŤ áá ááááŁáá˘
- áĽáᰠᲠá¤á á¤áľ áłá á áááá áá á¨á˛á¤áá¤áľ á áááá áááááľá áá áĽááᢠá ááá á°á¨áᣠáááąáá UNIX áĽá TCP áśáŹáśá˝á áá°áááᣠááá áá á¨áááá¸á á¨á˛ á¤á á¤áľ á ááááŽá˝ UNIX áśáŹáśá˝á áĽáť áá áá áá˝ááá˘
- áᢠá¨á˛ á¤á á¤áľ áłá ááŹáśá˝ ááááŞáŤ áá° ááŽáśáĄá ááá á ááááá áĽá á¨á፠á ááŽáśáĄá ááľá á á ááą á¨áááá á¨áááľáŽá˝ Რá¤á á¤áľ áááĽááľ áŤáą áᰠᲠá¤á á¤áľ RR ááááŚá˝ á°á¨á áá°áá°áá
- á¨á°á á¨áá á áľá°ááá (ááá á¨ááá ááŤ) á á°áŤáá áááá ááľáĽ áľáááá á°á¨ááá§áᣠáŤáááᣠáááš á˝á ááŁááá˘
- á¨áááš A/AAAA/CNAME RRs áĽáť á°ááá áá áĽá á°ááá IPv4/IPv6 á áľáŤáťáá˝ á¨ááą ááĽá°áá
- á¨á áá á áľáŤáťáá˝ áááአá áá˝á á˛á˛á¤á á°á°áĽááá áĽá áááá á¨á°ááአBGP á áťáá˝ ááľáłáá፠á°á°áĽáˇáá˘
- á áľááľá á¨á°á¸áá á ááá á¨ááŤááááľ ááá˝ á˛á°áá°áᣠá˛á˛á¤á á°áááá
- ᨠTTL ááá áŤáá á áá, áá¤áľ á¨áá¸ááŤá áĽá ᨠBGP ááľáłáááŤáá˝ ááááłá
á°á¨á᪠á°ááŁááĄ-
- á SIGHUP á¨ááŤáá˝á áááá áĽáá°áá á ááá ἠáá
- áá¸ááŤáá á¨ááá˝ á ááŁááá˝ áá á áááłá°á ááá¨áľá˘ dnstap-bgp á HTTP/JSON á áŠá
- áĽáá°áá á¨á°ááᨠá áá áááąá áá°áá á¨á áľ áááááľ áá¸ááŤáá á á˛áľá áá áŤáŁááľ (á áŚááľá˛á˘ áłáłá¤á ááľáĽ)
- áá° áá á¨á ááłá¨ áá¨áĽ áľá áŚáł áááá¨á áľáá (ááá áĽáá°ááŤáľááá á¨áá á áłá˝ ááĽáŤáŤá)
- IPv6 áľáá
áá°áŚá˝:
- á¨IDN ááŤáá˝ áĽáľáŤáá á áá°áááá˘
- áĽááľ BGP á ááĽáŽá˝
á°á á°áĽáŠá˘
áááááĽáŠ
áľááá
, áááá á áŤááľ á ááľ áá áá°áĽá°áĽ áĽáááá. á áá¤áąá ᣠáĽáá°áá
áŤá á¨á ááłá¨ áá¨áĽ áśááá á¨áá ááá ááááľ á ááĽáá˘
á¨áĽáŤá á ááááŽáŁ áĽá áĽáá°ááľá áᣠá¨áĽááá ááááŤá ááá˝ áááĄ-
- á°áá áá á¨áĽá á áááá áĽáᰠᲠá¤á á¤áľ á°áá áŻá ᣠáĽá á¨á˛ á¤á á¤áľ áĽáŤááá˝ á áŞáá¤á áá ááá á ááŁá¸áᢠá á áŤá˘á ááááľ á¨á˛ á¤á á¤áľ ááĽááá áá áá áĽááłáá˝á áá á áľááá ááá˘
- áŁá˘áŤáá á˛á¨ááľ á°áá áá áĽáá° âᨠxxx.org á áááá˝ áááľ áá¸áâ á¨áá á¨á˛ á¤á á¤áľ áĽáŤá áááŤá
- áłááá°áĄ xxx.orgá áááłá (ááá á¨áá¸ááŤá áááľá°áá) áĽá áá°áá áá ááá˝ áááŤá "xxx.org áĽáá°áá áĽá áĽáá°áá áŤá á á á á áá" á DNSTap á áľáአá ááŁááľ
- dnstap-bgp ááľáĽ áĽááá á á áľáŤáťáá˝ áŤáľáłááá áá á BGP á áŠá ááŤá á áłáá° áááá ááľáĽ áŤá
- áá áá° áĽááá
á áááá˝ ááááľ áŤáľá°áááá
next-hop self
á°áá á áŤáá°á - á¨á°áá áá áá° áĽááá á áááá˝ á¨áááĽááľ áĽá˝áá˝ á ááťá ááľáĽ áŤááá
á á áááአááᣠáá° á¨áłááą áŁá˘áŤáá˝ á¨áááľáą ááááśá˝áŁ á BIRD ááľáĽ á¨á°áᨠá áá á¨áĽ áĽá áááá áĽá á ááá ááአá¨áľááá° áááá áá á áááááá˘
áá áĽá áľ á˝áá á ááᥠá¨á°áá áá á¨ááááŞáŤá á¨SYN ááŹáľáŁ ááááŁáľá á á áá ááľáĽ á á áŤá˘á á áŠá ááááá áá ááá¨ááᢠááááą áá˛áŤáá á áá°ááá¸á. áĽá áĽáá á á á áŤá˘á áĽááłá áá á áááľá¨áľ á ááŤáŽá˝ ááአáá˝ááᢠáĽáą áľáŤááá áĽáť á¨áŁá, á¨á፠ááá á˝áá á¨áá áľá. áĽá áá° á ááłááľ á˛áá á áŤáááá¨á (á ááľá ááłáĽ) áአáá¤áśá˝ ááአáá˝ááá˘
á á°á¨ááŞá á°áá áá˝ á¨DNS TTL á°á ááŤáľá á áááá áŤá¸á ááá áá˝áááŁáá á á°áá áá Unbound á¨áá á¨á ááá á¨á á°á á°á áá¸á፠ááľáĽ á ááłááľ á¨áአáá¤áśá˝á áĽáá˛á áá ááŤá°ááá áá˝ááá˘
á á°ááŁáᣠá¨ááááŞáŤáá áá ááá°áá á˝áá á ááá áŠáĽááᣠááá áá á¨áĽááś áááľ áááŤá áá˝ááá˘
á¨á áááá ááľá°áŤá¨áŤ
áááá¨áŁáá ááá ᣠáťááŠ
áá áááášá áááá˝ áĽáá.
á˘.á.á.
á á ááľ á áľá°ááá áá áááľ BGP deemons ááľáŹáľ áá°á¨áłá á˝áá á ááᥠBIRD BGP peeringá á¨á áŤáŁá˘á á áľá°ááá (ááá á¨á¨áľááá á¨á áŤáŁá˘ á áááá˝) áá áááá á áááááᢠá á á ááá á¨ááᢠá¨á°áĽáłá¤ áááŞáŤ ááááŽá˝á ááá ἠáĽá ááá ἠá áá¨áłá¸ááᣠáá á ááľá áá áááᢠááááŁáľ á¨áá ááááľ á á, áá á áááááľá.
áá BGP á´áá ááá¨á áľá˝ááá ᣠáá áĽá BIRD áĽááłáá áĽá á ááá áŚáł á áĽá áĽá á áá ááááᣠá áŤááľá áááŤáľ á áááááá˘
áľááá dnstap-bgpá á ááľááá áľá áŚáł ááľáĽ á°á á áŠáľáŁ áĽáąá á¨áĽáŠ áá á áŹáľ á áááá˝ á áŠá á¨á°áááᥠáá áĽáá° ááá ááᣠáŤááš á á°ááŤáŠ á¨áľá áŚáłáá˝ áá á°áŁáĽáááᢠá áĽáŤááłááą á áĽááá áŤáá˝ áá á¨á áľá°ááá á áá á¨ááááą á¨áá p2p á áá á áľáŤáťáá˝á áĽáá°á ááá, áľááá ááá ááá áá˝áá. áá áá° ááľáĽ áá°áśá˝á áááľá¨áľ á¨ááŤáááá á°ááłáłá áá´ ááᢠá ááá á¨á°áá°á° áśá¨á áĽá ááá˝ ááŤáŁáá˝.
ááá
á á°á˝áá á
á¨áľá áŚáł áááá á ááłá áľááŞááľá˘
#!/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",
]
áá.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.áááá
route 3.226.79.85/32 via "ens3";
route 18.236.189.0/24 via "ens3";
route 3.224.21.0/24 via "ens3";
...
Რá¤á á¤áľ
á ááŁáŞáŁ á áĄáĄááąáŁ Unbound binary á AppArmor ááá፠á°á¨áááᣠáá á á¨ááá á¨á˛ á¤á á¤áľ áłá áśáŹáśá˝ áá áĽááłáááá áá¨ááááᢠáá á ááá፠áá áá°á¨á ááá áá°áá¨á áľá˝ááá áĄ-
# cd /etc/apparmor.d/disable && ln -s ../usr.sbin.unbound .
# apparmor_parser -R /etc/apparmor.d/usr.sbin.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
ááááŽá˝á á ááá¨áľ áĽá á ááľáŹáľ áá
ááááŠá áŤáááłá, á
áľá á
áĽáŤáá áŤá áááá pfx. á á áľá¨áá и á áłá áááᢠá áááá˝á áĽá á ááłá¨ áá¨áŚá˝á áĽáá˛áá ááá áĽááłáá ááá áááá áá˝ááᢠá áľáááá áá áᢠá¨áĽá á¨áŞáá¤áľ áááľ áá¨áĽ á áĽáá áááአááľáĽ áá á đ
á¨ááŤáľáá ááá á¨RosKomSvoboda API á ááŁáŞ á¨áááá á°á áá ááŞá áĽáŤááá˝á áááľ ááᢠáľááŞááą-áŞá˛ áŤááá áááľááᢠáľááá , áá° Ognelis áĽááááŁáá.
áĽáľáŤáá áľá¨áľ ᨠIPv4 áá áĽáť áá á¨áá°áŤá. ᨠIPv6 áľááť áľáá˝ áá, áá áááľá°áŤá¨á ááá áááá. áá 6á áĽáá˛á áá áá áŤááĽááľ á áľá°ááá˘
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
áĽááą á¨á°áťááľ áĽáá áłáŤáľáĄ áá, áľááá ááťáťá á¨áá˝á ááá áŤáŠ - áááą.
á¨á°áá á áááá
áĽáá áááááľ áŤáá°áŽá˝ ááłááá˝á áĽá°áŁáá ᣠáá á áááŽá˛á / á˛á˛áľáŽ á¨á áá ááá ááá á áá áľá˘
á ááááŞáŤáŁ 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 á ááááá ááá ááá áááŤá ᣠáĽá áááááĽáŠ ááá ááá˘
á˝ááŽá˝
á áá áŁáá áľáá°-ááá á¨ááŤáá˝á áááá ááááá¨áľ áĽá áááľáŹáľ á¨ááá˝ áááŽá˝ á á°á¨á᪠áŤáŤáľáłáᢠyoutube.com
áĽá á¨áĽáą á˛á˛á¤á.
áĽá áá ááá áŞá˛áŽáá˝ á VPN á áŠá áŤááá, áá á áááá áťáá áááá áá˝áá. ááááŁáľ áááá RKN á á¨áá¨ááá áłáá ááŤáá˝á áááá áá ááá á áá áá, á áááą ááá áá. áĽá á áá°áá°áá áľ áá áááááá¸áá˘
áá°áá°ááŤ
á¨á°ááá¸á áá´ á á áŤá˘áá˝ á á áá áá á¨áá°ááĽáŻá¸áá áááááá áĽááłáá˝ áĽáá˛áŤáá áŤáľá˝áááłáá˘
á ááá á°á¨á, dnstap-bgp á á፠áľá áá á áááľá¨áľ á¨á°áá°á á°á¨á á¨áľáŤáá ááĽáĽá áááááá áľ ááá áááááá ááá áá áá ááťáá ᢠáŤáľáłááą á áĽá áá á ááľ áşá áŁá˘áŤáá˝ á á°ááłáłá á¨á áá á áľáŤáť (áááłá ᨠCloudflare á áľá°áááŁ) áá°áá áĽáá°áá˝á áŤáľáłáṠᣠáľááá áá áá´ á áŁá áá á°á áľááááááľ á ááá˘
áá áááááŤáá˝á áááá ááááśá˝ áá á áŁá á á ááá˘
á°á¨ááŞáὠᣠá ááľááśá˝ ᣠáĽáŤááá˝á áááľáą - áĽááłá á°á á ááĄ!
ááá: hab.com