Ffordd osgoi blocio ILV gyda DNSTap a BGP

Ffordd osgoi blocio ILV gyda DNSTap a BGP

Mae'r pwnc yn eithaf curedig, dwi'n gwybod. Er enghraifft, mae yna wych erthygl, ond dim ond rhan IP y rhestr bloc sy'n cael ei ystyried yno. Byddwn hefyd yn ychwanegu parthau.

Oherwydd y ffaith bod y llysoedd a'r RKN yn rhwystro popeth i'r dde ac i'r chwith, ac mae'r darparwyr yn ymdrechu'n galed i beidio â dod o dan y dirwyon a gyhoeddwyd gan Revizorro, mae'r colledion cysylltiedig o rwystro yn eithaf mawr. Ac ymhlith y gwefannau sydd wedi'u blocio'n "gyfreithlon" mae yna lawer o rai defnyddiol (helo, rutracker)

Rwy'n byw y tu allan i awdurdodaeth yr RKN, ond arhosodd fy rhieni, perthnasau a ffrindiau gartref. Felly penderfynwyd meddwl am ffordd hawdd i bobl ymhell o TG i osgoi blocio, yn ddelfrydol heb eu cyfranogiad o gwbl.

Yn y nodyn hwn, ni fyddaf yn disgrifio'r pethau rhwydwaith sylfaenol mewn camau, ond byddaf yn disgrifio egwyddorion cyffredinol sut y gellir gweithredu'r cynllun hwn. Felly mae gwybodaeth am sut mae'r rhwydwaith yn gweithio yn gyffredinol ac yn Linux yn arbennig yn hanfodol.

Mathau o gloeon

Yn gyntaf, gadewch i ni adnewyddu ein cof o'r hyn sy'n cael ei rwystro.

Mae yna sawl math o gloeon yn yr XML sydd wedi'i ddadlwytho o'r RKN:

  • IP
  • Enw Parth
  • URL

Er mwyn symlrwydd, byddwn yn eu lleihau i ddau: IP a pharth, a byddwn yn syml yn tynnu'r parth allan rhag blocio gan URL (yn fwy manwl gywir, maent eisoes wedi gwneud hyn i ni).

pobl dda o Roskomsvoboda sylweddoli gwych API, a thrwy hynny gallwn gael yr hyn sydd ei angen arnom:

Mynediad i wefannau sydd wedi'u blocio

I wneud hyn, mae angen rhywfaint o VPS tramor bach arnom, yn ddelfrydol gyda thraffig diderfyn - mae llawer o'r rhain am 3-5 bychod. Mae angen i chi ei gymryd yn agos dramor fel nad yw'r ping yn fawr iawn, ond eto, cymerwch i ystyriaeth nad yw'r Rhyngrwyd a daearyddiaeth bob amser yn cyd-daro. A chan nad oes CLG ar gyfer 5 bychod, mae'n well cymryd 2+ darn gan wahanol ddarparwyr ar gyfer goddef diffygion.

Nesaf, mae angen i ni sefydlu twnnel wedi'i amgryptio o'r llwybrydd cleient i'r VPS. Rwy'n defnyddio Wireguard fel y cyflymaf a'r hawsaf i'w sefydlu. Mae gen i lwybryddion cleient hefyd yn seiliedig ar Linux (APU2 neu rywbeth yn OpenWRT). Yn achos rhai Mikrotik / Cisco, gallwch ddefnyddio'r protocolau sydd ar gael arnynt fel OpenVPN a GRE-over-IPSEC.

Adnabod ac ailgyfeirio traffig o ddiddordeb

Gallwch, wrth gwrs, ddiffodd yr holl draffig Rhyngrwyd trwy wledydd tramor. Ond, yn fwyaf tebygol, bydd cyflymder gweithio gyda chynnwys lleol yn dioddef yn fawr o hyn. Hefyd, bydd y gofynion lled band ar VPS yn llawer uwch.

Felly, bydd angen inni rywsut ddyrannu traffig i safleoedd sydd wedi’u blocio a’i gyfeirio’n ddetholus at y twnnel. Hyd yn oed os yw rhywfaint o'r traffig "ychwanegol" yn cyrraedd yno, mae'n dal yn llawer gwell na gyrru popeth trwy'r twnnel.

Er mwyn rheoli traffig, byddwn yn defnyddio'r protocol BGP ac yn cyhoeddi llwybrau i'r rhwydweithiau angenrheidiol o'n VPS i gleientiaid. Gadewch i ni gymryd BIRD fel un o'r daemonau BGP mwyaf ymarferol a chyfleus.

IP

Gyda blocio gan IP, mae popeth yn glir: rydym yn syml yn cyhoeddi pob IP sydd wedi'i rwystro gyda VPS. Y broblem yw bod tua 600 mil o is-rwydweithiau yn y rhestr y mae'r API yn ei dychwelyd, ac mae'r mwyafrif helaeth ohonynt yn /32 gwesteiwr. Gall y nifer hwn o lwybrau ddrysu llwybryddion cleient gwan.

Felly, wrth brosesu'r rhestr, penderfynwyd crynhoi hyd at y rhwydwaith / 24 os oes ganddo 2 neu fwy o westeion. Felly, gostyngwyd nifer y llwybrau i ~100 mil. Bydd y sgript ar gyfer hyn yn dilyn.

Parthoedd

Mae'n fwy cymhleth ac mae sawl ffordd. Er enghraifft, gallwch osod Squid tryloyw ar bob llwybrydd cleient a gwneud rhyng-gipio HTTP yno a sbecian i mewn i'r ysgwyd llaw TLS er mwyn cael yr URL y gofynnwyd amdano yn yr achos cyntaf a'r parth gan SNI yn yr ail.

Ond oherwydd pob math o TLS1.3 + eSNI newfangled, mae dadansoddiad HTTPS yn dod yn llai a llai real bob dydd. Ydy, ac mae'r seilwaith ar ochr y cleient yn dod yn fwy cymhleth - bydd yn rhaid i chi ddefnyddio OpenWRT o leiaf.

Felly, penderfynais gymryd y llwybr o ryng-gipio ymatebion i ymholiadau DNS. Yma, hefyd, mae unrhyw DNS-over-TLS / HTTPS yn dechrau hofran dros eich pen, ond gallwn (am y tro) reoli'r rhan hon ar y cleient - naill ai ei analluogi neu ddefnyddio'ch gweinydd eich hun ar gyfer DoT / DoH.

Sut i ryng-gipio DNS?

Yma, hefyd, efallai y bydd sawl dull gweithredu.

  • Rhyng-gipio traffig DNS trwy PCAP neu NFLOG
    Mae'r ddau ddull hyn o ryng-gipio yn cael eu gweithredu yn y cyfleustodau sidmat. Ond nid yw wedi'i gefnogi ers amser maith ac mae'r swyddogaeth yn gyntefig iawn, felly mae angen i chi ysgrifennu harnais ar ei gyfer o hyd.
  • Dadansoddiad o logiau gweinydd DNS
    Yn anffodus, nid yw'r ailadroddwyr sy'n hysbys i mi yn gallu logio ymatebion, dim ond ceisiadau. Mewn egwyddor, mae hyn yn rhesymegol, oherwydd, yn wahanol i geisiadau, mae gan atebion strwythur cymhleth ac mae'n anodd eu hysgrifennu ar ffurf testun.
  • DNSTap
    Yn ffodus, mae llawer ohonynt eisoes yn cefnogi DNSTap at y diben hwn.

Beth yw DNSTap?

Ffordd osgoi blocio ILV gyda DNSTap a BGP

Mae'n brotocol cleient-gweinydd sy'n seiliedig ar Glustogau Protocol a Ffrydiau Ffrâm ar gyfer trosglwyddo o weinydd DNS i gasglwr ymholiadau ac ymatebion DNS strwythuredig. Yn y bôn, mae'r gweinydd DNS yn trosglwyddo metadata ymholiad ac ymateb (math o neges, IP cleient / gweinydd, ac ati) ynghyd â negeseuon DNS cyflawn yn y ffurflen (deuaidd) y mae'n gweithio gyda nhw dros y rhwydwaith.

Mae'n bwysig deall, yn y patrwm DNSTap, bod y gweinydd DNS yn gweithredu fel cleient a bod y casglwr yn gweithredu fel gweinydd. Hynny yw, mae'r gweinydd DNS yn cysylltu â'r casglwr, ac nid i'r gwrthwyneb.

Heddiw cefnogir DNSTap ym mhob gweinydd DNS poblogaidd. Ond, er enghraifft, mae BIND mewn llawer o ddosbarthiadau (fel Ubuntu LTS) yn aml yn cael ei adeiladu am ryw reswm heb ei gefnogaeth. Felly, gadewch i ni beidio â thrafferthu gyda reassembly, ond yn cymryd recursor ysgafnach a chyflymach - Unbound.

Sut i ddal DNSTap?

Mae rhai maint Cyfleustodau CLI ar gyfer gweithio gyda ffrwd o ddigwyddiadau DNSTap, ond nid ydynt yn addas ar gyfer datrys ein problem. Felly, penderfynais ddyfeisio fy meic fy hun a fydd yn gwneud popeth sy'n angenrheidiol: dnstap-bgp

Algorithm gwaith:

  • Pan gaiff ei lansio, mae'n llwytho rhestr o barthau o ffeil testun, yn eu gwrthdroi (habr.com -> com.habr), yn eithrio llinellau toredig, dyblygiadau ac is-barthau (h.y. os yw'r rhestr yn cynnwys habr.com a www.habr.com, dim ond yr un cyntaf y caiff ei lwytho) ac mae'n adeiladu coeden rhagddodiad ar gyfer chwilio'n gyflym trwy'r rhestr hon
  • Gan weithredu fel gweinydd DNSTap, mae'n aros am gysylltiad gan weinydd DNS. Mewn egwyddor, mae'n cefnogi socedi UNIX a TCP, ond dim ond socedi UNIX y gall y gweinyddwyr DNS rwy'n eu hadnabod ddefnyddio
  • Mae pecynnau DNSTap sy'n dod i mewn yn cael eu dadgyfrifo'n gyntaf i strwythur Protobuf, ac yna mae'r neges DNS deuaidd ei hun, sydd wedi'i lleoli yn un o'r meysydd Protobuf, yn cael ei dosrannu i lefel cofnodion DNS RR
  • Mae'n cael ei wirio a yw'r gwesteiwr y gofynnwyd amdano (neu ei riant barth) yn y rhestr wedi'i llwytho, os na, anwybyddir yr ymateb
  • Dim ond A/AAAA/CNAME RRs sy'n cael eu dewis o'r ymateb ac mae'r cyfeiriadau IPv4/IPv6 cyfatebol yn cael eu tynnu ohonynt
  • Mae cyfeiriadau IP yn cael eu storio gyda TTL ffurfweddadwy a'u hysbysebu i'r holl gymheiriaid BGP sydd wedi'u ffurfweddu
  • Wrth dderbyn ymateb sy'n pwyntio at IP sydd eisoes wedi'i storio, mae ei TTL yn cael ei ddiweddaru
  • Ar ôl i'r TTL ddod i ben, caiff y cofnod ei dynnu o'r storfa ac o gyhoeddiadau BGP

Swyddogaeth ychwanegol:

  • Yn ailddarllen y rhestr o barthau gan SIGHUP
  • Cadw'r storfa mewn cydamseriad ag achosion eraill dnstap-bgp trwy HTTP/JSON
  • Dyblygwch y storfa ar ddisg (yng nghronfa ddata BoltDB) i adfer ei gynnwys ar ôl ailgychwyn
  • Cefnogaeth ar gyfer newid i ofod enw rhwydwaith gwahanol (disgrifir pam fod angen hyn isod)
  • Cefnogaeth IPv6

Cyfyngiadau:

  • Nid yw parthau IDN yn cael eu cefnogi eto
  • Ychydig o osodiadau BGP

casglais RPM a DEB pecynnau ar gyfer gosod hawdd. Dylai weithio ar bob OSes cymharol ddiweddar gyda systemd. nid oes ganddynt unrhyw ddibyniaethau.

Cynllun

Felly, gadewch i ni ddechrau cydosod yr holl gydrannau gyda'i gilydd. O ganlyniad, dylem gael rhywbeth fel y topoleg rhwydwaith hon:
Ffordd osgoi blocio ILV gyda DNSTap a BGP

Mae rhesymeg y gwaith, rwy’n meddwl, yn glir o’r diagram:

  • Mae gan y cleient ein gweinydd wedi'i ffurfweddu fel DNS, a rhaid i ymholiadau DNS fynd dros y VPN hefyd. Mae hyn yn angenrheidiol fel na all y darparwr ddefnyddio rhyng-gipio DNS i rwystro.
  • Wrth agor y wefan, mae'r cleient yn anfon ymholiad DNS fel "beth yw IPs xxx.org"
  • Heb ei rwymo yn datrys xxx.org (neu'n ei gymryd o'r storfa) ac yn anfon ymateb i'r cleient “mae gan xxx.org IP o'r fath ac o'r fath”, gan ei ddyblygu ochr yn ochr trwy DNSTap
  • dnstap-bgp yn cyhoeddi y cyfeiriadau hyn yn GENI trwy BGP os yw'r parth ar y rhestr sydd wedi'i rhwystro
  • GENI yn hysbysebu llwybr i'r IPs hyn gyda next-hop self llwybrydd cleient
  • Mae pecynnau dilynol gan y cleient i'r IPs hyn yn mynd trwy'r twnnel

Ar y gweinydd, ar gyfer llwybrau i safleoedd sydd wedi'u blocio, rwy'n defnyddio tabl ar wahân y tu mewn i BIRD ac nid yw'n croestorri â'r OS mewn unrhyw ffordd.

Mae gan y cynllun hwn anfantais: bydd y pecyn SYN cyntaf gan y cleient, yn fwyaf tebygol, yn cael amser i adael trwy'r darparwr domestig. ni chyhoeddir y llwybr ar unwaith. Ac yma mae opsiynau'n bosibl yn dibynnu ar sut mae'r darparwr yn gwneud y blocio. Os yw'n gollwng traffig yn unig, yna nid oes problem. Ac os yw'n ei ailgyfeirio i ryw DPI, yna (yn ddamcaniaethol) mae effeithiau arbennig yn bosibl.

Mae hefyd yn bosibl nad yw cleientiaid yn parchu gwyrthiau DNS TTL, a all achosi'r cleient i ddefnyddio rhai cofnodion hen o'i storfa pwdr yn lle gofyn Unbound.

Yn ymarferol, nid oedd y cyntaf na'r ail wedi achosi problemau i mi, ond gall eich milltiredd amrywio.

Tiwnio Gweinydd

Er hwylustod rholio, ysgrifennais rôl i Ansible. Gall ffurfweddu gweinyddwyr a chleientiaid yn seiliedig ar Linux (a gynlluniwyd ar gyfer dosbarthiadau sy'n seiliedig ar deb). Mae'r holl leoliadau yn eithaf amlwg ac wedi'u gosod i mewn rhestr eiddo.yml. Mae'r rôl hon wedi'i thorri o fy llyfr chwarae mawr, felly gall gynnwys gwallau - tynnu ceisiadau croeso 🙂

Gadewch i ni fynd drwy'r prif gydrannau.

BGP

Mae gan redeg dau ellyll BGP ar yr un gwesteiwr broblem sylfaenol: nid yw Bird eisiau sefydlu BGP gan edrych ar y localhost (neu unrhyw ryngwyneb lleol). O'r gair o gwbl. Nid oedd googling a darllen rhestrau post yn helpu, maent yn honni bod hyn yn ôl cynllun. Efallai bod rhyw ffordd, ond ni chefais hyd iddo.

Gallwch chi roi cynnig ar ellyll BGP arall, ond rwy'n hoffi BIRD ac fe'i defnyddir ym mhobman gennyf i, nid wyf am gynhyrchu endidau.

Felly, cuddiais dnstap-bgp y tu mewn i ofod enw'r rhwydwaith, sydd wedi'i gysylltu â'r gwraidd trwy'r rhyngwyneb veth: mae fel pibell, y mae ei pennau'n sefyll allan mewn gofodau enwau gwahanol. Ar bob un o'r pennau hyn, rydym yn hongian cyfeiriadau IP p2p preifat nad ydynt yn mynd y tu hwnt i'r gwesteiwr, felly gallant fod yn unrhyw beth. Dyma'r un mecanwaith a ddefnyddir i gyrchu prosesau y tu mewn caru gan bawb Dociwr a chynwysyddion eraill.

Am hyn yr ysgrifennwyd sgript ac ychwanegwyd y swyddogaeth a ddisgrifiwyd eisoes uchod ar gyfer llusgo'ch hun gerfydd eich gwallt i ofod enw arall at dnstap-bgp. Oherwydd hyn, rhaid ei redeg fel gwraidd neu ei roi i'r deuaidd CAP_SYS_ADMIN trwy'r gorchymyn setcap.

Sgript enghreifftiol ar gyfer creu gofod enwau

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

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

Yn ddiofyn, yn Ubuntu, mae'r deuaidd Unbound yn cael ei glampio gan broffil AppArmor, sy'n ei wahardd rhag cysylltu â phob math o socedi DNSTap. Gallwch naill ai ddileu'r proffil hwn, neu ei analluogi:

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

Mae'n debyg y dylid ychwanegu hwn at y llyfr chwarae. Mae'n ddelfrydol, wrth gwrs, cywiro'r proffil a chyhoeddi'r hawliau angenrheidiol, ond roeddwn i'n rhy ddiog.

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

Lawrlwytho a phrosesu rhestrau

Sgript ar gyfer lawrlwytho a phrosesu rhestr o gyfeiriadau IP
Mae'n lawrlwytho'r rhestr, yn crynhoi i'r rhagddodiad pfx. Yn peidiwch_ychwanegu и peidiwch_crynhoi gallwch ddweud wrth yr IPs a rhwydweithiau i hepgor neu beidio crynhoi. Roeddwn i ei angen. roedd is-rwydwaith fy VPS yn y rhestr flociau 🙂

Y peth doniol yw bod API RosKomSvoboda yn blocio ceisiadau gyda'r asiant defnyddiwr Python rhagosodedig. Edrych fel y sgript-kiddy got it. Felly, rydym yn ei newid i Ognelis.

Hyd yn hyn, dim ond gyda IPv4 y mae'n gweithio. mae cyfran IPv6 yn fach, ond bydd yn hawdd ei drwsio. Oni bai bod yn rhaid i chi ddefnyddio bird6 hefyd.

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)

Sgript i'w diweddaru
Rwy'n ei redeg ar y goron unwaith y dydd, efallai ei bod yn werth ei dynnu bob 4 awr. hwn, yn fy marn i, yw'r cyfnod adnewyddu y mae'r RKN ei angen gan ddarparwyr. Hefyd, mae ganddyn nhw rywfaint o flocio brys arall, a allai gyrraedd yn gyflymach.

Yn gwneud y canlynol:

  • Yn rhedeg y sgript gyntaf ac yn diweddaru'r rhestr o lwybrau (rkn_routes.list) am ADAR
  • Ail-lwytho ADAR
  • Yn diweddaru ac yn glanhau'r rhestr o barthau ar gyfer dnstap-bgp
  • Ail-lwytho 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

Fe'u hysgrifennwyd heb fawr o feddwl, felly os gwelwch rywbeth y gellir ei wella - ewch amdani.

Gosodiad cleient

Yma byddaf yn rhoi enghreifftiau ar gyfer llwybryddion Linux, ond yn achos Mikrotik / Cisco dylai fod hyd yn oed yn haws.

Yn gyntaf, rydym yn sefydlu BIRD:

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

Felly, byddwn yn cydamseru'r llwybrau a dderbyniwyd gan BGP â'r tabl llwybro cnewyllyn rhif 222.

Ar ôl hynny, mae'n ddigon gofyn i'r cnewyllyn edrych ar y plât hwn cyn edrych ar yr un rhagosodedig:

# 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

Popeth, mae'n dal i fod i ffurfweddu DHCP ar y llwybrydd i ddosbarthu cyfeiriad IP twnnel y gweinydd fel DNS, ac mae'r cynllun yn barod.

Cyfyngiadau

Gyda'r algorithm presennol ar gyfer cynhyrchu a phrosesu'r rhestr o barthau, mae'n cynnwys, ymhlith pethau eraill, youtube.com a'i CDNs.

Ac mae hyn yn arwain at y ffaith y bydd pob fideo yn mynd trwy'r VPN, a all rwystro'r sianel gyfan. Efallai ei bod yn werth llunio rhestr o barthau poblogaidd-gwaharddiadau sy'n rhwystro'r RKN am y tro, mae'r perfedd yn denau. A sgipio nhw wrth dosrannu.

Casgliad

Mae'r dull a ddisgrifir yn caniatáu ichi osgoi bron unrhyw rwystro y mae darparwyr yn ei weithredu ar hyn o bryd.

Yn y bôn, dnstap-bgp gellir ei ddefnyddio at unrhyw ddiben arall lle mae angen rhywfaint o reolaeth traffig yn seiliedig ar yr enw parth. Cofiwch, yn ein hamser ni, y gall mil o safleoedd hongian ar yr un cyfeiriad IP (y tu ôl i rai Cloudflare, er enghraifft), felly mae gan y dull hwn gywirdeb eithaf isel.

Ond ar gyfer anghenion cloeon osgoi, mae hyn yn ddigon.

Ychwanegiadau, golygiadau, ceisiadau tynnu - croeso!

Ffynhonnell: hab.com

Ychwanegu sylw