TÄma ir diezgan sagrauta, es zinu. PiemÄram, ir lieliska raksts, bet tur tiek apskatÄ«ta tikai bloÄ·ÄÅ”anas saraksta IP daļa. MÄs pievienosim arÄ« domÄnus.
SakarÄ ar to, ka tiesas un RKN bloÄ·Ä visu pa labi un pa kreisi, un pakalpojumu sniedzÄji cenÅ”as nepakļauties Revizorro noteiktajÄm soda naudÄm, ar to saistÄ«tie zaudÄjumi no bloÄ·ÄÅ”anas ir diezgan lieli. Un starp "likumÄ«gi" bloÄ·ÄtajÄm vietnÄm ir daudz noderÄ«gu (sveiki, rutracker)
Es dzÄ«voju Ärpus RKN jurisdikcijas, bet mani vecÄki, radi un draugi palika mÄjÄs. TÄpÄc tika nolemts izdomÄt vienkÄrÅ”u veidu, kÄ cilvÄkiem, kas ir tÄlu no IT, apiet bloÄ·ÄÅ”anu, vÄlams vispÄr bez viÅu lÄ«dzdalÄ«bas.
Å ajÄ piezÄ«mÄ es neaprakstÄ«Å”u tÄ«kla pamata lietas pa soļiem, bet aprakstÄ«Å”u vispÄrÄ«gos principus, kÄ Å”o shÄmu var ieviest. TÄpÄc zinÄÅ”anas par to, kÄ tÄ«kls darbojas kopumÄ un jo Ä«paÅ”i Linux, ir obligÄtas.
SlÄdzeÅu veidi
Vispirms atsvaidzinÄsim atmiÅu par to, kas tiek bloÄ·Äts.
No RKN izlÄdÄtajÄ XML ir vairÄki bloÄ·ÄÅ”anas veidi:
IP
DomÄna vÄrds
URL
VienkÄrŔības labad mÄs tos samazinÄsim lÄ«dz diviem: IP un domÄns, un mÄs vienkÄrÅ”i izÅemsim domÄnu no bloÄ·ÄÅ”anas, izmantojot URL (precÄ«zÄk, viÅi to jau ir izdarÄ«juÅ”i mÅ«su vietÄ).
labi cilvÄki no Roskomsvoboda sapratu brÄ«niŔķīgu API, caur kuru mÄs varam iegÅ«t nepiecieÅ”amo:
Lai to izdarÄ«tu, mums ir nepiecieÅ”ams neliels Ärzemju VPS, vÄlams ar neierobežotu trafiku - tÄdu ir daudz par 3-5 dolÄriem. JÄÅem tuvÄjÄs ÄrzemÄs, lai ping nebÅ«tu ļoti liels, bet atkal jÄÅem vÄrÄ, ka internets un Ä£eogrÄfija ne vienmÄr sakrÄ«t. Un tÄ kÄ nav SLA par 5 dolÄriem, labÄk ir Åemt 2+ gabalus no dažÄdiem pakalpojumu sniedzÄjiem, lai nodroÅ”inÄtu kļūdu toleranci.
TÄlÄk mums ir jÄiestata Å”ifrÄts tunelis no klienta marÅ”rutÄtÄja uz VPS. Es izmantoju Wireguard kÄ visÄtrÄk un vienkÄrÅ”Äk iestatÄmo. Man ir arÄ« klientu marÅ”rutÄtÄji, kuru pamatÄ ir Linux (APU2 vai kaut kas OpenWRT). Dažu Mikrotik / Cisco gadÄ«jumÄ varat izmantot tajos pieejamos protokolus, piemÄram, OpenVPN un GRE-over-IPSEC.
InteresÄjoÅ”Äs satiksmes identificÄÅ”ana un novirzÄ«Å”ana
JÅ«s, protams, varat izslÄgt visu interneta trafiku caur ÄrvalstÄ«m. Bet, visticamÄk, no tÄ Ä¼oti cietÄ«s darba Ätrums ar vietÄjo saturu. TurklÄt VPS joslas platuma prasÄ«bas bÅ«s daudz augstÄkas.
TÄpÄc mums bÅ«s kaut kÄdÄ veidÄ jÄpieŔķir satiksme bloÄ·ÄtajÄm vietnÄm un selektÄ«vi jÄnovirza uz tuneli. Pat ja daļa "papildu" satiksmes tur nonÄk, tas joprojÄm ir daudz labÄk, nekÄ braukt visu caur tuneli.
Lai pÄrvaldÄ«tu trafiku, mÄs izmantosim BGP protokolu un izziÅosim marÅ”rutus uz nepiecieÅ”amajiem tÄ«kliem no mÅ«su VPS klientiem. Å emsim BIRD kÄ vienu no funkcionÄlÄkajiem un ÄrtÄkajiem BGP dÄmoniem.
IP
Izmantojot IP bloÄ·ÄÅ”anu, viss ir skaidrs: mÄs vienkÄrÅ”i paziÅojam par visiem bloÄ·Ätajiem IP, izmantojot VPS. ProblÄma ir tÄ, ka sarakstÄ, ko atgriež API, ir aptuveni 600 tÅ«kstoÅ”i apakÅ”tÄ«klu, un lielÄkÄ daļa no tiem ir /32 saimniekdatori. Å is marÅ”rutu skaits var sajaukt vÄjus klientu marÅ”rutÄtÄjus.
TÄpÄc, apstrÄdÄjot sarakstu, tika nolemts apkopot lÄ«dz tÄ«klam / 24, ja tajÄ ir 2 vai vairÄk saimniekdatoru. LÄ«dz ar to marÅ”rutu skaits tika samazinÄts lÄ«dz ~100 tÅ«kst. Skripts tam sekos.
Domains
Tas ir sarežģītÄk, un ir vairÄki veidi. PiemÄram, jÅ«s varat instalÄt caurspÄ«dÄ«gu Squid katrÄ klienta marÅ”rutÄtÄjÄ un veikt HTTP pÄrtverÅ”anu un ieskatÄ«ties TLS rokasspiedienÄ, lai pirmajÄ gadÄ«jumÄ iegÅ«tu pieprasÄ«to URL un otrajÄ gadÄ«jumÄ domÄnu no SNI.
Bet visu veidu jaunizveidoto TLS1.3 + eSNI dÄļ HTTPS analÄ«ze katru dienu kļūst arvien mazÄk reÄla. JÄ, un infrastruktÅ«ra klienta pusÄ kļūst sarežģītÄka ā bÅ«s jÄizmanto vismaz OpenWRT.
TÄpÄc es nolÄmu pÄrtvert atbildes uz DNS vaicÄjumiem. ArÄ« Å”eit jebkurÅ” DNS-over-TLS / HTTPS sÄk virzÄ«ties virs jÅ«su galvas, taÄu mÄs varam (pagaidÄm) kontrolÄt Å”o klienta daļu - vai nu to atspÄjot, vai izmantot savu serveri DoT / DoH.
KÄ pÄrtvert DNS?
ArÄ« Å”eit var bÅ«t vairÄkas pieejas.
DNS trafika pÄrtverÅ”ana, izmantojot PCAP vai NFLOG
Abas Ŕīs pÄrtverÅ”anas metodes ir ieviestas utilÄ«tprogrammÄ sidmat. Bet tas nav atbalstÄ«ts ilgu laiku un funkcionalitÄte ir ļoti primitÄ«va, tÄpÄc jums joprojÄm ir jÄraksta uzkabe.
DNS servera žurnÄlu analÄ«ze
DiemžÄl man zinÄmie rekursori nespÄj reÄ£istrÄt atbildes, bet tikai pieprasÄ«jumus. PrincipÄ tas ir loÄ£iski, jo atŔķirÄ«bÄ no pieprasÄ«jumiem atbildÄm ir sarežģīta struktÅ«ra un ir grÅ«ti tÄs uzrakstÄ«t teksta formÄ.
DNSTap
Par laimi, daudzi no viÅiem jau atbalsta DNSTap Å”im nolÅ«kam.
Kas ir DNSTap?
Tas ir klienta-servera protokols, kura pamatÄ ir protokolu buferi un kadru straumes, lai pÄrsÅ«tÄ«tu no DNS servera uz strukturÄtu DNS vaicÄjumu un atbilžu savÄcÄju. BÅ«tÄ«bÄ DNS serveris tÄ«klÄ pÄrsÅ«ta vaicÄjumu un atbilžu metadatus (ziÅojuma veidu, klienta/servera IP utt.), kÄ arÄ« pilnÄ«gus DNS ziÅojumus (binÄrajÄ) formÄ, kÄdÄ tas darbojas ar tiem.
Ir svarÄ«gi saprast, ka DNSTap paradigmÄ DNS serveris darbojas kÄ klients un savÄcÄjs darbojas kÄ serveris. Tas nozÄ«mÄ, ka DNS serveris izveido savienojumu ar kolektoru, nevis otrÄdi.
MÅ«sdienÄs DNSTap tiek atbalstÄ«ts visos populÄrajos DNS serveros. Bet, piemÄram, BIND daudzos izplatÄ«jumos (piemÄram, Ubuntu LTS) kÄdu iemeslu dÄļ bieži tiek veidots bez tÄ atbalsta. TÄpÄc neuzbÄzÄ«simies ar atkÄrtotu montÄžu, bet Åemsim vieglÄku un ÄtrÄku rekursoru - Bez saistÄ«Å”anas.
KÄ noÄ·ert DNSTap?
Ir dažinumurs CLI utilÄ«tas darbam ar DNSTap notikumu straumi, taÄu tÄs nav piemÄrotas mÅ«su problÄmas risinÄÅ”anai. TÄpÄc es nolÄmu izgudrot savu velosipÄdu, kas darÄ«s visu nepiecieÅ”amo: dnsap-bgp
Darba algoritms:
Palaižot, tas ielÄdÄ domÄnu sarakstu no teksta faila, apvÄrÅ” tos (habr.com -> com.habr), izslÄdz lauztÄs lÄ«nijas, dublikÄtus un apakÅ”domÄnus (t.i., ja sarakstÄ ir habr.com un www.habr.com, tas tiks ielÄdÄts tikai pirmais) un izveido prefiksu koku Ätrai meklÄÅ”anai Å”ajÄ sarakstÄ
Darbojoties kÄ DNSTap serveris, tas gaida savienojumu no DNS servera. PrincipÄ tas atbalsta gan UNIX, gan TCP ligzdas, bet man zinÄmie DNS serveri var izmantot tikai UNIX ligzdas
IenÄkoÅ”Äs DNSTap paketes vispirms tiek deserializÄtas Protobuf struktÅ«rÄ, un pÄc tam pats binÄrais DNS ziÅojums, kas atrodas vienÄ no Protobuf laukiem, tiek parsÄts DNS RR ierakstu lÄ«menÄ«.
Tiek pÄrbaudÄ«ts, vai pieprasÄ«tais resursdators (vai tÄ vecÄkais domÄns) ir ielÄdÄtajÄ sarakstÄ, ja nÄ, atbilde tiek ignorÄta
No atbildes tiek atlasÄ«ti tikai A/AAAA/CNAME RR, un no tiem tiek izvilktas atbilstoÅ”Äs IPv4/IPv6 adreses.
IP adreses tiek saglabÄtas keÅ”atmiÅÄ ar konfigurÄjamu TTL un tiek reklamÄtas visiem konfigurÄtajiem BGP partneriem
SaÅemot atbildi, kas norÄda uz jau keÅ”atmiÅÄ saglabÄtu IP, tÄ TTL tiek atjauninÄts
PÄc TTL termiÅa beigÄm ieraksts tiek noÅemts no keÅ”atmiÅas un no BGP paziÅojumiem
Papildu funkcionalitÄte:
SIGHUP atkÄrtoti izlasa domÄnu sarakstu
KeÅ”atmiÅas sinhronizÄÅ”ana ar citiem gadÄ«jumiem dnsap-bgp izmantojot HTTP/JSON
DublÄjiet keÅ”atmiÅu diskÄ (BoltDB datu bÄzÄ), lai pÄc restartÄÅ”anas atjaunotu tÄs saturu
Atbalsts pÄrslÄgÅ”anai uz citu tÄ«kla nosaukumvietu (kÄpÄc tas ir nepiecieÅ”ams, tiks aprakstÄ«ts tÄlÄk)
IPv6 atbalsts
Ierobežojumi:
IDN domÄni vÄl netiek atbalstÄ«ti
Daži BGP iestatījumi
Es savÄcu RPM un DEB paketes Ärtai uzstÄdÄ«Å”anai. JÄstrÄdÄ visÄs salÄ«dzinoÅ”i jaunÄkajÄs OS ar systemd. viÅiem nav nekÄdu atkarÄ«bu.
ShÄma
TÄtad, sÄksim montÄt visas sastÄvdaļas kopÄ. RezultÄtÄ mums vajadzÄtu iegÅ«t kaut ko lÄ«dzÄ«gu Å”ai tÄ«kla topoloÄ£ijai:
Darba loÄ£ika, manuprÄt, ir skaidra no diagrammas:
Klientam mÅ«su serveris ir konfigurÄts kÄ DNS, un arÄ« DNS vaicÄjumiem ir jÄiet pÄri VPN. Tas ir nepiecieÅ”ams, lai pakalpojumu sniedzÄjs nevarÄtu izmantot DNS pÄrtverÅ”anu bloÄ·ÄÅ”anai.
Atverot vietni, klients nosÅ«ta DNS vaicÄjumu, piemÄram, "kas ir xxx.org IP"
Nav saistÄ«bu atrisina xxx.org (vai paÅem to no keÅ”atmiÅas) un nosÅ«ta klientam atbildi āxxx.org ir tÄds un tÄds IPā, paralÄli dublÄjot to caur DNSTap
dnsap-bgp paziÅo Ŕīs adreses BIRD izmantojot BGP, ja domÄns ir bloÄ·Äto sarakstÄ
BIRD reklamÄ marÅ”rutu uz Ŕīm IP ar next-hop self klienta marÅ”rutÄtÄjs
TurpmÄkÄs paketes no klienta uz Ŕīm IP iet caur tuneli
ServerÄ« marÅ”rutiem uz bloÄ·ÄtÄm vietnÄm izmantoju atseviŔķu tabulu iekÅ”Ä BIRD un tÄ nekÄdÄ veidÄ nekrustojas ar OS.
Å ai shÄmai ir trÅ«kums: pirmajai SYN paketei no klienta, visticamÄk, bÅ«s laiks iziet caur vietÄjo pakalpojumu sniedzÄju. marÅ”ruts netiek paziÅots uzreiz. Un Å”eit ir iespÄjamas iespÄjas atkarÄ«bÄ no tÄ, kÄ pakalpojumu sniedzÄjs veic bloÄ·ÄÅ”anu. Ja viÅÅ” vienkÄrÅ”i samazina satiksmi, tad problÄmu nav. Un ja viÅÅ” to novirza uz kÄdu DPI, tad (teorÄtiski) ir iespÄjami specefekti.
IespÄjams arÄ«, ka klienti neievÄro DNS TTL brÄ«numus, kas var likt klientam izmantot dažus novecojuÅ”us ierakstus no tÄs sapuvuÅ”Äs keÅ”atmiÅas, nevis jautÄt Unbound.
PraksÄ ne pirmais, ne otrais man problÄmas nesagÄdÄja, bet jÅ«su nobraukums var atŔķirties.
Servera noskaÅoÅ”ana
Lai atvieglotu ripinÄÅ”anu, es uzrakstÄ«ju lomu Ansible. Tas var konfigurÄt gan serverus, gan klientus, pamatojoties uz Linux (paredzÄts uz deb balstÄ«tiem izplatÄ«jumiem). Visi iestatÄ«jumi ir diezgan skaidri un ir iestatÄ«ti inventÄrs.yml. Å Ä« loma ir izgriezta no manas lielÄs rokasgrÄmatas, tÄpÄc tajÄ var bÅ«t kļūdas. vilkÅ”anas pieprasÄ«jumi laipni lÅ«dzam š
ApskatÄ«sim galvenÄs sastÄvdaļas.
BGP
Divu BGP dÄmonu darbinÄÅ”anai vienÄ un tajÄ paÅ”Ä resursdatorÄ ir bÅ«tiska problÄma: BIRD nevÄlas iestatÄ«t BGP peering ar localhost (vai jebkuru vietÄjo saskarni). No vÄrda vispÄr. GooglÄÅ”ana un adresÄtu sarakstu lasÄ«Å”ana nepalÄ«dzÄja, viÅi apgalvo, ka tas ir izstrÄdÄts. VarbÅ«t ir kÄds veids, bet es to neatradu.
JÅ«s varat izmÄÄ£inÄt citu BGP dÄmonu, bet man patÄ«k BIRD, un es to izmantoju visur, es nevÄlos radÄ«t entÄ«tijas.
TÄpÄc es paslÄpu dnsap-bgp tÄ«kla nosaukumvietÄ, kas ir savienota ar sakni caur veth interfeisu: tÄ ir kÄ caurule, kuras gali izceļas dažÄdÄs nosaukumvietÄs. KatrÄ no Å”iem galiem mÄs piekarinÄm privÄtas p2p IP adreses, kas nepÄrsniedz resursdatoru, tÄpÄc tÄs var bÅ«t jebkas. Tas ir tas pats mehÄnisms, ko izmanto, lai piekļūtu iekÅ”Äjiem procesiem visu mÄ«lÄja Docker un citi konteineri.
Par to tika rakstÄ«ts skripts un dnsap-bgp tika pievienota jau iepriekÅ” aprakstÄ«tÄ funkcionalitÄte aiz mata vilkÅ”anai citÄ nosaukumvietÄ. Å Ä« iemesla dÄļ tas ir jÄpalaiž kÄ root vai jÄizdod binÄrajam failam CAP_SYS_ADMIN, izmantojot komandu setcap.
Skripta piemÄrs nosaukumvietas izveidei
#!/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
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
PÄc noklusÄjuma Ubuntu nesaistÄ«to binÄro failu ierobežo AppArmor profils, kas aizliedz tam izveidot savienojumu ar visa veida DNSTap ligzdÄm. Varat dzÄst Å”o profilu vai atspÄjot to:
Tas droÅ”i vien bÅ«tu jÄpievieno rokasgrÄmatai. IdeÄli, protams, izlabot profilu un izsniegt nepiecieÅ”amÄs tiesÄ«bas, bet man bija slinkums.
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
Sarakstu lejupielÄde un apstrÄde
Skripts IP adreÅ”u saraksta lejupielÄdei un apstrÄdei
Tas lejupielÄdÄ sarakstu, apkopo prefiksu pfx. Uz nepievienot Šø dont_summarize varat norÄdÄ«t IP un tÄ«klus, lai tie izlaistu vai neveic kopsavilkumu. Man to vajadzÄja. mana VPS apakÅ”tÄ«kls bija bloÄ·ÄÅ”anas sarakstÄ š
SmieklÄ«gÄkais ir tas, ka RosKomSvoboda API bloÄ·Ä pieprasÄ«jumus ar noklusÄjuma Python lietotÄja aÄ£entu. Å Ä·iet, ka skripts to saprata. TÄpÄc mainÄm uz Ognelis.
LÄ«dz Å”im tas darbojas tikai ar IPv4. IPv6 daļa ir neliela, taÄu to bÅ«s viegli salabot. Ja vien nav jÄizmanto arÄ« 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)
AtjauninÄmais skripts
Es to palaistu uz vainaga reizi dienÄ, varbÅ«t ir vÄrts to vilkt ik pÄc 4 stundÄm. Å”is, manuprÄt, ir atjaunoÅ”anas periods, ko RKN pieprasa no pakalpojumu sniedzÄjiem. TurklÄt tiem ir kÄda cita Ä«paÅ”i steidzama bloÄ·ÄÅ”ana, kas var notikt ÄtrÄk.
Veic Å”Ädas darbÄ«bas:
Palaiž pirmo skriptu un atjaunina marŔrutu sarakstu (rkn_routes.list) par PUTNU
PÄrlÄdÄt BIRD
Atjaunina un notÄ«ra dnsap-bgp domÄnu sarakstu
PÄrlÄdÄt dnsap-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
Tie tika rakstÄ«ti bez Ä«paÅ”as domÄÅ”anas, tÄpÄc, ja redzat kaut ko, ko var uzlabot - dodieties uz to.
Klienta iestatīŔana
Å eit es sniegÅ”u piemÄrus Linux marÅ”rutÄtÄjiem, bet Mikrotik / Cisco gadÄ«jumÄ tam vajadzÄtu bÅ«t vÄl vienkÄrÅ”Äkam.
PirmkÄrt, mÄs iestatÄ«jÄm BIRD:
putns.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;
}
TÄdÄjÄdi mÄs sinhronizÄsim no BGP saÅemtos marÅ”rutus ar kodola marÅ”rutÄÅ”anas tabulu ar numuru 222.
PÄc tam pietiek palÅ«gt kodolam apskatÄ«t Å”o plÄksni, pirms skatÄties uz noklusÄjuma:
# 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
Viss, atliek marÅ”rutÄtÄjÄ konfigurÄt DHCP, lai izplatÄ«tu servera tuneļa IP adresi kÄ DNS, un shÄma ir gatava.
Ierobežojumi
Izmantojot paÅ”reizÄjo domÄnu saraksta Ä£enerÄÅ”anas un apstrÄdes algoritmu, tas cita starpÄ ietver youtube.com un tÄ CDN.
Un tas noved pie tÄ, ka visi videoklipi tiks pÄrraidÄ«ti caur VPN, kas var aizsprostot visu kanÄlu. VarbÅ«t ir vÄrts sastÄdÄ«t sarakstu ar populÄriem domÄniem-izÅÄmumiem, kas pagaidÄm bloÄ·Ä RKN, iekÅ”as ir plÄnas. Un izlaidiet tos parsÄÅ”anas laikÄ.
SecinÄjums
AprakstÄ«tÄ metode ļauj apiet gandrÄ«z jebkuru bloÄ·ÄÅ”anu, ko pakalpojumu sniedzÄji paÅ”laik Ä«steno.
PrincipÄ, dnsap-bgp var izmantot jebkuram citam mÄrÄ·im, kur ir nepiecieÅ”ama noteikta lÄ«meÅa trafika kontrole, pamatojoties uz domÄna nosaukumu. VienkÄrÅ”i paturiet prÄtÄ, ka mÅ«su laikÄ tÅ«kstoÅ” vietÅu var karÄties vienÄ IP adresÄ (piemÄram, aiz kÄda Cloudflare), tÄpÄc Å”ai metodei ir diezgan zema precizitÄte.
Bet slÄdzeÅu apieÅ”anas vajadzÄ«bÄm ar to pilnÄ«gi pietiek.