Ka gudub ILV oo ku xannibaya DNSTap iyo BGP

Ka gudub ILV oo ku xannibaya DNSTap iyo BGP

Mawduuca si qurux badan ayaa loo garaacay, waan ogahay. Tusaale ahaan, waxaa jira wax weyn maqaal, laakiin kaliya qaybta IP ee liiska xannibaadda ayaa halkaas lagu qaddariyaa. Waxaan sidoo kale ku dari doonaa domains.

Sababtoo ah xaqiiqda ah in maxkamadaha iyo RKN ay xannibaan wax kasta oo midig iyo bidix ah, iyo bixiyeyaasha ayaa isku dayaya in aysan ku dhicin ganaaxyada ay soo saartay Revizorro, khasaaraha la xidhiidha xannibaadda ayaa aad u weyn. Oo ka mid ah goobaha "sharciga ah" ee la xiray waxaa jira kuwo badan oo faa'iido leh (hello, rutracker)

Waxaan ku noolahay meel ka baxsan xukunka RKN, laakiin waalidkay, qaraabada iyo asxaabta ayaa ku hadhay guriga. Markaa waxaa la go'aamiyay in la keeno hab sahlan oo dadka ka fog IT-ga ay uga gudbi karaan xannibaadda, iyada oo la doorbidayo iyada oo aan haba yaraatee ka qaybgelin.

Qoraalkan, kuma tilmaami doono waxyaabaha aasaasiga ah ee shabakada talaabooyinka, laakiin waxaan ku tilmaami doonaa mabaadi'da guud ee sida qorshahan loo hirgelin karo. Markaa aqoonta sida shabakadu u shaqeyso guud ahaan iyo gaar ahaan Linux waa qasab.

Noocyada qufulka

Marka hore, aan dib u cusboonaysiinno xusuusta wixii la xannibay.

Waxaa jira dhowr nooc oo quful ah oo ku jira XML-ka laga soo dejiyay RKN:

  • IP
  • Xayndaab
  • URL

Fududeynta, waxaan u yareyn doonaa laba: IP iyo domain, waxaanan si fudud uga soo saari doonaa domainka xannibaadda URL (si sax ah, waxay horeba noo sameeyeen).

dadka wanaagsan ka Roskomsvoboda ogaaday cajiib ah API, kaas oo aan ka heli karno waxa aan u baahanahay:

Gelitaanka goobaha la xannibay

Si tan loo sameeyo, waxaan u baahanahay xoogaa yar oo VPS shisheeye ah, oo doorbidaya taraafikada aan xadidneyn - waxaa jira qaar badan oo kuwan ka mid ah 3-5 bucks. Waxaad u baahan tahay inaad ku qaadato dibadda u dhow si ping-ku aanu aad u weynayn, laakiin mar labaad, xisaabta ku dar in internetka iyo joqraafiyada aysan had iyo jeer isku mid ahayn. Oo maadaama aysan jirin SLA 5 doolar, waxaa fiican inaad ka qaadato 2+ gogo ' bixiyeyaasha kala duwan si loogu dulqaado khaladaadka.

Marka xigta, waxaan u baahanahay inaan sameyno tunnel sir ah oo ka imanaya router macmiilka ilaa VPS. Waxaan u isticmaalaa Wireguard sida ugu dhaqsaha badan uguna fudud si loo dejiyo. Waxa kale oo aan haystaa router macmiil ah oo ku salaysan Linux (APU2 ama wax ku jira OpenWRT). Marka laga hadlayo qaar ka mid ah Mikrotik / Cisco, waxaad isticmaali kartaa borotokoolka laga heli karo iyaga sida OpenVPN iyo GRE-over-IPSEC.

Aqoonsiga iyo dib u habeynta gaadiidka xiisaha

Dabcan, waad dami kartaa dhammaan taraafikada intarneedka dhex mara wadamada shisheeye. Laakiin, waxay u badan tahay, xawaaraha ku shaqeynta macluumaadka maxalliga ah ayaa si weyn u dhibtoon doona tan. Intaa waxaa dheer, shuruudaha bandwidth ee VPS ayaa noqon doona mid aad u sarreeya.

Sidaa darteed, waxaan u baahan doonaa inaan si uun u qoondeyno taraafikada goobaha xanniban oo aan si xushmad leh u hageyno tunnelka. Xitaa haddii qaar ka mid ah taraafikada "dheeraad ah" ay halkaas tagaan, weli aad bay uga wanaagsan tahay in wax walba lagu wado tunnelka.

Si loo maareeyo taraafikada, waxaanu isticmaali doonaa hab-maamuuska BGP waxaanan ku dhawaaqi doonaa dariiqyada loo maro shabakadaha lagama maarmaanka ah ee VPS ilaa macaamiisha. Aan u qaadanno Shimbiraha mid ka mid ah Daemons-ka BGP-ga ugu shaqeeya uguna habboon.

IP

Iyadoo la xannibay IP-ga, wax walbaa way cad yihiin: waxaan si fudud ugu dhawaaqeynaa dhammaan IP-yada la xiray ee VPS. Dhibaatadu waxay tahay in ay jiraan ilaa 600 kun oo subnets ah oo ku jira liiska API-ku soo laabtay, badidoodna waa /32 martigeliyayaal. Tiradan dariiqyada ah waxay jahawareerin kartaa macaamiishooda daciifka ah.

Sidaa darteed, marka la falanqeynayo liiska, waxaa la go'aamiyay in la soo koobo shabakadda / 24 haddii ay leedahay 2 ama in ka badan. Sidaa darteed, tirada waddooyinka ayaa la dhimay ~ 100 kun. Qoraalka tan ayaa raaci doona.

Domains

Way ka sii adag tahay waxaana jira siyaabo dhowr ah. Tusaale ahaan, waxaad ku rakibi kartaa Squid hufan router kasta oo macmiilka ah oo samee dhex galka HTTP halkaas oo aad u fiirsatid gacan qaadka TLS si aad u hesho URL la codsaday kiiska koowaad iyo domainka SNI ee labaad.

Laakiin sababtoo ah dhammaan noocyada cusub ee TLS1.3 + eSNI, falanqaynta HTTPS ayaa noqonaysa mid sii yaraanaysa oo dhab ah maalin kasta. Haa, iyo kaabayaasha dhinaca macmiilku way sii adkaanayaan - waa inaad isticmaashaa ugu yaraan OpenWRT.

Sidaa darteed, waxaan go'aansaday inaan qaado dariiqa ka-hortagga jawaabaha su'aalaha DNS. Halkan, sidoo kale, wax kasta oo DNS-over-TLS / HTTPS ah ayaa bilaabaya inay ka dul wareegaan madaxaaga, laakiin waxaan awoodnaa (hadda) qaybtan ku xakameyn karno macmiilka - ama jooji ama u isticmaal server-kaaga DoT / DoH.

Sida loo joojiyo DNS?

Halkan, sidoo kale, waxaa laga yaabaa inay jiraan dhowr habab.

  • Dhexgalka taraafikada DNS ee PCAP ama NFLOG
    Labadan hab ee is-dhex-galka waxaa lagu hirgeliyaa utility sidmat. Laakiin lama taageerin muddo dheer, shaqeyntuna waa mid aad u asal ah, sidaas darteed waxaad weli u baahan tahay inaad u qorto suunka.
  • Falanqaynta diiwaannada server-ka DNS
    Nasiib darro, dib-u-soo-celinta aan ogahay ma awoodaan inay galaan jawaabaha, laakiin kaliya codsiyo. Mabda 'ahaan, tani waa macquul, maadaama, ka duwan codsiyada, jawaabuhu waxay leeyihiin qaab-dhismeed adag oo ay adagtahay in lagu qoro qaab qoraal ah.
  • DNSTap
    Nasiib wanaag, qaar badan oo iyaga ka mid ah ayaa horeba u taageersan DNSTap ujeedadan.

Waa maxay DNSTap?

Ka gudub ILV oo ku xannibaya DNSTap iyo BGP

Waa hab-maamuuska macmiilka-server ee ku salaysan Protocol Buffers iyo Frame Streams ee ka wareejinta server-ka DNS ilaa ururiyaha weydiimaha iyo jawaabaha DNS habaysan. Asal ahaan, server-ka DNS wuxuu gudbiyaa weydiinta iyo jawaabta xogta badan (nooca fariinta, macmiilka/server IP, iwm.) oo lagu daray dhammayn fariimaha DNS ee foomka (binary) kaas oo uu kula shaqeeyo shabakada.

Waa muhiim in la fahmo in qaabka DNSTap, server-ka DNS uu u dhaqmo macmiil ahaan iyo ururiyaha u dhaqmo sidii server. Taasi waa, server-ka DNS wuxuu ku xiraa aruuriyaha, oo ma aha beddelka.

Maanta DNSTap waxaa lagu taageeraa dhammaan adeegayaasha DNS ee caanka ah. Laakiin, tusaale ahaan, BIND qaybo badan oo qaybin (sida Ubuntu LTS) ayaa badanaa loo dhisay sabab qaar ka mid ah iyada oo aan la taageerin. Markaa yeynaan isku mashquulin dib-u-ururinta, laakiin qaado dib-u-eegis fudud oo degdeg ah - Unbound.

Sidee loo qabtaa DNSTap?

Waxaa jira qaar xaddiga Adeegyada CLI ee la shaqaynta qulqulka dhacdooyinka DNSTap, laakiin kuma habboona xallinta mushkiladayada. Sidaa darteed, waxaan go'aansaday in aan hindiso baaskiilka aniga oo samayn doona wax kasta oo lagama maarmaan ah: dnstap-bgp

Algorithm shaqada:

  • Marka la bilaabayo, waxa ay ka soo rarisaa liis domains gayl qoraal ah, rogtay iyaga (habr.com -> com.habr), waxa ka reebaysa khadadka jaban, nuqul ka mid ah iyo subdomains (yacni haddii liisku ka kooban yahay habr.com iyo www.habr.com, waxaa la rari doonaa kan ugu horreeya oo keliya) oo waxay dhisaysaa horgale geed si dhakhso leh looga baadho liiskan
  • U shaqaynta sidii server-ka DNSTap, waxay sugaysaa xidhiidhka ka imanaya server-ka DNS. Mabda 'ahaan, waxay taageertaa saldhigyada UNIX iyo TCP labadaba, laakiin server-yada DNS ee aan ogahay waxay isticmaali karaan oo keliya UNIX.
  • Xirmooyinka DNSTap ee soo galaya ayaa marka hore laga dhigayaa qaab-dhismeedka Protobuf, ka dibna farriinta DNS ee binary lafteeda, oo ku taal mid ka mid ah goobaha Protobuf, ayaa loo kala saaray heerka diiwaannada DNS RR.
  • Waa la hubiyay in martigeliyaha la codsaday (ama goobta waalidka) uu ku jiro liiska la raray, haddii kale, jawaabta waa la iska indhatiray.
  • Kaliya A/AAAA/CNAME RRs ayaa laga doortay jawaabta waxaana laga soo saaray cinwaanada IPV4/IPv6 ee u dhigma iyaga
  • Ciwaanka IP-ga waxa lagu kaydiyay TTL oo la habeyn karo waxaana lagu xayaysiiyaa dhammaan asxaabta BGP ee la habeeyey.
  • Marka la helo jawaabta tilmaamaysa IP hore loo kaydiyay, TTL-keeda waa la cusboonaysiiyay
  • Kadib markuu TTL dhaco, gelida waxaa laga saarayaa kaydka iyo ogeysiisyada BGP

Waxqabad dheeri ah:

  • Dib u akhrinta liiska domains ee SIGUP
  • Ku haynta kaydka la mid ah xaaladaha kale dnstap-bgp iyada oo loo marayo HTTP/JSON
  • Ku koobbi kaydka diskka (ku jira kaydka xogta BoltDB) si loo soo celiyo waxa ku jira ka dib marka dib loo bilaabo
  • Taageerada u beddelashada meel magac shabakadeed oo kale (sababta tan loogu baahan yahay ayaa hoos lagu sharxi doonaa)
  • Taageerada IPV6

Xaddidaadyada:

  • Goobaha IDN weli lama taageero
  • Habayn yar oo BGP ah

Waan soo ururiyay RPM iyo DEB baakadaha si fudud loo rakibo. Waa in uu ka shaqeeyaa dhammaan OS-yadii u dambeeyay ee leh systemd. ma haystaan ​​wax ku tiirsan.

Qorshaha

Haddaba, aynu bilowno isu geynta dhammaan qaybaha. Natiijo ahaan, waa inaan helnaa wax la mid ah shabakadda topology-ga:
Ka gudub ILV oo ku xannibaya DNSTap iyo BGP

Macnaha shaqada, waxaan filayaa, inay ka caddahay jaantuska:

  • Macmiilku waxa uu leeyahay server-kayaga loo habeeyey sida DNS, iyo su'aalaha DNS waa in ay sidoo kale ka gudbaan VPN. Tani waa lagama maarmaan si bixiyaha uusan u isticmaali karin dhexgelinta DNS si uu u xannibo.
  • Marka la furayo goobta, macmiilku waxa uu soo diraa su'aal DNS ah sida "waa maxay IP-yada xxx.org"
  • furan xaliya xxx.org (ama ka soo qaadaa khasnadda) oo u soo dirtaa jawaab macmiilka "xxx.org waxa uu leeyahay IP-ga oo kale", isaga oo isku barbar dhigaya DNSTap
  • dnstap-bgp ku dhawaaqay ciwaanadan in BIRD iyada oo loo sii marayo BGP haddii domainku ku jiro liiska la xannibay
  • BIRD wuxuu ku xayeysiiyaa dariiqa loo maro IP-yadaan next-hop self router macmiilka
  • Xirmooyinka xiga ee macmiilka ilaa kuwan IP-yada waxay maraan tunnel-ka

Seerfarka, waddooyinka loo maro goobaha la xiray, waxaan isticmaalaa miis gaar ah gudaha BIRD mana kala gooyo OS sinaba.

Nidaamkani wuxuu leeyahay dib u dhac: baakadda SYN ee ugu horreysa ee macmiilka, waxay u badan tahay, waxay heli doontaa wakhti ay kaga baxdo bixiyaha guriga. dariiqa isla markiiba lama shaacin. Oo halkan waxaa suurtagal ah doorashooyinku iyadoo ku xiran hadba sida adeeg bixiyaha u sameeyo xannibaadda. Haddii uu kaliya hoos u dhigo taraafikada, markaa dhib ma leh. Oo haddii uu u wareejiyo qaar ka mid ah DPI, markaa (aragti ahaan) saameyn gaar ah ayaa suurtagal ah.

Waxa kale oo suurtogal ah in macaamiishu aanay ixtiraamin mucjisooyinka TTL ee DNS, taas oo keeni karta in macmiilku isticmaalo qaar ka mid ah qoraallada duugoobay ee khasnadiisa qudhuntay halkii uu weydiin lahaa Unbound.

Ficil ahaan, kan koowaad iyo kan labaad midna dhib iguma keenin, laakiin masaafadaadu way kala duwanaan kartaa.

Dajinta Server-ka

Si ay u fududaato duubista, waxaan qoray doorka Aansible. Waxay habayn kartaa labada server iyo macaamiisha ku salaysan Linux (loogu talagalay qaybinta ku salaysan deb). Dhammaan goobaha aad bay u cad yihiin oo waa la dajiyay alaab.yml. Doorkan waxa laga gooyay buug-ciyaareedkayga weyn, markaa waxa laga yaabaa inay ku jiraan khaladaad - codsiyada jooji soo dhawoow πŸ™‚

Aynu dhex marno qaybaha ugu muhiimsan.

BGP

Ku socodsiinta laba daem oo BGP isku mid ah waxay leedahay dhibaato aasaasi ah: BIRD ma rabto inay dejiso BGP peering oo leh localhost (ama interface kasta oo maxalli ah). Laga soo bilaabo ereyga gabi ahaanba. Googling iyo akhrinta liisaska-mail-ku waxba ma tarin, waxay ku andacoonayaan in tani ay tahay naqshad. Waxaa laga yaabaa inay jirto waddo, laakiin ma aanan helin.

Waxaad isku dayi kartaa daemon kale oo BGP ah, laakiin waan jeclahay BIRD waxaana meel walba isticmaala aniga, ma rabo inaan soo saaro hay'ado.

Sidaa darteed, waxaan ku qariyay dnstap-bgp gudaha magaca shabakada, kaas oo ku xiran xididka iyada oo loo marayo interface veth: waa sida tuubada, cidhifyada kuwaas oo ku dheggan magacyo kala duwan. Mid kasta oo ka mid ah darafyadan, waxaanu sudhnaa cinwaanada IP-ga ee p2p ee gaarka ah oo aan dhaafin martigeliyaha, si ay u noqdaan wax kasta. Tani waa isla habka loo isticmaalo gelitaanka hababka gudaha la wada jecel yahay Docker iyo weel kale.

Taas aawadeed ayaa loo qoray qoraal iyo shaqeynta horeyba kor loogu sharaxay ee ku jiiday naftaada timaha magac kale ayaa lagu daray dnstap-bgp. Sababtan awgeed, waa in loo maamulaa sidii xidid ama loo sii daayaa CAP_SYS_ADMIN binary iyadoo la sii marinayo amarka setcap.

Tusaalaha qoraalka ah ee samaynta meel magac

#!/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",
]

shimbir.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.liiska

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

Sida caadiga ah, gudaha Ubuntu, binary-ga Unbound waxaa xayiray astaanta AppArmor, kaas oo ka mamnuucaya inay ku xidhmaan dhammaan noocyada saldhigyada DNSTap. Waxaad tirtiri kartaa profile-kan, ama dami kartaa:

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

Tani waxay u badan tahay in lagu daro buugga-ciyaaraha. Way ku habboon tahay, dabcan, in la saxo profile-ka oo la soo saaro xuquuqda lagama maarmaanka ah, laakiin waxaan ahaa caajis.

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

Soo dejinta iyo habaynta liisaska

Qoraalka loogu talagalay soo dejinta iyo habaynta liiska cinwaannada IP-ga
Waxay soo dejisaa liiska, waxay soo koobtaa horgalayaasha pfx. The haku darin ΠΈ ha_soo koobin Waxaad u sheegi kartaa IP-yada iyo shabakadaha inay ka boodaan ama aysan soo koobin. waan u baahday subnet-ka VPS-kaygu wuxuu ku jiray liiska xannibaadda πŸ™‚

Waxyaabaha qosolka leh ayaa ah in RosKomSvoboda API uu xannibo codsiyada wakiilka isticmaalaha Python ee caadiga ah. Waxay u egtahay in script-kiddy helay. Sidaa darteed, waxaan u beddelnaa Ognelis.

Ilaa hadda, waxay la shaqeysaa kaliya IPV4. saamiga IPv6 waa yar yahay, laakiin way fududahay in la hagaajiyo. Ilaa aad u baahan tahay inaad isticmaasho shimbir 6 sidoo kale.

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)

Qoraal si loo cusboonaysiiyo
Waxaan ku ordayaa taajka hal mar maalintii, laga yaabee inay mudan tahay in la jiido 4 saacadood kasta. Tani, fikradayda, waa xilliga cusboonaysiinta ee RKN ay uga baahan tahay bixiyeyaasha. Waxaa dheer, waxay leeyihiin xannibaado kale oo degdeg ah, kuwaas oo si degdeg ah u iman kara.

Samee kuwan soo socda:

  • Wuxuu wadaa qoraalka koowaad wuxuuna cusbooneysiiyaa liiska waddooyinka (rkn_routes.list) ee Shimbiraha
  • Dib u soo rar shimbirta
  • Cusboonaysii oo nadiifiya liiska domains dnstap-bgp
  • Dib u soo deji 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

Waxa la qoray iyaga oo aan wax badan ka fikirin, markaa haddii aad aragto wax la hagaajin karo - u soco.

Habaynta macmiilka

Halkan waxaan ku siin doonaa tusaalayaal loogu talagalay router-yada Linux, laakiin kiiska Mikrotik / Cisco waa inay xitaa sahlanaato.

Marka hore, waxaan dejinay SHIMBA:

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

Markaa, waxaanu isku xidhi doonaa dariiqyada laga helo BGP iyo miiska kernel-ka ee lambarka 222.

Intaa ka dib, way ku filan tahay inaad weydiiso kernel-ka inuu eego saxankan ka hor inta aanad eegin midka caadiga ah:

# 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

Wax kasta, way hadhaysaa in lagu habeeyo DHCP router-ka si loo qaybiyo ciwaanka IP-ga tunnel-ka server-ka sida DNS, nidaamkuna waa diyaar.

Dhibaatooyin

Algorithm-ka hadda jira ee soo saarista iyo habaynta liiska domains, waxa ku jira, iyo waxyaabo kale, youtube.com iyo CDN-yadiisa.

Tani waxay keenaysaa xaqiiqda ah in dhammaan fiidiyowyada ay mari doonaan VPN, taas oo xiri karta kanaalka oo dhan. Waxaa laga yaabaa inay mudan tahay in la ururiyo liiska domains-ka-reebitaanka ee xannibaya RKN wakhtiga la joogo, cirridka ayaa khafiif ah. Ka bood iyaga marka aad falanqaynayso.

gunaanad

Habka la sharraxay wuxuu kuu ogolaanayaa inaad ka gudubto ku dhawaad ​​xannibaad kasta oo bixiyayaasha hadda hirgeliyaan.

Mabda 'ahaan, dnstap-bgp waxaa loo isticmaali karaa ujeedo kasta oo kale halkaas oo heer ka mid ah xakamaynta taraafikada loo baahan yahay oo ku salaysan magaca domainka. Maskaxda ku hay in waqtigeena, kun goobood ay ku dhegi karaan isla cinwaanka IP-ga (oo ka dambeeya Cloudflare qaar, tusaale ahaan), markaa habkani wuxuu leeyahay saxsanaan hooseeya.

Laakiin baahiyaha qufulka la dhaafo, tani waa ku filan tahay.

Kordhinta, wax ka beddelka, codsiyada jiid - soo dhawoow!

Source: www.habr.com

Add a comment