Bypass ILV blocking gamit ang DNSTap at BGP

Bypass ILV blocking gamit ang DNSTap at BGP

Medyo matalo ang topic, alam ko. Halimbawa, mayroong isang mahusay artikulo, ngunit tanging ang IP na bahagi ng blocklist ang isinasaalang-alang doon. Magdaragdag din kami ng mga domain.

Dahil sa katotohanan na hinaharangan ng mga korte at ng RKN ang lahat sa kanan at kaliwa, at ang mga provider ay nagsisikap na huwag mahulog sa ilalim ng mga multa na inisyu ng Revizorro, ang mga nauugnay na pagkalugi mula sa pagharang ay medyo malaki. At sa mga "ayon sa batas" na naka-block na mga site mayroong maraming mga kapaki-pakinabang (hello, rutracker)

Nakatira ako sa labas ng hurisdiksyon ng RKN, ngunit nanatili sa bahay ang aking mga magulang, kamag-anak at kaibigan. Kaya't napagpasyahan na gumawa ng isang madaling paraan para sa mga taong malayo sa IT na i-bypass ang pagharang, mas mabuti nang wala silang partisipasyon.

Sa talang ito, hindi ko ilalarawan ang mga pangunahing bagay sa network sa mga hakbang, ngunit ilalarawan ang mga pangkalahatang prinsipyo kung paano maipapatupad ang scheme na ito. Kaya ang kaalaman sa kung paano gumagana ang network sa pangkalahatan at sa Linux sa partikular ay dapat na magkaroon.

Mga uri ng mga kandado

Una, i-refresh natin ang ating memorya sa kung ano ang hinaharang.

Mayroong ilang mga uri ng mga kandado sa hindi na-load na XML mula sa RKN:

  • IP
  • Π”ΠΎΠΌΠ΅Π½
  • URL

Para sa pagiging simple, babawasan namin ang mga ito sa dalawa: IP at domain, at huhugutin lang namin ang domain mula sa pagharang sa pamamagitan ng URL (mas tiyak, nagawa na nila ito para sa amin).

mabubuting tao mula sa Roskomsvoboda natanto ang isang kahanga-hangang API, kung saan makukuha natin ang kailangan natin:

Access sa mga naka-block na site

Upang gawin ito, kailangan namin ng ilang maliit na banyagang VPS, mas mabuti na may walang limitasyong trapiko - marami sa mga ito para sa 3-5 bucks. Kailangan mong dalhin ito sa malapit sa ibang bansa upang ang ping ay hindi masyadong malaki, ngunit muli, isaalang-alang na ang Internet at heograpiya ay hindi palaging nag-tutugma. At dahil walang SLA para sa 5 bucks, mas mabuting kumuha ng 2+ piraso mula sa iba't ibang provider para sa fault tolerance.

Susunod, kailangan nating mag-set up ng naka-encrypt na tunnel mula sa client router hanggang sa VPS. Ginagamit ko ang Wireguard bilang pinakamabilis at pinakamadaling i-set up. Mayroon din akong mga client router batay sa Linux (APU2 o isang bagay sa OpenWRT). Sa kaso ng ilang Mikrotik / Cisco, maaari mong gamitin ang mga protocol na magagamit sa kanila tulad ng OpenVPN at GRE-over-IPSEC.

Pagkilala at pag-redirect ng trapiko ng interes

Maaari mong, siyempre, i-off ang lahat ng trapiko sa Internet sa pamamagitan ng mga banyagang bansa. Ngunit, malamang, ang bilis ng pagtatrabaho sa lokal na nilalaman ay lubhang magdurusa mula dito. Dagdag pa, ang mga kinakailangan sa bandwidth sa VPS ay magiging mas mataas.

Samakatuwid, kakailanganin naming kahit papaano ay maglaan ng trapiko sa mga naka-block na site at piliing idirekta ito sa tunnel. Kahit na makarating doon ang ilan sa "dagdag" na trapiko, ito ay mas mahusay pa rin kaysa sa pagmamaneho ng lahat sa tunnel.

Upang pamahalaan ang trapiko, gagamitin namin ang BGP protocol at iaanunsyo ang mga ruta patungo sa mga kinakailangang network mula sa aming VPS hanggang sa mga kliyente. Kunin natin ang BIRD bilang isa sa pinaka-functional at maginhawang BGP daemon.

IP

Sa pag-block sa pamamagitan ng IP, malinaw ang lahat: inaanunsyo lang namin ang lahat ng naka-block na IP gamit ang VPS. Ang problema ay mayroong humigit-kumulang 600 libong mga subnet sa listahan na ibinabalik ng API, at ang karamihan sa mga ito ay /32 na mga host. Ang bilang ng mga ruta na ito ay maaaring malito ang mga mahihinang router ng kliyente.

Samakatuwid, kapag pinoproseso ang listahan, napagpasyahan na buod hanggang sa network / 24 kung mayroon itong 2 o higit pang mga host. Kaya, ang bilang ng mga ruta ay nabawasan sa ~100 libo. Susunod ang script para dito.

Domains

Ito ay mas kumplikado at may ilang mga paraan. Halimbawa, maaari kang mag-install ng transparent na Squid sa bawat client router at gawin ang HTTP interception doon at sumilip sa TLS handshake upang makuha ang hiniling na URL sa unang kaso at ang domain mula sa SNI sa pangalawa.

Ngunit dahil sa lahat ng uri ng newfangled na TLS1.3 + eSNI, ang pagsusuri ng HTTPS ay nagiging hindi gaanong makatotohanan araw-araw. Oo, at ang imprastraktura sa panig ng kliyente ay nagiging mas kumplikado - kakailanganin mong gumamit ng hindi bababa sa OpenWRT.

Samakatuwid, nagpasya akong tahakin ang landas ng pagharang ng mga tugon sa mga query sa DNS. Dito, masyadong, ang anumang DNS-over-TLS / HTTPS ay nagsisimulang mag-hover sa iyong ulo, ngunit maaari naming (sa ngayon) kontrolin ang bahaging ito sa kliyente - maaaring i-disable ito o gamitin ang iyong sariling server para sa DoT / DoH.

Paano maharang ang DNS?

Dito, masyadong, maaaring mayroong ilang mga diskarte.

  • Pagharang sa trapiko ng DNS sa pamamagitan ng PCAP o NFLOG
    Ang parehong mga paraan ng pagharang ay ipinatupad sa utility sidmat. Ngunit ito ay hindi suportado sa loob ng mahabang panahon at ang pag-andar ay napaka-primitive, kaya kailangan mo pa ring magsulat ng isang harness para dito.
  • Pagsusuri ng mga log ng DNS server
    Sa kasamaang palad, ang mga recursor na kilala ko ay hindi nakakapag-log ng mga tugon, ngunit mga kahilingan lamang. Sa prinsipyo, ito ay lohikal, dahil, hindi katulad ng mga kahilingan, ang mga sagot ay may isang kumplikadong istraktura at mahirap isulat ang mga ito sa anyo ng teksto.
  • DNSTap
    Sa kabutihang palad, marami na sa kanila ang sumusuporta sa DNSTap para sa layuning ito.

Ano ang DNSTap?

Bypass ILV blocking gamit ang DNSTap at BGP

Ito ay isang client-server protocol batay sa Protocol Buffers at Frame Stream para sa paglilipat mula sa isang DNS server patungo sa isang collector ng mga structured DNS query at mga tugon. Sa pangkalahatan, ang DNS server ay nagpapadala ng query at response metadata (uri ng mensahe, client/server IP, atbp.) kasama ang kumpletong mga DNS message sa (binary) na form kung saan ito gumagana sa kanila sa network.

Mahalagang maunawaan na sa paradigm ng DNSTap, ang DNS server ay kumikilos bilang isang kliyente at ang kolektor ay gumaganap bilang isang server. Iyon ay, ang DNS server ay kumokonekta sa kolektor, at hindi kabaligtaran.

Ngayon ang DNSTap ay suportado sa lahat ng sikat na DNS server. Ngunit, halimbawa, ang BIND sa maraming mga distribusyon (tulad ng Ubuntu LTS) ay madalas na binuo para sa ilang kadahilanan nang walang suporta nito. Kaya huwag na tayong mag-abala sa muling pagsasama-sama, ngunit kumuha ng mas magaan at mas mabilis na recursor - Unbound.

Paano mahuli ang DNSTap?

Mayroon ilang numero Mga utility ng CLI para sa pagtatrabaho sa isang stream ng mga kaganapan sa DNSTap, ngunit hindi angkop ang mga ito para sa paglutas ng aming problema. Samakatuwid, nagpasya akong mag-imbento ng aking sariling bisikleta na gagawin ang lahat ng kinakailangan: dnstap-bgp

Algoritmo ng trabaho:

  • Kapag inilunsad, naglo-load ito ng listahan ng mga domain mula sa isang text file, binabaligtad ang mga ito (habr.com -> com.habr), hindi kasama ang mga sirang linya, duplicate at subdomain (ibig sabihin, kung naglalaman ang listahan ng habr.com at www.habr.com, ilo-load lang ang una) at bubuo ng prefix tree para sa mabilis na paghahanap sa listahang ito
  • Nagsisilbing DNSTap server, naghihintay ito ng koneksyon mula sa isang DNS server. Sa prinsipyo, sinusuportahan nito ang parehong mga UNIX at TCP socket, ngunit ang mga DNS server na alam ko ay maaari lamang gumamit ng mga UNIX socket
  • Ang mga papasok na DNSTap packet ay unang na-deserialize sa isang Protobuf structure, at pagkatapos ay ang binary DNS message mismo, na matatagpuan sa isa sa mga Protobuf field, ay na-parse sa antas ng DNS RR records
  • Sinusuri kung ang hiniling na host (o ang parent domain nito) ay nasa load na listahan, kung hindi, ang tugon ay hindi papansinin
  • Ang mga A/AAAA/CNAME RR lang ang pinipili mula sa tugon at ang mga kaukulang IPv4/IPv6 address ay kinukuha mula sa kanila
  • Ang mga IP address ay naka-cache na may configurable TTL at ina-advertise sa lahat ng naka-configure na BGP peer
  • Kapag nakatanggap ng tugon na tumuturo sa isang naka-cache na IP, ina-update ang TTL nito
  • Pagkatapos mag-expire ang TTL, ang entry ay tinanggal mula sa cache at mula sa mga anunsyo ng BGP

Karagdagang pag-andar:

  • Muling binabasa ang listahan ng mga domain ng SIGHUP
  • Pagpapanatiling naka-sync ang cache sa iba pang mga pagkakataon dnstap-bgp sa pamamagitan ng HTTP/JSON
  • I-duplicate ang cache sa disk (sa database ng BoltDB) upang maibalik ang mga nilalaman nito pagkatapos ng pag-restart
  • Suporta para sa paglipat sa ibang namespace ng network (kung bakit ito kinakailangan ay ilalarawan sa ibaba)
  • suporta sa IPv6

Mga Limitasyon:

  • Hindi pa sinusuportahan ang mga domain ng IDN
  • Ilang mga setting ng BGP

kinolekta ko RPM at DEB mga pakete para sa madaling pag-install. Dapat gumana sa lahat ng medyo kamakailang OS na may systemd. wala silang anumang dependencies.

Ang pamamaraan

Kaya, simulan natin ang pagsasama-sama ng lahat ng mga sangkap. Bilang isang resulta, dapat tayong makakuha ng isang bagay tulad ng topology ng network na ito:
Bypass ILV blocking gamit ang DNSTap at BGP

Ang lohika ng trabaho, sa palagay ko, ay malinaw mula sa diagram:

  • Na-configure ng kliyente ang aming server bilang DNS, at ang mga query sa DNS ay dapat ding dumaan sa VPN. Ito ay kinakailangan para hindi magamit ng provider ang DNS interception para harangan.
  • Kapag binubuksan ang site, nagpapadala ang kliyente ng DNS query tulad ng "ano ang mga IP ng xxx.org"
  • walang tali niresolba ang xxx.org (o kinuha ito mula sa cache) at nagpapadala ng tugon sa kliyente na "ang xxx.org ay may ganito at ganoong IP", na kino-duplicate ito nang magkatulad sa pamamagitan ng DNSTap
  • dnstap-bgp inihayag ang mga address na ito sa BIRD sa pamamagitan ng BGP kung ang domain ay nasa naka-block na listahan
  • BIRD nag-a-advertise ng ruta sa mga IP na ito gamit ang next-hop self router ng kliyente
  • Ang mga kasunod na packet mula sa kliyente hanggang sa mga IP na ito ay dumadaan sa tunnel

Sa server, para sa mga ruta sa mga naka-block na site, gumagamit ako ng isang hiwalay na talahanayan sa loob ng BIRD at hindi ito sumasalubong sa OS sa anumang paraan.

Ang scheme na ito ay may disbentaha: ang unang SYN packet mula sa kliyente, malamang, ay magkakaroon ng oras upang umalis sa pamamagitan ng domestic provider. ang ruta ay hindi inihayag kaagad. At dito posible ang mga opsyon depende sa kung paano ginagawa ng provider ang pagharang. Kung magpapa-traffic lang siya, wala namang problema. At kung ire-redirect niya ito sa ilang DPI, kung gayon (theoretically) ang mga espesyal na epekto ay posible.

Posible rin na hindi iginagalang ng mga kliyente ang mga himala ng DNS TTL, na maaaring maging sanhi ng paggamit ng kliyente ng ilang mga lipas na entry mula sa bulok nitong cache sa halip na magtanong sa Unbound.

Sa pagsasagawa, hindi nagdulot ng mga problema sa akin ang una o ang pangalawa, ngunit maaaring mag-iba ang iyong mileage.

Pag-tune ng Server

Para madaling gumulong, sumulat ako papel para sa Ansible. Maaari nitong i-configure ang parehong mga server at kliyente batay sa Linux (idinisenyo para sa mga distribusyon na nakabatay sa deb). Ang lahat ng mga setting ay medyo halata at naka-set in imbentaryo.yml. Ang papel na ito ay pinutol mula sa aking malaking playbook, kaya maaaring naglalaman ito ng mga error - hilahin ang mga kahilingan maligayang pagdating πŸ™‚

Dumaan tayo sa mga pangunahing bahagi.

BGP

Kapag nagpapatakbo ng dalawang BGP daemon sa parehong host, isang pangunahing problema ang lumitaw: BIRD ay hindi nais na simulan ang BGP peering sa localhost (o sa anumang lokal na interface). Mula sa salita sa lahat. Ang pag-googling at pagbabasa ng mga mailing-list ay hindi nakatulong, inaangkin nila na ito ay ayon sa disenyo. Marahil ay may ilang paraan, ngunit hindi ko ito nakita.

Maaari mong subukan ang isa pang BGP na daemon, ngunit gusto ko ang BIRD at ito ay ginagamit ko kahit saan, hindi ko nais na gumawa ng mga entity.

Samakatuwid, itinago ko ang dnstap-bgp sa loob ng namespace ng network, na konektado sa ugat sa pamamagitan ng interface ng veth: ito ay tulad ng isang pipe, ang mga dulo nito ay nakadikit sa iba't ibang mga namespace. Sa bawat isa sa mga dulong ito, nagsabit kami ng mga pribadong p2p IP address na hindi lalampas sa host, upang maging anuman ang mga ito. Ito ang parehong mekanismo na ginagamit upang ma-access ang mga proseso sa loob minamahal ng lahat Docker at iba pang mga lalagyan.

Para dito ito ay isinulat iskrip at ang pag-andar na inilarawan sa itaas para sa pag-drag sa iyong sarili sa pamamagitan ng buhok patungo sa isa pang namespace ay idinagdag sa dnstap-bgp. Dahil dito, dapat itong patakbuhin bilang ugat o ibigay sa CAP_SYS_ADMIN binary sa pamamagitan ng setcap command.

Halimbawang script para sa paglikha ng 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",
]

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

Bilang default, sa Ubuntu, ang Unbound binary ay na-clamp ng AppArmor profile, na nagbabawal dito na kumonekta sa lahat ng uri ng DNSTap socket. Maaari mong tanggalin ang profile na ito, o huwag paganahin ito:

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

Ito ay malamang na idagdag sa playbook. Ito ay perpekto, siyempre, upang itama ang profile at mag-isyu ng mga kinakailangang karapatan, ngunit ako ay masyadong tamad.

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

Pag-download at pagproseso ng mga listahan

Script para sa pag-download at pagproseso ng isang listahan ng mga IP address
Ito ay nagda-download ng listahan, sums up sa prefix pfx. Sa huwag_magdagdag ΠΈ dont_summarize maaari mong sabihin sa mga IP at network na laktawan o hindi buod. kailangan ko ito. nasa blocklist ang subnet ng VPS ko πŸ™‚

Ang nakakatawang bagay ay hinaharangan ng RosKomSvoboda API ang mga kahilingan gamit ang default na ahente ng gumagamit ng Python. Mukhang nakuha ng script-kiddy. Samakatuwid, binago namin ito sa Ognelis.

Sa ngayon, gumagana lang ito sa IPv4. ang bahagi ng IPv6 ay maliit, ngunit ito ay madaling ayusin. Maliban kung kailangan mong gumamit din ng 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)

Script upang i-update
Pinapatakbo ko ito sa korona isang beses sa isang araw, marahil ito ay nagkakahalaga ng paghila nito tuwing 4 na oras. ito, sa aking opinyon, ay ang panahon ng pag-renew na kinakailangan ng RKN mula sa mga tagapagkaloob. Dagdag pa, mayroon silang ilang iba pang napaka-kagyat na pagharang, na maaaring dumating nang mas mabilis.

Ginagawa ang sumusunod:

  • Pinapatakbo ang unang script at ina-update ang listahan ng mga ruta (rkn_routes.list) para sa BIRD
  • I-reload ang BIRD
  • Ina-update at nililinis ang listahan ng mga domain para sa dnstap-bgp
  • I-reload ang 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

Ang mga ito ay isinulat nang walang gaanong pag-iisip, kaya kung nakakita ka ng isang bagay na maaaring mapabuti - pumunta para dito.

Setup ng kliyente

Dito magbibigay ako ng mga halimbawa para sa mga router ng Linux, ngunit sa kaso ng Mikrotik / Cisco dapat itong maging mas madali.

Una, nag-set up kami ng BIRD:

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

Kaya, i-synchronize namin ang mga rutang natanggap mula sa BGP sa kernel routing table number 222.

Pagkatapos nito, sapat na upang hilingin sa kernel na tingnan ang plate na ito bago tingnan ang default:

# 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

Lahat, nananatili itong i-configure ang DHCP sa router upang ipamahagi ang tunnel IP address ng server bilang DNS, at handa na ang scheme.

Mga hangganan

Gamit ang kasalukuyang algorithm para sa pagbuo at pagproseso ng listahan ng mga domain, kabilang dito, bukod sa iba pang mga bagay, youtube.com at ang mga CDN nito.

At ito ay humahantong sa katotohanan na ang lahat ng mga video ay dadaan sa VPN, na maaaring makabara sa buong channel. Marahil ito ay nagkakahalaga ng pag-compile ng isang listahan ng mga sikat na domain-mga pagbubukod na humaharang sa RKN sa ngayon, ang lakas ng loob ay manipis. At laktawan ang mga ito kapag nag-parse.

Konklusyon

Ang inilarawang paraan ay nagbibigay-daan sa iyo na i-bypass ang halos anumang pagharang na kasalukuyang ipinapatupad ng mga provider.

Sa prinsipyo, dnstap-bgp maaaring gamitin para sa anumang iba pang layunin kung saan kailangan ang ilang antas ng kontrol sa trapiko batay sa domain name. Tandaan lamang na sa ating panahon, ang isang libong site ay maaaring mag-hang sa parehong IP address (sa likod ng ilang Cloudflare, halimbawa), kaya ang pamamaraang ito ay medyo mababa ang katumpakan.

Ngunit para sa mga pangangailangan ng pag-bypass ng mga kandado, ito ay sapat na.

Mga karagdagan, pag-edit, mga kahilingan sa paghila - maligayang pagdating!

Pinagmulan: www.habr.com

Magdagdag ng komento