DNSTap va BGP yordamida ILV blokirovkasini chetlab o'ting

DNSTap va BGP yordamida ILV blokirovkasini chetlab o'ting

Mavzu juda kaltaklangan, bilaman. Misol uchun, ajoyib bor maqola, lekin u erda faqat bloklash ro'yxatining IP qismi hisobga olinadi. Biz domenlarni ham qo'shamiz.

Sudlar va RKN hamma narsani o'ngga va chapga to'sib qo'yishi va provayderlar Revizorro tomonidan berilgan jarimalarga tushmaslikka harakat qilishlari sababli, blokirovkadan kelib chiqadigan yo'qotishlar juda katta. Va "qonuniy" bloklangan saytlar orasida juda ko'p foydalilari bor (salom, rutracker)

Men RKN yurisdiktsiyasidan tashqarida yashayman, lekin ota-onam, qarindoshlarim va do'stlarim uyda qolishdi. Shunday qilib, ITdan uzoq bo'lgan odamlar uchun blokirovkani chetlab o'tishning oson yo'lini topishga qaror qilindi, yaxshisi ularning umuman ishtirokisiz.

Ushbu eslatmada men tarmoqdagi asosiy narsalarni bosqichma-bosqich tasvirlamayman, lekin ushbu sxemani qanday amalga oshirish mumkinligining umumiy tamoyillarini tasvirlab beraman. Shunday qilib, tarmoqning umumiy va xususan, Linuxda qanday ishlashini bilish kerak.

Qulflarning turlari

Birinchidan, bloklangan narsalar haqida xotiramizni yangilaymiz.

RKN-dan tushirilmagan XML-da bir necha turdagi qulflar mavjud:

  • IP
  • Domen nomi
  • URL

Oddiylik uchun biz ularni ikkitaga qisqartiramiz: IP va domen va biz domenni URL orqali blokirovka qilishdan olib tashlaymiz (aniqrog'i, ular buni biz uchun allaqachon qilgan).

dan yaxshi odamlar Roskomsvoboda ajoyib narsani anglab yetdi API, bu orqali biz kerakli narsalarni olishimiz mumkin:

Bloklangan saytlarga kirish

Buning uchun bizga bir nechta kichik xorijiy VPS kerak, yaxshisi cheksiz trafik bilan - bularning ko'pi 3-5 dollarga. Ping unchalik katta bo'lmasligi uchun uni yaqin chet elda olishingiz kerak, lekin yana bir bor e'tiborga olingki, Internet va geografiya har doim ham mos kelavermaydi. Va 5 dollar uchun SLA yo'qligi sababli, xatolarga chidamlilik uchun turli provayderlardan 2+ dona olish yaxshiroqdir.

Keyinchalik, mijoz routeridan VPS ga shifrlangan tunnelni o'rnatishimiz kerak. Men Wireguard-dan eng tez va eng oson sozlash sifatida foydalanaman. Menda Linux-ga asoslangan mijoz routerlari ham bor (APU2 yoki OpenWRT-dagi biror narsa). Ba'zi Mikrotik / Cisco holatlarida siz OpenVPN va GRE-over-IPSEC kabi ularda mavjud protokollardan foydalanishingiz mumkin.

Qiziqarli trafikni aniqlash va qayta yo'naltirish

Siz, albatta, xorijiy mamlakatlar orqali barcha Internet-trafikni o'chirib qo'yishingiz mumkin. Ammo, ehtimol, mahalliy kontent bilan ishlash tezligi bundan katta zarar ko'radi. Bundan tashqari, VPS-da tarmoqli kengligi talablari ancha yuqori bo'ladi.

Shuning uchun biz qandaydir tarzda bloklangan saytlarga trafikni ajratishimiz va uni tanlab tunnelga yo'naltirishimiz kerak bo'ladi. Hatto "qo'shimcha" trafikning bir qismi u erga tushsa ham, hamma narsani tunnel orqali haydashdan ko'ra ancha yaxshi.

Trafikni boshqarish uchun biz BGP protokolidan foydalanamiz va VPS-dan mijozlarga kerakli tarmoqlarga marshrutlarni e'lon qilamiz. Keling, BIRD-ni eng funktsional va qulay BGP demonlaridan biri sifatida olaylik.

IP

IP tomonidan blokirovka qilish bilan hamma narsa aniq: biz VPS bilan barcha bloklangan IP-larni e'lon qilamiz. Muammo shundaki, ro'yxatda API qaytaradigan 600 mingga yaqin pastki tarmoq mavjud va ularning katta qismi /32 xostlaridir. Ushbu marshrutlar soni zaif mijoz routerlarini chalkashtirib yuborishi mumkin.

Shuning uchun, ro'yxatni qayta ishlashda, agar u 24 yoki undan ortiq xostga ega bo'lsa, tarmoq / 2 gacha umumlashtirishga qaror qilindi. Shunday qilib, marshrutlar soni ~ 100 minggacha qisqartirildi. Buning uchun skript quyidagicha bo'ladi.

Domenlar

Bu murakkabroq va bir necha usullar mavjud. Misol uchun, siz har bir mijoz routerga shaffof Squid-ni o'rnatishingiz va u erda HTTP ushlashini amalga oshirishingiz va birinchi holatda so'ralgan URL-manzilni, ikkinchi holatda SNI-dan domenni olish uchun TLS qo'l siqishini ko'rishingiz mumkin.

Ammo har xil yangilangan TLS1.3 + eSNI tufayli HTTPS tahlili kundan-kunga kamroq va kamroq real bo'lib bormoqda. Ha, va mijoz tomonidagi infratuzilma yanada murakkablashmoqda - siz hech bo'lmaganda OpenWRT dan foydalanishingiz kerak bo'ladi.

Shuning uchun men DNS so'rovlariga javoblarni ushlab turish yo'lini tanlashga qaror qildim. Bu erda ham har qanday DNS-over-TLS / HTTPS sizning boshingiz ustida aylana boshlaydi, lekin biz (hozircha) mijozning ushbu qismini boshqarishimiz mumkin - uni o'chirib qo'ying yoki DoT/DoH uchun o'z serveringizdan foydalaning.

DNS-ni qanday qilib to'xtatish mumkin?

Bu erda ham bir nechta yondashuvlar bo'lishi mumkin.

  • PCAP yoki NFLOG orqali DNS-trafikni ushlab turish
    Ushbu ikkala ushlab turish usuli ham yordamchi dasturda amalga oshiriladi sidmat. Ammo u uzoq vaqt davomida qo'llab-quvvatlanmadi va funksionallik juda ibtidoiy, shuning uchun siz hali ham buning uchun jabduqlar yozishingiz kerak.
  • DNS server jurnallarini tahlil qilish
    Afsuski, menga ma'lum bo'lgan rekursorlar javoblarni qayd qila olmaydi, faqat so'rovlarni. Aslida, bu mantiqiy, chunki so'rovlardan farqli o'laroq, javoblar murakkab tuzilishga ega va ularni matn shaklida yozish qiyin.
  • DNSTap
    Yaxshiyamki, ularning ko'pchiligi bu maqsadda DNSTap-ni qo'llab-quvvatlaydi.

DNSTap nima?

DNSTap va BGP yordamida ILV blokirovkasini chetlab o'ting

Bu DNS serveridan tuzilgan DNS so'rovlari va javoblari kollektoriga o'tkazish uchun Protokol Buferlari va Frame Streamsga asoslangan mijoz-server protokoli. Asosan, DNS server so'rovlar va javob metama'lumotlarini (xabar turi, mijoz/server IP va boshqalar) hamda to'liq DNS xabarlarini tarmoq orqali ular bilan ishlaydigan (ikkilik) shaklda uzatadi.

Shuni tushunish kerakki, DNSTap paradigmasida DNS server mijoz, kollektor esa server vazifasini bajaradi. Ya'ni, DNS-server kollektorga ulanadi, aksincha emas.

Bugungi kunda DNSTap barcha mashhur DNS serverlarida qo'llab-quvvatlanadi. Ammo, masalan, BIND ko'plab distribyutorlarda (masalan, Ubuntu LTS) ko'pincha negadir uning yordamisiz qurilgan. Shunday qilib, keling, qayta yig'ish bilan bezovta qilmaylik, balki engilroq va tezroq rekursorni olamiz - Unbound.

DNSTap-ni qanday tutish mumkin?

bor biroz количСство DNSTap hodisalari oqimi bilan ishlash uchun CLI yordam dasturlari, ammo ular bizning muammomizni hal qilish uchun mos emas. Shuning uchun men o'z velosipedimni ixtiro qilishga qaror qildim, u hamma narsani qiladi: dnstap-bgp

Ish algoritmi:

  • Ishga tushganda, u matn faylidan domenlar ro'yxatini yuklaydi, ularni o'zgartiradi (habr.com -> com.habr), uzilgan chiziqlarni, dublikatlarni va subdomenlarni istisno qiladi (ya'ni, ro'yxatda habr.com va www.habr.com bo'lsa, u faqat birinchisi yuklanadi) va ushbu roΚ»yxat boΚ»yicha tez qidirish uchun prefiks daraxtini yaratadi
  • DNSTap serveri vazifasini bajarib, u DNS serveridan ulanishni kutadi. Aslida, u UNIX va TCP soketlarini qo'llab-quvvatlaydi, lekin men bilgan DNS serverlari faqat UNIX soketlaridan foydalanishi mumkin.
  • Kiruvchi DNSTap paketlari avval Protobuf strukturasiga seriyasizlashtiriladi, so'ngra Protobuf maydonlaridan birida joylashgan ikkilik DNS xabarining o'zi DNS RR yozuvlari darajasiga tahlil qilinadi.
  • So'ralgan xost (yoki uning asosiy domeni) yuklangan ro'yxatda mavjudligi tekshiriladi, agar bo'lmasa, javob e'tiborga olinmaydi.
  • Javobdan faqat A/AAAA/CNAME RR tanlanadi va ulardan tegishli IPv4/IPv6 manzillari olinadi.
  • IP manzillar sozlanishi TTL bilan keshlanadi va barcha sozlangan BGP tengdoshlariga e'lon qilinadi
  • Keshlangan IP-ga ishora qiluvchi javob qabul qilinganda, uning TTL yangilanadi
  • TTL muddati tugagandan so'ng, yozuv keshdan va BGP e'lonlaridan o'chiriladi

Qo'shimcha funksionallik:

  • SIGHUP tomonidan domenlar roΚ»yxatini qayta oΚ»qish
  • Keshni boshqa holatlar bilan sinxronlashtirish dnstap-bgp HTTP/JSON orqali
  • Qayta ishga tushirilgandan so'ng uning tarkibini tiklash uchun diskdagi keshni (BoltDB ma'lumotlar bazasida) takrorlang
  • Boshqa tarmoq nom maydoniga o'tishni qo'llab-quvvatlash (bu nima uchun kerakligi quyida tavsiflanadi)
  • IPv6 qo'llab-quvvatlash

Cheklovlar:

  • IDN domenlari hali qo'llab-quvvatlanmaydi
  • Bir nechta BGP sozlamalari

yig'ib oldim RPM va DEB oson o'rnatish uchun paketlar. Systemd bilan barcha nisbatan yangi operatsion tizimlarda ishlashi kerak. ularda hech qanday bog'liqlik yo'q.

Sxema

Shunday qilib, keling, barcha tarkibiy qismlarni yig'ishni boshlaylik. Natijada biz ushbu tarmoq topologiyasiga o'xshash narsani olishimiz kerak:
DNSTap va BGP yordamida ILV blokirovkasini chetlab o'ting

Ishning mantig'i, menimcha, diagrammadan aniq:

  • Mijoz bizning serverimiz DNS sifatida sozlangan va DNS so'rovlari ham VPN orqali o'tishi kerak. Bu provayder blokirovka qilish uchun DNS blokirovkasidan foydalana olmasligi uchun kerak.
  • Saytni ochayotganda, mijoz "xxx.org IP manzillari qanday" kabi DNS so'rovini yuboradi.
  • erkin xxx.org ni hal qiladi (yoki uni keshdan oladi) va mijozga β€œxxx.orgda falon IP bor” javobini yuboradi, uni parallel ravishda DNSTap orqali takrorlaydi.
  • dnstap-bgp bu manzillarni e'lon qiladi BIRD domen bloklangan ro'yxatda bo'lsa, BGP orqali
  • BIRD bilan ushbu IP-larga marshrutni e'lon qiladi next-hop self mijoz router
  • Mijozdan ushbu IP-larga keyingi paketlar tunnel orqali o'tadi

Serverda bloklangan saytlarga marshrutlar uchun men BIRD ichidagi alohida jadvaldan foydalanaman va u hech qanday tarzda OS bilan kesishmaydi.

Ushbu sxemaning kamchiligi bor: mijozning birinchi SYN paketi, ehtimol, mahalliy provayder orqali ketishga ulguradi. marshrut darhol e'lon qilinmaydi. Va bu erda provayder blokirovkani qanday amalga oshirishiga qarab variantlar mumkin. Agar u shunchaki tirbandlikni tushirsa, unda hech qanday muammo yo'q. Va agar u uni ba'zi DPI ga yo'naltirsa, u holda (nazariy jihatdan) maxsus effektlar mumkin.

Bundan tashqari, mijozlar DNS TTL mo''jizalarini hurmat qilmasligi ham mumkin, bu esa mijozga Unbound so'rash o'rniga o'zining chirigan keshidagi eskirgan yozuvlardan foydalanishiga olib kelishi mumkin.

Amalda, na birinchi, na ikkinchisi men uchun muammo tug'dirmadi, lekin sizning kilometringiz farq qilishi mumkin.

Serverni sozlash

Yurish qulayligi uchun men yozdim Ansible uchun rol. U Linux asosida serverlarni ham, mijozlarni ham sozlashi mumkin (debga asoslangan tarqatish uchun mo'ljallangan). Barcha sozlamalar juda aniq va o'rnatilgan inventar.yml. Bu rol mening katta o'yin kitobimdan kesilgan, shuning uchun unda xatolar bo'lishi mumkin - olish talablari xush kelibsiz πŸ™‚

Keling, asosiy tarkibiy qismlarni ko'rib chiqaylik.

BGP

Bitta xostda ikkita BGP demonini ishga tushirishda asosiy muammo bor: BIRD BGP peeringni localhost (yoki har qanday mahalliy interfeys) bilan sozlashni istamaydi. Umuman so'zdan. Googling va pochta ro'yxatlarini o'qish yordam bermadi, ular buni dizayn bo'yicha deb da'vo qilmoqdalar. Ehtimol, qandaydir yo'l bor, lekin men uni topa olmadim.

Siz boshqa BGP demonini sinab ko'rishingiz mumkin, lekin menga BIRD yoqadi va men uni hamma joyda ishlataman, men ob'ektlarni ishlab chiqarishni xohlamayman.

Shuning uchun men dnstap-bgp ni veth interfeysi orqali ildizga ulangan tarmoq nom maydoni ichiga yashirdim: bu quvurga o'xshaydi, uning uchlari turli nomlar maydonida chiqib turadi. Ushbu uchlarning har birida biz xostdan tashqariga chiqmaydigan shaxsiy p2p IP manzillarini osib qo'yamiz, shuning uchun ular har qanday narsa bo'lishi mumkin. Bu ichki jarayonlarga kirish uchun ishlatiladigan mexanizm hamma tomonidan sevilgan Docker va boshqa konteynerlar.

Buning uchun yozilgan skript va o'zingizni sochingizdan boshqa nom maydoniga sudrab o'tish uchun yuqorida tasvirlangan funksiya dnstap-bgp-ga qo'shildi. Shuning uchun u root sifatida ishga tushirilishi yoki setcap buyrug'i orqali CAP_SYS_ADMIN ikkilik fayliga berilishi kerak.

Nomlar maydonini yaratish uchun skript namunasi

#!/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

Odatiy bo'lib, Ubuntu'da Unbound ikkilik fayli AppArmor profili tomonidan mahkamlangan bo'lib, bu unga barcha turdagi DNSTap soketlariga ulanishni taqiqlaydi. Siz ushbu profilni o'chirishingiz yoki uni o'chirib qo'yishingiz mumkin:

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

Bu, ehtimol, o'yin kitobiga qo'shilishi kerak. Albatta, profilni tuzatish va kerakli huquqlarni berish ideal, lekin men juda dangasa edim.

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

Ro'yxatlarni yuklab olish va qayta ishlash

IP manzillar ro'yxatini yuklab olish va qayta ishlash uchun skript
U ro'yxatni yuklaydi, prefiksni jamlaydi pfx. The qo'shmang ΠΈ umumlashtirmang siz IP va tarmoqlarga o'tkazib yuborish yoki umumlashtirmaslikni aytishingiz mumkin. Menga kerak edi. mening VPS-ning pastki tarmog'i bloklangan ro'yxatda edi πŸ™‚

Qizig'i shundaki, RosKomSvoboda API standart Python foydalanuvchi agenti bilan so'rovlarni bloklaydi. Ssenariy bolakay tushunganga oβ€˜xshaydi. Shuning uchun biz uni Ognelisga o'zgartiramiz.

Hozircha u faqat IPv4 bilan ishlaydi. IPv6 ulushi kichik, lekin uni tuzatish oson bo'ladi. Agar siz bird6 dan ham foydalanmasangiz.

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)

Yangilash uchun skript
Men kuniga bir marta tojda yuguraman, ehtimol uni har 4 soatda tortib olishga arziydi. bu, mening fikrimcha, RKN provayderlardan talab qiladigan yangilanish davri. Bundan tashqari, ular tezroq kelishi mumkin bo'lgan boshqa favqulodda blokirovkaga ega.

Quyidagilarni bajaradi:

  • Birinchi skriptni ishga tushiradi va marshrutlar ro'yxatini yangilaydi (rkn_routes.list) BIRD uchun
  • BIRD-ni qayta yuklang
  • dnstap-bgp uchun domenlar ro'yxatini yangilaydi va tozalaydi
  • dnstap-bgp-ni qayta yuklang

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

Ular ko'p o'ylamasdan yozilgan, shuning uchun agar siz yaxshilanishi mumkin bo'lgan narsani ko'rsangiz - buning uchun boring.

Mijozni sozlash

Bu erda men Linux routerlari uchun misollar keltiraman, ammo Mikrotik / Cisco misolida bu yanada osonroq bo'lishi kerak.

Birinchidan, biz BIRD-ni o'rnatamiz:

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;
}

Shunday qilib, biz BGP dan olingan marshrutlarni yadro marshrutlash jadvali raqami 222 bilan sinxronlashtiramiz.

Shundan so'ng, standartni ko'rishdan oldin yadrodan ushbu plastinkaga qarashni so'rash kifoya:

# 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

Hammasi, serverning tunnel IP-manzilini DNS sifatida tarqatish uchun routerda DHCP-ni sozlash qoladi va sxema tayyor.

kamchiliklar

Domenlar ro'yxatini yaratish va qayta ishlashning joriy algoritmi bilan u, jumladan, quyidagilarni o'z ichiga oladi: youtube.com va uning CDNlari.

Va bu barcha videolar VPN orqali o'tishiga olib keladi, bu esa butun kanalni yopishi mumkin. Ehtimol, hozircha RKNni bloklaydigan mashhur domenlar-istisnolar ro'yxatini tuzishga arziydi, ichaklari ingichka. Va tahlil qilishda ularni o'tkazib yuboring.

xulosa

Ta'riflangan usul sizga hozirda provayderlar tomonidan amalga oshirilayotgan deyarli har qanday blokirovkani chetlab o'tishga imkon beradi.

Aslida, dnstap-bgp domen nomidan kelib chiqqan holda ma'lum darajadagi trafikni boshqarish zarur bo'lgan boshqa har qanday maqsadda foydalanish mumkin. Shuni yodda tutingki, bizning vaqtimizda minglab saytlar bir xil IP-manzilga (masalan, Cloudflare-ning orqasida) osib qo'yishi mumkin, shuning uchun bu usul juda past aniqlikka ega.

Ammo qulflarni chetlab o'tish ehtiyojlari uchun bu etarli.

Qo'shimchalar, tahrirlar, tortishish so'rovlari - xush kelibsiz!

Manba: www.habr.com

a Izoh qo'shish