Seachnadh bacadh ILV le DNSTap agus BGP

Seachnadh bacadh ILV le DNSTap agus BGP

Tha an cuspair air a bhualadh gu math, tha fios agam. Mar eisimpleir, tha sàr-mhath ann artaigil, ach chan eil ach am pàirt IP den liosta bacaidh air a mheas an sin. Cuiridh sinn raointean ris cuideachd.

Leis gu bheil na cùirtean agus an RKN a’ cur casg air a h-uile càil deas is clì, agus na solaraichean a’ feuchainn gu cruaidh gun a bhith a’ tuiteam fo na cìsean a chuir Revizorro a-mach, tha na call co-cheangailte bho bhacadh gu math mòr. Agus am measg nan làraich “gu laghail” a tha dùinte tha mòran de na feadhainn feumail (hello, rutracker)

Tha mi a’ fuireach taobh a-muigh uachdranas an RKN, ach dh’ fhan mo phàrantan, mo chàirdean agus mo charaidean aig an taigh. Mar sin chaidh co-dhùnadh dòigh fhurasta a chruthachadh dha daoine fada bho IT gus casg a chuir air seach-rathad, agus b’ fheàrr às aonais an com-pàirt idir.

Anns an nota seo, cha toir mi cunntas air na rudan bunaiteach den lìonra ann an ceumannan, ach bheir mi cunntas air na prionnsapalan coitcheann air mar as urrainnear an sgeama seo a bhuileachadh. Mar sin tha eòlas air mar a tha an lìonra ag obair san fharsaingeachd agus ann an Linux gu sònraichte riatanach.

Seòrsan glasan

An toiseach, leig dhuinn ar cuimhne ùrachadh air na tha air a bhacadh.

Tha grunn sheòrsaichean de ghlasan anns an XML gun luchdachadh bhon RKN:

  • IP
  • Ainm Domain
  • URL

Airson sìmplidh, lughdaichidh sinn iad gu dhà: IP agus àrainn, agus bidh sinn dìreach a 'tarraing a-mach an àrainn bho bhith a' bacadh le URL (nas mionaidiche, tha iad air seo a dhèanamh dhuinn mar-thà).

daoine math bho Roscomsvoboda thuig mi mìorbhaileach API, tro am faigh sinn na tha a dhìth oirnn:

Cothrom air làraich dùinte

Gus seo a dhèanamh, feumaidh sinn beagan VPS cèin, mas fheàrr le trafaic gun chrìoch - tha mòran dhiubh sin airson 3-5 bucaid. Feumaidh tu a thoirt faisg air thall thairis gus nach bi am ping glè mhòr, ach a-rithist, thoir an aire nach bi an eadar-lìn agus cruinn-eòlas an-còmhnaidh aig an aon àm. Agus leis nach eil SLA ann airson 5 bucaid, tha e nas fheàrr pìosan 2+ a thoirt bho dhiofar sholaraichean airson fulangas locht.

An ath rud, feumaidh sinn tunail crioptaichte a stèidheachadh bhon router teachdaiche chun VPS. Bidh mi a’ cleachdadh Wireguard mar an fheadhainn as luaithe agus as fhasa a stèidheachadh. Tha routers teachdaiche agam cuideachd stèidhichte air Linux (PU2 no rudeigin ann an OpenWRT). A thaobh cuid de Mikrotik / Cisco, faodaidh tu na protocolaidhean a tha rim faighinn orra mar OpenVPN agus GRE-over-IPSEC a chleachdadh.

Comharrachadh agus ath-stiùireadh trafaic inntinneach

Faodaidh tu, gu dearbh, a h-uile trafaic eadar-lìn a chuir dheth tro dhùthchannan cèin. Ach, nas coltaiche, bidh astar obrachadh le susbaint ionadail a’ fulang gu mòr le seo. A bharrachd air an sin, bidh na riatanasan leud-bann air VPS mòran nas àirde.

Mar sin, feumaidh sinn dòigh air choireigin trafaic a riarachadh gu làraich dùinte agus a stiùireadh gu roghnach chun tunail. Fiù ma gheibh cuid den trafaic “a bharrachd” ann, tha e fhathast fada nas fheàrr na bhith a’ draibheadh ​​​​a h-uile càil tron ​​​​tunail.

Gus trafaic a riaghladh, cleachdaidh sinn protocol BGP agus innsidh sinn slighean gu na lìonraidhean riatanach bhon VPS againn gu teachdaichean. Gabhamaid BIRD mar aon de na deamhan BGP as gnìomhaiche agus as goireasaiche.

IP

Le bacadh le IP, tha a h-uile dad soilleir: bidh sinn dìreach ag ainmeachadh a h-uile IP dùinte le VPS. Is e an duilgheadas a th’ ann gu bheil timcheall air 600 mìle subnets air an liosta a thilleas an API, agus tha a’ mhòr-chuid dhiubh nan luchd-aoigheachd /32. Faodaidh an àireamh seo de shlighean troimh-chèile a dhèanamh air routers teachdaiche lag.

Mar sin, nuair a chaidh an liosta a ghiullachd, chaidh co-dhùnadh geàrr-chunntas a dhèanamh suas chun lìonra / 24 ma tha 2 neach-aoigheachd no barrachd aige. Mar sin, chaidh an àireamh de shlighean a lùghdachadh gu ~ 100 mìle. Leanaidh an sgriobt airson seo.

Fearann

Tha e nas iom-fhillte agus tha grunn dhòighean ann. Mar eisimpleir, faodaidh tu Squid fhollaiseach a chuir a-steach air gach router teachdaiche agus eadar-ghabhail HTTP a dhèanamh an sin agus peep a-steach don chrathadh-làimhe TLS gus an URL a chaidh iarraidh fhaighinn sa chiad chùis agus an àrainn bho SNI san dàrna fear.

Ach air sgàth a h-uile seòrsa de newfangled TLS1.3 + eSNI, tha mion-sgrùdadh HTTPS a’ fàs nas lugha agus nas lugha fìor gach latha. Tha, agus tha am bun-structar air taobh an neach-dèiligidh a’ fàs nas toinnte - feumaidh tu OpenWRT co-dhiù a chleachdadh.

Mar sin, chuir mi romhpa an t-slighe a ghabhail gus freagairtean a chuir an aghaidh iarrtasan DNS. An seo cuideachd, bidh DNS-over-TLS / HTTPS sam bith a’ tòiseachadh a’ dol thairis air do cheann, ach is urrainn dhuinn (airson a-nis) smachd a chumail air a’ phàirt seo air a’ chliant - an dàrna cuid a chuir dheth no an t-seirbheisiche agad fhèin a chleachdadh airson DoT / DoH.

Mar a chuireas tu casg air DNS?

An seo, cuideachd, is dòcha gu bheil grunn dhòighean-obrach ann.

  • Eadar-ghabhail trafaic DNS tro PCAP no NFLOG
    Tha an dà dhòigh eadar-ghuidhe sin air an cur an gnìomh anns a’ ghoireas sidmat. Ach cha deach taic a thoirt dha airson ùine mhòr agus tha an comas-gnìomh gu math prìomhadail, agus mar sin feumaidh tu acfhainn a sgrìobhadh air a shon fhathast.
  • Mion-sgrùdadh air logaichean frithealaiche DNS
    Gu mì-fhortanach, chan urrainn don luchd-ath-chuairteachaidh as aithne dhomh freagairtean a chlàradh, ach dìreach iarrtasan. Ann am prionnsapal, tha seo loidsigeach, oir, eu-coltach ri iarrtasan, tha structar iom-fhillte aig freagairtean agus tha e duilich an sgrìobhadh ann an cruth teacsa.
  • DNSTap
    Gu fortanach, tha mòran dhiubh mu thràth a 'toirt taic do DNSTap airson an adhbhair seo.

Dè a th’ ann an DNSTap?

Seachnadh bacadh ILV le DNSTap agus BGP

Is e protocol frithealaiche teachdaiche a th’ ann a tha stèidhichte air Protocol Buffers agus Frame Streams airson gluasad bho fhrithealaiche DNS gu neach-cruinneachaidh de cheistean agus fhreagairtean DNS structaraichte. Gu bunaiteach, bidh am frithealaiche DNS a ’sgaoileadh meata-dàta ceist is freagairt (seòrsa teachdaireachd, IP teachdaiche / frithealaiche, msaa) a bharrachd air teachdaireachdan DNS iomlan anns an fhoirm (dìneach) anns a bheil e ag obair còmhla riutha thairis air an lìonra.

Tha e cudromach tuigsinn, ann am paradigm DNSTap, gu bheil am frithealaiche DNS ag obair mar neach-dèiligidh agus gu bheil an neach-cruinneachaidh ag obair mar fhrithealaiche. Is e sin, bidh am frithealaiche DNS a’ ceangal ris an neach-cruinneachaidh, agus chan ann a chaochladh.

An-diugh tha DNSTap a’ faighinn taic anns a h-uile seirbheisiche DNS mòr-chòrdte. Ach, mar eisimpleir, bidh BIND ann an iomadh sgaoilidhean (mar Ubuntu LTS) gu tric air a thogail airson adhbhar air choireigin às aonais a thaic. Mar sin na gabhamaid dragh le ath-chruinneachadh, ach gabh ath-chuairtiche nas aotroime agus nas luaithe - Unbound.

Ciamar a ghlacadh DNSTap?

tha cuid количество Goireasan CLI airson a bhith ag obair le sruth de thachartasan DNSTap, ach chan eil iad freagarrach airson ar duilgheadas fhuasgladh. Mar sin, chuir mi romham mo bhaidhsagal fhìn a chruthachadh a nì a h-uile dad a tha riatanach: dnstap-bgp

Algorithm obrach:

  • Nuair a thèid a chuir air bhog, bidh e a’ luchdachadh liosta de raointean bho fhaidhle teacsa, gan tionndadh (habr.com -> com.habr), a’ dùnadh a-mach loidhnichean briste, dùblaidhean agus fo-roinnean (ie ma tha habr.com agus www.habr.com air an liosta, cha tèid a luchdachadh ach a’ chiad fhear) agus togaidh e craobh ro-leasachan airson sgrùdadh luath tron ​​​​liosta seo
  • Ag obair mar fhrithealaiche DNSTap, bidh e a’ feitheamh ri ceangal bho fhrithealaiche DNS. Ann am prionnsapal, tha e a’ toirt taic do gach cuid socaidean UNIX agus TCP, ach chan urrainn dha na frithealaichean DNS as aithne dhomh ach socaidean UNIX a chleachdadh
  • Bithear a’ toirt a-steach pacaidean DNSTap a tha a’ tighinn a-steach an-toiseach gu structar Protobuf, agus an uairsin tha an teachdaireachd binary DNS fhèin, a tha suidhichte ann am fear de na raointean Protobuf, air a pharsadh gu ìre chlàran DNS RR
  • Thathas a’ sgrùdadh a bheil an t-òstair a chaidh iarraidh (no an àrainn phàrant aige) air an liosta luchdaichte, mura h-eil, cha tèid an fhreagairt a leigeil seachad
  • Chan eil ach A/AAAA/CNAME RRs air an taghadh bhon fhreagairt agus tha na seòlaidhean IPv4/IPv6 co-fhreagarrach air an toirt a-mach bhuapa
  • Tha seòlaidhean IP air an tasgadh le TTL a ghabhas rèiteachadh agus air an sanasachadh dha gach co-aoisean BGP a tha air an rèiteachadh
  • Nuair a gheibh thu freagairt a’ comharrachadh IP a tha air a thasgadh mar-thà, thèid an TTL aige ùrachadh
  • Às deidh don TTL tighinn gu crìch, thèid an inntrig a thoirt air falbh bhon tasgadan agus bho sanasan BGP

Feartan a bharrachd:

  • Ag ath-leughadh liosta nan raointean le SIGHUP
  • A’ cumail an tasgadan ann an co-chòrdadh ri suidheachaidhean eile dnstap-bgp tro HTTP/JSON
  • Dèan dùblachadh air an tasgadan air diosc (ann an stòr-dàta BoltDB) gus na tha ann a thoirt air ais às deidh ath-thòiseachadh
  • Taic airson atharrachadh gu àite ainm lìonra eadar-dhealaichte (thèid innse gu h-ìosal carson a tha feum air seo)
  • Taic IPv6

Crìochan:

  • Chan eil taic ri raointean IDN fhathast
  • Glè bheag de shuidheachaidhean BGP

chruinnich mi RPM agus DEB pacaidean airson an stàladh gu furasta. Bu chòir dha obrachadh air a h-uile OSes an ìre mhath o chionn ghoirid le systemd. chan eil eisimeileachd sam bith aca.

An sgeama

Mar sin, tòisichidh sinn a 'cruinneachadh na pàirtean gu lèir còmhla. Mar thoradh air an sin, bu chòir dhuinn rudeigin mar an topology lìonra seo fhaighinn:
Seachnadh bacadh ILV le DNSTap agus BGP

Tha loidsig na h-obrach, tha mi a’ smaoineachadh, soilleir bhon diagram:

  • Tha an frithealaiche againn air a rèiteachadh mar DNS, agus feumaidh ceistean DNS a dhol thairis air an VPN cuideachd. Tha seo riatanach gus nach urrainn don t-solaraiche eadar-ghabhail DNS a chleachdadh gus casg a chuir air.
  • Nuair a dh’ fhosglas tu an làrach, bidh an neach-dèiligidh a’ cur ceist DNS mar “dè na IPan aig xxx.org”
  • Unbound a’ fuasgladh xxx.org (no ga thoirt bhon tasgadan) agus a’ cur freagairt chun neach-dèiligidh “tha an leithid aig xxx.org agus an leithid de IP”, ga dhùblachadh ann an co-shìnte tro DNSTap
  • dnstap-bgp ag ainmeachadh na seòlaidhean sin ann an BIRD tro BGP ma tha an àrainn air an liosta dùinte
  • BIRD a’ sanasachadh slighe gu na IPan sin le next-hop self router cliant
  • Bidh pacaidean às deidh sin bhon neach-dèiligidh gu na IPan sin a’ dol tron ​​​​tunail

Air an fhrithealaiche, airson slighean gu làraich dùinte, bidh mi a 'cleachdadh clàr air leth taobh a-staigh BIRD agus chan eil e a' dol an aghaidh an OS ann an dòigh sam bith.

Tha ana-cothrom san sgeama seo: bidh ùine aig a’ chiad phasgan SYN bhon neach-dèiligidh, is coltaiche, falbh tron ​​​​t-solaraiche dachaigheil. chan eil an t-slighe air ainmeachadh sa bhad. Agus an seo tha roghainnean comasach a rèir mar a nì an solaraiche am bacadh. Ma tha e dìreach a 'fàgail trafaig, chan eil duilgheadas ann. Agus ma tha e ga ath-stiùireadh gu cuid de DPI, tha e comasach (gu teòiridheach) buaidhean sònraichte.

Tha e comasach cuideachd nach bi luchd-dèiligidh a’ toirt urram do mhìorbhailean DNS TTL, a bheir air an neach-dèiligidh cuid de dh ’inntrigidhean seann-fhasanta a chleachdadh bhon tasgadan grodadh aige an àite a bhith a’ faighneachd Unbound.

Ann an cleachdadh, cha do dh’ adhbhraich a’ chiad no an dàrna trioblaid dhomh, ach dh’ fhaodadh do mhìltean atharrachadh.

Tuning am frithealaiche

Airson a bhith furasta a roiligeadh, sgrìobh mi dreuchd airson Ansible. Faodaidh e an dà chuid frithealaichean agus teachdaichean a rèiteachadh stèidhichte air Linux (air a dhealbhadh airson sgaoilidhean stèidhichte air deasb). Tha a h-uile suidheachadh gu math follaiseach agus tha iad suidhichte clàr-seilbhe.yml. Tha an dreuchd seo air a ghearradh bhon leabhar-cluiche mòr agam, agus mar sin is dòcha gu bheil mearachdan ann - a ’tarraing iarrtasan fàilte 🙂

Leig dhuinn a dhol tro na prìomh phàirtean.

BGP

Tha duilgheadas bunaiteach ann a bhith a’ ruith dà dheamhan BGP air an aon aoigh: chan eil BIRD airson BGP a stèidheachadh a’ coimhead leis an localhost (no eadar-aghaidh ionadail sam bith). Bhon fhacal idir. Cha do chuidich Googling agus leughadh liostaichean puist, tha iad ag agairt gur ann le dealbhadh a tha seo. Is dòcha gu bheil dòigh air choireigin ann, ach cha do lorg mi e.

Faodaidh tu deamhan BGP eile fheuchainn, ach is toil leam BIRD agus tha e air a chleachdadh anns a h-uile àite leam, chan eil mi airson buidhnean a thoirt gu buil.

Mar sin, chuir mi am falach dnstap-bgp taobh a-staigh àrainn ainmean an lìonraidh, a tha ceangailte ris an fhreumh tron ​​​​eadar-aghaidh veth: tha e coltach ri pìob, agus bidh a cinn a’ cumail a-mach ann an diofar ainmean. Air gach aon de na cinn sin, bidh sinn a 'crochadh seòlaidhean IP p2p prìobhaideach nach eil a' dol seachad air an aoigheachd, agus mar sin faodaidh iad a bhith mar rud sam bith. Is e seo an aon inneal a thathas a’ cleachdadh gus faighinn gu pròiseasan a-staigh ghràdhaich na h-uile Docker agus soithichean eile.

Airson seo chaidh a sgrìobhadh sgriobt agus chaidh an gnìomh a chaidh a mhìneachadh gu h-àrd mu thràth airson do shlaodadh leis an fhalt gu àite ainm eile a chuir ri dnstap-bgp. Air sgàth seo, feumaidh e a bhith air a ruith mar fhreumh no air a chuir gu binary CAP_SYS_ADMIN tron ​​​​àithne setcap.

Sgriobt eisimpleir airson cruthachadh namespace

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

eun.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

Gu gnàthach, ann an Ubuntu, tha am binary Unbound air a chlampadh leis a’ phròifil AppArmor, a tha ga thoirmeasg bho bhith a’ ceangal ri gach seòrsa socaid DNSTap. 'S urrainn dhut a' phròifil seo a sguabadh às, neo a chur à comas:

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

Is dòcha gum bu chòir seo a chur ris an leabhar-cluiche. Tha e math, gu dearbh, am pròifil a cheartachadh agus na còraichean riatanach a chuir a-mach, ach bha mi ro leisg.

gun cheangal.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

Luchdaich sìos agus làimhseachadh liostaichean

Sgriobt airson liosta de sheòlaidhean IP a luchdachadh sìos agus a ghiullachd
Bidh e a 'luchdachadh sìos an liosta, a' toirt suas ris an ro-leasachan pfx. Tha a ' na cuir_ ris и na dèan geàrr-chunntas faodaidh tu innse dha na IPan agus na lìonraidhean a bhith a 'sgapadh no gun a bhith a' toirt geàrr-chunntas. Bha feum agam air. bha subnet mo VPS air a’ bhloc-liosta 🙂

Is e an rud èibhinn gu bheil an RosKomSvoboda API a 'blocadh iarrtasan leis an neach-cleachdaidh bunaiteach Python. Tha e coltach gun d’ fhuair an sgriobt-kiddy e. Mar sin, bidh sinn ga atharrachadh gu Ognelis.

Gu ruige seo, chan eil e ag obair ach le IPv4. tha an roinn de IPv6 beag, ach bidh e furasta a chàradh. Mura feum thu bird6 a chleachdadh cuideachd.

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)

An sgriobt airson ùrachadh
Bidh mi ga ruith air a’ chrùn uair san latha, is dòcha gum b’ fhiach a tharraing a h-uile 4 uairean. is e seo, nam bheachd-sa, an ùine ùrachaidh a dh’ fheumas an RKN bho sholaraichean. A bharrachd air an sin, tha bacadh fìor èiginneach eile aca, a dh ’fhaodadh ruighinn nas luaithe.

A bheil na leanas:

  • A’ ruith a’ chiad sgriobt agus ag ùrachadh liosta nan slighean (rkn_routes.list) son BAN
  • bird luchdadh a-nuas
  • Ag ùrachadh agus a’ glanadh liosta nan raointean airson dnstap-bgp
  • Luchdaich a-nuas 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

Chaidh an sgrìobhadh gun mòran smaoineachaidh, mar sin ma chì thu rudeigin a ghabhas leasachadh - rachaibh air a shon.

Suidheachadh cliant

An seo bheir mi eisimpleirean airson routers Linux, ach a thaobh Mikrotik / Cisco bu chòir dha a bhith eadhon nas fhasa.

An toiseach, stèidhich sinn BIRD:

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

Mar sin, sioncronaidh sinn na slighean a gheibhear bho BGP leis a’ chlàr slighe kernel àireamh 222.

Às deidh sin, tha e gu leòr iarraidh air an kernel coimhead air a ’phlàta seo mus coimhead thu air an fhear àbhaisteach:

# 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

A h-uile càil, tha e fhathast gus DHCP a rèiteachadh air an router gus seòladh IP tunail an fhrithealaiche a sgaoileadh mar DNS, agus tha an sgeama deiseil.

uireasbhaidhean

Leis an algairim gnàthach airson liosta nan raointean a ghineadh agus a ghiullachd, tha e a’ toirt a-steach, am measg rudan eile, youtube.com agus na CDNan aige.

Agus tha seo ag adhbhrachadh gum bi a h-uile bhidio a ’dol tron ​​​​VPN, a dh’ fhaodas an sianal gu lèir a shlaodadh. Is dòcha gum b’ fhiach liosta a chuir ri chèile de raointean a tha mòr-chòrdte - às-dùnadh a tha a’ cur bacadh air an RKN aig an àm seo, tha an gut tana. Agus seachain iad nuair a bhios tu a’ parsadh.

co-dhùnadh

Leigidh an dòigh a chaidh a mhìneachadh leat faighinn seachad air cha mhòr bacadh sam bith a tha solaraichean a’ cur an gnìomh an-dràsta.

Ann am prionnsapal, dnstap-bgp faodar a chleachdadh airson adhbhar sam bith eile far a bheil feum air ìre de smachd trafaic stèidhichte air an ainm fearainn. Dìreach cumaibh cuimhne gum faod mìle làrach crochadh air an aon sheòladh IP nar n-ùine (air cùl cuid de Cloudflare, mar eisimpleir), agus mar sin tha an dòigh seo gu math ìosal.

Ach airson feumalachdan a bhith a 'dol seachad air glasan, tha seo gu leòr.

Cur-ris, deasachaidhean, iarrtasan tarraing - fàilte!

Source: www.habr.com

Cuir beachd ann