Бастани ILV-ро бо DNSTap ва BGP гузаред

Бастани ILV-ро бо DNSTap ва BGP гузаред

Мавзӯъ хеле латукӯб шудааст, ман медонам. Масалан, бузург аст мақола, аммо дар он ҷо танҳо қисми IP-и рӯйхати блокҳо баррасӣ карда мешавад. Мо инчунин доменҳоро илова мекунем.

Аз сабаби он, ки судҳо ва РКН ҳама чизро ба рост ва чап маҳкам мекунанд ва провайдерҳо кӯшиш мекунанд, ки ба ҷаримаҳои аз ҷониби Revizorro додашуда наафтанд, талафоти марбут ба басташавӣ хеле калон аст. Ва дар байни сайтҳои "қонунӣ" басташуда сайтҳои муфид зиёданд (салом, rutracker)

Ман берун аз доираи салоҳияти РКН зиндагӣ мекунам, аммо волидон, хешовандон ва дӯстонам дар хона монданд. Аз ин рӯ, тасмим гирифта шуд, ки роҳи осонеро барои одамони дур аз технологияи IT барои канорагирӣ аз блок, беҳтараш бидуни иштироки онҳо пайдо кунанд.

Дар ин ёддошт, ман чизҳои асосии шабакаро бо қадамҳо тавсиф намекунам, балки принсипҳои умумии татбиқи ин схемаро тавсиф мекунам. Аз ин рӯ, дониш дар бораи чӣ гуна кор кардани шабака дар маҷмӯъ ва махсусан дар Linux ҳатмист.

Намудҳои қуфлҳо

Аввалан, биёед хотираи худро дар бораи он чизе, ки баста шудааст, навсозӣ кунем.

Дар XML-и борфароршуда аз RKN якчанд намуди қулфҳо мавҷуданд:

  • IP
  • Номи домени
  • URL

Барои содда, мо онҳоро ба ду кам мекунем: IP ва домен ва мо танҳо доменро аз бастани URL хориҷ мекунем (аниқтараш, онҳо аллакай ин корро барои мо кардаанд).

одамони хуб аз Роскомсвобода аҷиберо дарк намуд API, ки тавассути он мо метавонем чизҳои лозимаро ба даст орем:

Дастрасӣ ба сайтҳои басташуда

Барои ин ба мо VPS-и хурди хориҷӣ лозим аст, беҳтараш бо трафики номаҳдуд - бисёре аз инҳо барои 3-5 доллар ҳастанд. Шумо бояд онро дар хориҷи наздик гиред, то пинг он қадар калон набошад, аммо боз ҳам ба назар гиред, ки Интернет ва ҷуғрофӣ на ҳамеша мувофиқат мекунанд. Ва азбаски барои 5 доллар SLA вуҷуд надорад, беҳтар аст, ки барои таҳаммулпазирии хатогиҳо аз провайдерҳои гуногун 2+ дона гиред.

Баъдан, мо бояд нақби рамзшударо аз роутери муштарӣ ба VPS насб кунем. Ман Wireguard-ро ҳамчун зудтарин ва осонтарини насб истифода мекунам. Ман инчунин роутерҳои муштарӣ дар асоси Linux дорам (АПУ2 ё чизе дар OpenWRT). Дар мавриди баъзе Mikrotik / Cisco, шумо метавонед протоколҳоеро, ки дар онҳо мавҷуданд, ба монанди OpenVPN ва GRE-over-IPSEC истифода баред.

Муайян ва бозгардонидани трафики манфиатдор

Шумо албатта метавонед тамоми трафики интернетиро тавассути кишварҳои хориҷӣ хомӯш кунед. Аммо, ба эҳтимоли зиёд, суръати кор бо мундариҷаи маҳаллӣ аз ин хеле зарар хоҳад дид. Ғайр аз он, талаботҳои фарохмаҷро дар VPS хеле баландтар хоҳанд буд.

Аз ин рӯ, ба мо лозим меояд, ки трафикро ба сайтҳои басташуда ҷудо кунем ва онро интихобан ба нақб равона кунем. Ҳатто агар як қисми трафики "иловагӣ" ба он ҷо расад, он ҳанӯз ҳам беҳтар аз рондани ҳама чиз тавассути нақб аст.

Барои идоракунии трафик, мо протоколи BGP-ро истифода мебарем ва масирҳоро ба шабакаҳои зарурӣ аз VPS ба мизоҷон эълон мекунем. Биёед BIRD-ро ҳамчун яке аз демонҳои функсионалӣ ва қулайи BGP гирем.

IP

Бо бастани IP, ҳама чиз равшан аст: мо танҳо ҳама IP-ҳои басташударо бо VPS эълон мекунем. Мушкилот дар он аст, ки дар рӯйхат тақрибан 600 ҳазор зершабақаҳо мавҷуданд, ки API бармегардонанд ва аксарияти куллии онҳо /32 мизбон мебошанд. Ин шумораи масирҳо метавонад роутерҳои муштарии заифро иштибоҳ кунад.

Аз ин рӯ, ҳангоми коркарди рӯйхат тасмим гирифта шуд, ки то шабака / 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 метамаълумоти дархост ва посухро (навъи паём, мизоҷ/сервер ва ғ.) ва инчунин паёмҳои мукаммали DNS-ро дар шакли (бинарӣ), ки дар он бо онҳо тавассути шабака кор мекунад, интиқол медиҳад.

Фаҳмидани он муҳим аст, ки дар парадигмаи 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 RR интихоб карда мешавад ва аз онҳо суроғаҳои мувофиқи IPv4/IPv6 гирифта мешаванд.
  • Суроғаҳои IP бо TTL-и танзимшаванда кэш карда мешаванд ва ба ҳама ҳамсолони танзимшудаи BGP таблиғ карда мешаванд
  • Ҳангоми гирифтани посухе, ки ба IP-и аллакай кэшшуда ишора мекунад, TTL-и он нав карда мешавад
  • Пас аз ба охир расидани мӯҳлати TTL, вуруд аз кэш ва аз эълонҳои BGP хориҷ карда мешавад

Функсияи иловагӣ:

  • Аз нав хондани рӯйхати доменҳо аз ҷониби SIGHUP
  • Нигоҳ доштани кэш дар ҳамоҳангӣ бо дигар ҳолатҳо dnstap-bgp тавассути HTTP/JSON
  • Кэшро дар диск (дар базаи BoltDB) такрор кунед, то мундариҷаи онро пас аз бозоғоз барқарор кунед
  • Дастгирии гузариш ба фазои номи дигари шабака (чаро ин лозим аст, дар зер тавсиф карда мешавад)
  • Дастгирии IPv6

Маҳдудиятҳо:

  • Доменҳои IDN ҳанӯз дастгирӣ намешаванд
  • Чанд танзимоти BGP

ҷамъ кардам RPM ва DEB бастаҳо барои насби осон. Бояд дар ҳама OS-ҳои нисбатан нав бо systemd кор кунад. онҳо ягон вобастагӣ надоранд.

Нақшаи

Пас, биёед якҷоя кардани ҳамаи ҷузъҳоро оғоз кунем. Дар натиҷа, мо бояд чизе монанди ин топологияи шабакаро ба даст орем:
Бастани ILV-ро бо DNSTap ва BGP гузаред

Мантиқи кор, ба фикрам, аз диаграмма равшан аст:

  • Мизоҷ сервери моро ҳамчун DNS танзим кардааст ва дархостҳои DNS низ бояд тавассути VPN гузаранд. Ин барои он зарур аст, ки провайдер барои бастани боздошти DNS истифода набарад.
  • Ҳангоми кушодани сайт, муштарӣ дархости DNS-ро мефиристад, ба монанди "IP-и xxx.org кадомҳоянд"
  • Бекор xxx.org -ро ҳал мекунад (ё онро аз кэш мегирад) ва ба муштарӣ посух мефиристад "xxx.org чунин ва чунин IP дорад" ва онро дар баробари DNSTap такрор мекунад.
  • dnstap-bgp ин адресхоро дар Парранда тавассути BGP, агар домен дар рӯйхати басташуда бошад
  • Парранда масир ба ин IP-ҳо бо таблиғ мекунад next-hop self роутер муштарӣ
  • Бастаҳои минбаъда аз муштарӣ ба ин IP-ҳо тавассути нақб мегузаранд

Дар сервер, барои масирҳо ба сайтҳои масдудшуда, ман ҷадвали алоҳидаи дохили BIRD-ро истифода мебарам ва он ба ҳеҷ ваҷҳ бо OS бурида намешавад.

Ин схема як нуқсон дорад: бастаи аввалини SYN аз муштарӣ, эҳтимол дорад, барои тарк кардани провайдери ватанӣ вақт пайдо кунад. маршрут фавран эълон карда намешавад. Ва дар ин ҷо имконоти имконпазир вобаста ба он, ки провайдер блокро чӣ гуна мекунад. Агар ӯ танҳо трафикро тарк кунад, пас ҳеҷ мушкиле нест. Ва агар вай онро ба ягон DPI равона кунад, пас (аз ҷиҳати назариявӣ) эффектҳои махсус имконпазиранд.

Инчунин мумкин аст, ки муштариён мӯъҷизаҳои DNS TTL-ро эҳтиром накунанд, ки ин метавонад боиси истифодаи мизоҷ ба ҷои дархости Unbound аз кэши пӯсидаи худ истифода барад.

Дар амал, на якум ва на дуюм барои ман мушкилот наоварданд, аммо масофаи шумо метавонад фарқ кунад.

Танзими сервер

Барои осонии ғелонда, ман навиштам нақш барои Ansible. Он метавонад ҳам серверҳо ва ҳам мизоҷонро дар асоси Linux танзим кунад (барои тақсимоти ба деби асосёфта тарҳрезӣ шудааст). Ҳама танзимотҳо хеле возеҳанд ва насб карда шудаанд inventory.yml. Ин нақш аз китоби калони бозии ман бурида шудааст, бинобар ин он метавонад хатогиҳо дошта бошад - дархостҳоро кашед хуш омадед 🙂

Биёед ба ҷузъҳои асосӣ гузарем.

BGP

Иҷрои ду демонҳои BGP дар як ҳост мушкилоти асосӣ дорад: BIRD намехоҳад, ки BGP-ро бо ҳост (ё ягон интерфейси маҳаллӣ) насб кунад. Умуман аз калима. Гугл ва хондани феҳристҳои почтаи электронӣ кӯмак накарданд, онҳо мегӯянд, ки ин аз рӯи тарҳ аст. Шояд ягон роҳе ҳаст, аммо ман онро наёфтам.

Шумо метавонед як демони дигари BGP-ро санҷед, аммо ба ман BIRD маъқул аст ва он аз ҷониби ман дар ҳама ҷо истифода мешавад, ман намехоҳам объектҳо тавлид кунам.

Аз ин рӯ, ман dnstap-bgp-ро дар дохили фазои номи шабака, ки ба реша тавассути интерфейси veth пайваст аст, пинҳон кардам: он ба қубур монанд аст, ки нӯгҳои он дар фазои номҳои гуногун мечаспад. Дар ҳар яке аз ин ақсо, мо суроғаҳои IP-и хусусии p2p овезон мекунем, ки аз доираи ҳост берун намераванд, бинобар ин онҳо ҳама чиз буда метавонанд. Ин ҳамон механизмест, ки барои дастрасӣ ба равандҳои дохили он истифода мешавад ҳама дӯст медоранд Docker ва дигар контейнерҳо.

Барои ин навишта шудааст скрипт ва функсияи дар боло тавсифшуда барои кашола кардани худ аз рӯи мӯй ба фазои номҳои дигар ба dnstap-bgp илова карда шуд. Аз ин сабаб, он бояд ҳамчун реша иҷро карда шавад ё ба дуӣ CAP_SYS_ADMIN тавассути фармони setcap дода шавад.

Намунаи скрипт барои эҷоди фазои ном

#!/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 бо профили 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. Дар илова накунед и ҷамъбаст накунед шумо метавонед ба IP ва шабакаҳо бигӯед, ки гузаред ё ҷамъбаст накунед. ба ман лозим буд. зершабакаи VPS-и ман дар рӯйхати блокҳо буд 🙂

Аҷиб дар он аст, ки API RosKomSvoboda дархостҳоро бо агенти корбари пешфарзи Python блок мекунад. Чунин ба назар мерасад, ки скрипт-кудак онро гирифтааст. Аз ин рӯ, мо онро ба 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

Онҳо бе андешаи зиёд навишта шудаанд, бинобар ин, агар шумо чизеро бинед, ки беҳтар карда мешавад - ба он равед.

Танзимоти муштарӣ

Дар ин ҷо ман барои роутерҳои 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;
}

Ҳамин тариқ, мо масирҳои аз 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 ва CDN-ҳои он.

Ва ин ба он оварда мерасонад, ки ҳама видеоҳо тавассути VPN мегузарад, ки метавонад тамоми каналро маҳкам кунад. Шояд тартиб додани рӯйхати доменҳои маъмули истисноҳо, ки дар айни замон RKN-ро маҳкам мекунанд, бамаврид аст, ки рӯдаҳо бориканд. Ва ҳангоми таҳлил онҳоро гузаред.

хулоса

Усули тавсифшуда ба шумо имкон медиҳад, ки қариб ҳама блокҳоеро, ки провайдерҳо ҳоло амалӣ мекунанд, канорагирӣ кунед.

Умуман, dnstap-bgp метавонад барои ҳама гуна мақсадҳои дигаре истифода шавад, ки дар он ҷо баъзе сатҳи назорати трафик дар асоси номи домен лозим аст. Танҳо дар хотир доред, ки дар замони мо ҳазорон сайтҳо метавонанд дар як суроғаи IP овезон шаванд (масалан, дар паси баъзе Cloudflare), аз ин рӯ ин усул дақиқии хеле паст дорад.

Аммо барои эҳтиёҷоти гузариши қулфҳо, ин кофӣ аст.

Иловаҳо, таҳрирҳо, дархостҳо - хуш омадед!

Манбаъ: will.com

Илова Эзоҳ