Pagse-set up ng BGP para i-bypass ang pag-block, o "Paano ako tumigil sa takot at umibig sa RKN"

Well, okay, tungkol sa "mahal" ay isang pagmamalabis. Sa halip, "nakakasamang mabuhay kasama."

Tulad ng alam mo, mula noong Abril 16, 2018, hinaharangan ng Roskomnadzor ang pag-access sa mga mapagkukunan sa Internet sa napakalawak na mga stroke, pagdaragdag sa "Pinag-isang Rehistro ng mga pangalan ng domain, mga index ng pahina ng mga site sa Internet at mga address ng network na nagpapahintulot sa pagtukoy ng mga site. sa Internet," na naglalaman ng impormasyon na ipinagbabawal ang pamamahagi sa Russian Federation" (sa teksto - isang rehistro lamang) ng /10 minsan. Bilang resulta, ang mga mamamayan ng Russian Federation at mga negosyo ay naghihirap, na nawalan ng access sa ganap na legal na mga mapagkukunan na kailangan nila.

Pagkatapos kong sabihin sa mga komento sa isa sa mga artikulo sa HabrΓ© na handa akong tulungan ang mga biktima sa pag-set up ng bypass scheme, maraming tao ang lumapit sa akin na humihingi ng ganoong tulong. Kapag nagtrabaho ang lahat para sa kanila, inirerekomenda ng isa sa kanila na ilarawan ang pamamaraan sa isang artikulo. Pagkatapos ng ilang pag-iisip, nagpasya akong basagin ang aking katahimikan sa site at subukang magsulat ng isang bagay sa pagitan ng isang proyekto at isang post sa Facebook, i.e. habrapost. Ang resulta ay nasa harap mo.

Pagtanggi sa pananagutan

Dahil hindi masyadong legal na mag-publish ng mga paraan upang i-bypass ang pag-block sa pag-access sa impormasyon na ipinagbabawal sa teritoryo ng Russian Federation, ang layunin ng artikulong ito ay pag-usapan ang tungkol sa isang paraan na nagbibigay-daan sa iyo upang i-automate ang pagkakaroon ng access sa mga mapagkukunan na pinapayagan sa teritoryo ng Russian Federation, ngunit dahil sa mga aksyon ng isang tao ay hindi direktang naa-access sa pamamagitan ng iyong provider. At ang pag-access sa iba pang mga mapagkukunan na nakuha bilang isang resulta ng mga aksyon mula sa artikulo ay isang kapus-palad na epekto at hindi sa anumang paraan ang layunin ng artikulo.

Gayundin, dahil pangunahin akong isang arkitekto ng network ayon sa propesyon, bokasyon at landas ng buhay, ang programming at Linux ay hindi ang aking malakas na punto. Samakatuwid, siyempre, ang mga script ay maaaring maisulat nang mas mahusay, ang mga isyu sa seguridad sa VPS ay maaaring malutas nang mas malalim, atbp. Ang iyong mga mungkahi ay tatanggapin nang may pasasalamat, kung ang mga ito ay sapat na detalyado - ikalulugod kong idagdag ang mga ito sa teksto ng artikulo.

Tl; DR

I-automate namin ang pag-access sa mga mapagkukunan sa pamamagitan ng iyong umiiral na tunnel gamit ang isang kopya ng registry at ang BGP protocol. Ang layunin ay alisin ang lahat ng trapikong naka-address sa mga naka-block na mapagkukunan sa tunnel. Minimum na mga paliwanag, karamihan sa mga sunud-sunod na tagubilin.

Ano ang kailangan mo para dito?

Sa kasamaang palad, ang post na ito ay hindi para sa lahat. Upang magamit ang diskarteng ito, kakailanganin mong pagsamahin ang ilang mga elemento:

  1. Dapat ay mayroon kang linux server sa isang lugar sa labas ng blocking field. O hindi bababa sa pagnanais na magkaroon ng ganoong server - sa kabutihang palad ay nagkakahalaga na ito mula $9/taon, at posibleng mas mababa. Ang pamamaraan ay angkop din kung mayroon kang isang hiwalay na VPN tunnel, kung gayon ang server ay maaaring matatagpuan sa loob ng blocking field.
  2. Dapat sapat na matalino ang iyong router upang magawa ito
    • anumang kliyente ng VPN na gusto mo (mas gusto ko ang OpenVPN, ngunit maaari itong maging PPTP, L2TP, GRE+IPSec o anumang iba pang opsyon na lumilikha ng interface ng tunnel);
    • BGPv4 protocol. Na nangangahulugan na para sa SOHO maaaring ito ay Mikrotik o anumang router na may OpenWRT/LEDE/katulad na custom firmware na nagbibigay-daan sa iyong mag-install ng Quagga o Bird. Hindi rin ipinagbabawal ang paggamit ng PC router. Sa kaso ng isang negosyo, hanapin ang suporta ng BGP sa dokumentasyon para sa iyong border router.
  3. Dapat kang magkaroon ng pag-unawa sa paggamit ng Linux at mga teknolohiya sa networking, kabilang ang BGP protocol. O hindi bababa sa nais na makakuha ng ganoong ideya. Dahil hindi pa ako handang yakapin ang kalawakan sa pagkakataong ito, kailangan mong pag-aralan ang ilang aspeto na hindi mo maintindihan nang mag-isa. Gayunpaman, siyempre, sasagutin ko ang mga partikular na tanong sa mga komento at malamang na ako lang ang sasagot, kaya huwag mag-atubiling magtanong.

Ano ang ginamit sa halimbawa

  • Isang kopya ng rehistro - mula sa https://github.com/zapret-info/z-i 
  • VPS - Ubuntu 16.04
  • Serbisyo sa pagruruta - ibon 1.6.3   
  • Router - Mikrotik hAP ac
  • Mga gumaganang folder - dahil nagtatrabaho kami bilang root, karamihan sa lahat ay matatagpuan sa home folder ng root. Ayon sa pagkakabanggit:
    • /root/blacklist - gumaganang folder na may script ng compilation
    • /root/zi - kopya ng registry mula sa github
    • /etc/bird - karaniwang folder para sa mga setting ng serbisyo ng ibon
  • Ang panlabas na IP address ng VPS na may routing server at ang tunnel termination point ay 194.165.22.146, ASN 64998; panlabas na IP address ng router - 81.177.103.94, ASN 64999
  • Ang mga IP address sa loob ng tunnel ay 172.30.1.1 at 172.30.1.2, ayon sa pagkakabanggit.

Pagse-set up ng BGP para i-bypass ang pag-block, o "Paano ako tumigil sa takot at umibig sa RKN"

Siyempre, maaari mong gamitin ang anumang iba pang mga router, operating system at mga produkto ng software, pag-aayos ng solusyon sa kanilang lohika.

Sa madaling sabi - ang lohika ng solusyon

  1. Mga aksyong paghahanda
    1. Pagkuha ng VPS
    2. Pagtaas ng tunnel mula sa router patungo sa VPS
  2. Nakatanggap kami at regular na nag-a-update ng kopya ng rehistro
  3. Pag-install at pag-configure ng serbisyo sa pagruruta
  4. Gumagawa kami ng listahan ng mga static na ruta para sa serbisyo sa pagruruta batay sa registry
  5. Ikinonekta namin ang router sa serbisyo at i-configure ang pagpapadala ng lahat ng trapiko sa pamamagitan ng tunnel.

Ang aktwal na solusyon

Mga aksyong paghahanda

Mayroong maraming mga serbisyo sa Internet na nagbibigay ng VPS para sa lubhang makatwirang mga presyo. Sa ngayon ay natagpuan ko at ginagamit ko ang opsyon para sa $9/taon, ngunit kahit na hindi ka masyadong mag-abala, maraming mga opsyon para sa 1E/buwan sa bawat sulok. Ang tanong ng pagpili ng VPS ay higit pa sa saklaw ng artikulong ito, kaya kung ang isang tao ay hindi nakakaintindi ng isang bagay tungkol dito, magtanong sa mga komento.

Kung gumagamit ka ng VPS hindi lamang para sa serbisyo sa pagruruta, kundi pati na rin upang wakasan ang isang lagusan dito, kailangan mong itaas ang tunnel na ito at, halos tiyak, i-configure ang NAT para dito. Mayroong isang malaking bilang ng mga tagubilin sa mga pagkilos na ito sa Internet, hindi ko uulitin ang mga ito dito. Ang pangunahing kinakailangan para sa naturang tunnel ay dapat itong lumikha ng isang hiwalay na interface sa iyong router na sumusuporta sa tunnel patungo sa VPS. Karamihan sa mga ginagamit na teknolohiya ng VPN ay nakakatugon sa kinakailangang ito - halimbawa, ang OpenVPN sa tun mode ay perpekto.

Pagkuha ng kopya ng rehistro

Tulad ng sinabi ni Jabrail, "Siya na humahadlang sa atin ay tutulungan tayo." Dahil ang RKN ay gumagawa ng isang rehistro ng mga ipinagbabawal na mapagkukunan, isang kasalanan na hindi gamitin ang rehistrong ito upang malutas ang aming problema. Makakatanggap kami ng kopya ng registry mula sa github.

Pumunta kami sa iyong server ng Linux, nahuhulog sa konteksto ng ugat (sudo su -) at i-install ang git kung hindi pa ito naka-install.

apt install git

Pumunta sa iyong home directory at kumuha ng kopya ng registry.

cd ~ && git clone --depth=1 https://github.com/zapret-info/z-i 

Nag-set up kami ng cron update (Ginagawa ko ito nang isang beses bawat 20 minuto, ngunit maaari kang pumili ng anumang agwat na interesado ka). Upang gawin ito, inilunsad namin crontab -e at idagdag ang sumusunod na linya dito:

*/20 * * * * cd ~/z-i && git pull && git gc

Ikinonekta namin ang isang hook na lilikha ng mga file para sa serbisyo sa pagruruta pagkatapos i-update ang registry. Upang gawin ito, lumikha ng isang file /root/zi/.git/hooks/post-merge na may sumusunod na nilalaman:

#!/usr/bin/env bash
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
    echo "$changed_files" | grep --quiet "$1" && eval "$2"
}
check_run dump.csv "/root/blacklist/makebgp"

at huwag kalimutang gawin itong executable

chmod +x /root/z-i/.git/hooks/post-merge

Gagawa kami ng makebgp script na tinutukoy ng hook sa ibang pagkakataon.

Pag-install at pag-configure ng serbisyo sa pagruruta

I-install ang ibon. Sa kasamaang palad, ang bersyon ng ibon na kasalukuyang naka-post sa mga repositoryo ng Ubuntu ay maihahambing sa pagiging bago sa mga dumi ng Archaeopteryx, kaya kailangan muna nating idagdag ang opisyal na PPA ng mga developer ng software sa system.

add-apt-repository ppa:cz.nic-labs/bird
apt update
apt install bird

Pagkatapos nito, agad naming hindi pinagana ang ibon para sa IPv6 - hindi namin ito kakailanganin sa pag-install na ito.

systemctl stop bird6
systemctl disable bird6

Nasa ibaba ang isang minimalistic na file ng pagsasaayos ng serbisyo ng ibon (/etc/bird/bird.conf), na sapat na para sa amin (at ipinapaalala ko sa iyo muli na walang sinuman ang nagbabawal sa pagbuo at pag-tune ng ideya upang umangkop sa iyong sariling mga pangangailangan)

log syslog all;
router id 172.30.1.1;

protocol kernel {
        scan time 60;
        import none;
#       export all;   # Actually insert routes into the kernel routing table
}

protocol device {
        scan time 60;
}

protocol direct {
        interface "venet*", "tun*"; # Restrict network interfaces it works with
}

protocol static static_bgp {
        import all;
        include "pfxlist.txt";
        #include "iplist.txt";
}

protocol bgp OurRouter {
        description "Our Router";
        neighbor 81.177.103.94 as 64999;
        import none;
        export where proto = "static_bgp";
        local as 64998;
        passive off;
        multihop;
}

router id - router identifier, na biswal na mukhang isang IPv4 address, ngunit hindi isa. Sa aming kaso, maaari itong maging anumang 32-bit na numero sa format ng IPv4 address, ngunit magandang paraan upang eksaktong ipahiwatig ang IPv4 address ng iyong device (sa kasong ito, VPS).

Tinutukoy ng direktang protocol kung aling mga interface ang gagana sa proseso ng pagruruta. Ang halimbawa ay nagbibigay ng ilang halimbawa ng mga pangalan, maaari kang magdagdag ng iba. Maaari mo lamang tanggalin ang linya; sa kasong ito, pakikinggan ng server ang lahat ng magagamit na mga interface na may IPv4 address.

protocol static ang aming magic na naglo-load ng mga listahan ng mga prefix at IP address (na talagang /32 prefix, siyempre) mula sa mga file para sa kasunod na anunsyo. Kung saan nanggaling ang mga listahang ito ay tatalakayin sa ibaba. Pakitandaan na ang paglo-load ng mga IP address ay nikomento bilang default, ang dahilan nito ay ang malaking dami ng pag-upload. Para sa paghahambing, sa oras ng pagsulat, mayroong 78 na linya sa listahan ng mga prefix, at 85898 sa listahan ng mga IP address. Lubos kong inirerekomenda ang pagsisimula at pag-debug lamang sa listahan ng mga prefix, at kung paganahin o hindi ang pag-load ng IP sa ang hinaharap ay nasa iyo na magpasya pagkatapos mag-eksperimento sa iyong router. Hindi lahat ng mga ito ay madaling digest ng 85 thousand entries sa routing table.

protocol bgp, sa katunayan, set up bgp peering sa iyong router. Ang IP address ay ang address ng panlabas na interface ng router (o ang address ng tunnel interface sa gilid ng router), 64998 at 64999 ang mga numero ng mga autonomous system. Sa kasong ito, maaari silang italaga sa anyo ng anumang 16-bit na numero, ngunit magandang kasanayan na gumamit ng mga numero ng AS mula sa pribadong hanay na tinukoy ng RFC6996 - 64512-65534 kasama (mayroong format para sa 32-bit na mga ASN, ngunit sa aming kaso ito ay tiyak na overkill). Ang inilarawang configuration ay gumagamit ng eBGP peering, kung saan ang mga numero ng mga autonomous system ng routing service at ang router ay dapat na magkaiba.

Tulad ng nakikita mo, kailangang malaman ng serbisyo ang IP address ng router, kaya kung mayroon kang dynamic o non-routable private (RFC1918) o shared (RFC6598) address, wala kang opsyon na itaas ang peering sa external interface, ngunit gagana pa rin ang serbisyo sa loob ng tunnel.

Malinaw din na mula sa isang serbisyo maaari kang magbigay ng mga ruta sa maraming iba't ibang mga router - i-duplicate lamang ang mga setting para sa kanila sa pamamagitan ng pagkopya sa seksyon ng protocol bgp at pagbabago ng IP address ng kapitbahay. Iyon ang dahilan kung bakit ipinapakita ng halimbawa ang mga setting para sa pagsilip sa labas ng tunnel, bilang ang pinaka-unibersal. Madaling alisin ang mga ito sa tunnel sa pamamagitan ng pagbabago ng mga IP address sa mga setting nang naaayon.

Pinoproseso ang registry para sa serbisyo sa pagruruta

Ngayon kailangan namin, sa katunayan, upang lumikha ng mga listahan ng mga prefix at IP address, na binanggit sa protocol static sa nakaraang yugto. Upang gawin ito, kinuha namin ang registry file at ginagawa ang mga file na kailangan namin mula dito gamit ang sumusunod na script, na inilagay sa /root/blacklist/makebgp

#!/bin/bash
cut -d";" -f1 /root/z-i/dump.csv| tr '|' 'n' |  tr -d ' ' > /root/blacklist/tmpaddr.txt
cat /root/blacklist/tmpaddr.txt | grep / | sed 's_.*_route & reject;_' > /etc/bird/pfxlist.txt
cat /root/blacklist/tmpaddr.txt | sort | uniq | grep -Eo "([0-9]{1,3}[.]){3}[0-9]{1,3}" | sed 's_.*_route &/32 reject;_' > /etc/bird/iplist.txt
/etc/init.d/bird reload
logger 'bgp list compiled'

Huwag kalimutang gawin itong executable

chmod +x /root/blacklist/makebgp

Ngayon ay maaari mo na itong patakbuhin nang manu-mano at obserbahan ang hitsura ng mga file sa /etc/bird.

Malamang, ang ibon ay hindi gumagana para sa iyo sa sandaling ito, dahil sa nakaraang yugto hiniling mo ito upang maghanap ng mga file na hindi pa umiiral. Samakatuwid, inilunsad namin ito at tinitingnan kung nagsimula na ito:

systemctl start bird
birdc show route

Ang output ng pangalawang utos ay dapat magpakita ng humigit-kumulang 80 mga tala (ito ay sa ngayon, ngunit kapag na-set up mo ito, ang lahat ay depende sa kasigasigan ng RKN sa pagharang sa mga network) tulad nito:

54.160.0.0/12      unreachable [static_bgp 2018-04-19] * (200)

Koponan

birdc show protocol

ay magpapakita ng katayuan ng mga protocol sa loob ng serbisyo. Hanggang sa na-configure mo ang router (tingnan ang susunod na punto), ang OurRouter protocol ay nasa start state (Connect o Active phase), at pagkatapos ng matagumpay na koneksyon mapupunta ito sa up state (Established phase). Halimbawa, sa aking system ang output ng command na ito ay ganito ang hitsura:

BIRD 1.6.3 ready.
name     proto    table    state  since       info
kernel1  Kernel   master   up     2018-04-19
device1  Device   master   up     2018-04-19
static_bgp Static   master   up     2018-04-19
direct1  Direct   master   up     2018-04-19
RXXXXXx1 BGP      master   up     13:10:22    Established
RXXXXXx2 BGP      master   up     2018-04-24  Established
RXXXXXx3 BGP      master   start  2018-04-22  Connect       Socket: Connection timed out
RXXXXXx4 BGP      master   up     2018-04-24  Established
RXXXXXx5 BGP      master   start  2018-04-24  Passive

Pagkonekta ng router

Marahil ay pagod na ang lahat sa pagbabasa ng footcloth na ito, ngunit lakasan ang loob - malapit na ang wakas. Bukod dito, sa seksyong ito hindi ako makakapagbigay ng sunud-sunod na mga tagubilin - ito ay magkakaiba para sa bawat tagagawa.

Gayunpaman, maaari kong ipakita sa iyo ang ilang mga halimbawa. Ang pangunahing lohika ay itaas ang BGP peering at magtalaga ng nexthop sa lahat ng natanggap na prefix, na tumuturo sa aming tunnel (kung kailangan naming magpadala ng trapiko sa pamamagitan ng p2p interface) o ang nexthop IP address kung ang trapiko ay mapupunta sa ethernet).

Halimbawa, sa Mikrotik sa RouterOS ito ay malulutas bilang mga sumusunod

/routing bgp instance set default as=64999 ignore-as-path-len=yes router-id=172.30.1.2
/routing bgp peer add in-filter=dynamic-in multihop=yes name=VPS remote-address=194.165.22.146 remote-as=64998 ttl=default
/routing filter add action=accept chain=dynamic-in protocol=bgp comment="Set nexthop" set-in-nexthop=172.30.1.1

at sa Cisco IOS - tulad nito

router bgp 64999
  neighbor 194.165.22.146 remote-as 64998
  neighbor 194.165.22.146 route-map BGP_NEXT_HOP in
  neighbor 194.165.22.146 ebgp-multihop 250
!
route-map BGP_NEXT_HOP permit 10
  set ip next-hop 172.30.1.1

Kung ang parehong tunnel ay ginagamit para sa BGP peering at para sa pagpapadala ng kapaki-pakinabang na trapiko, hindi kinakailangang itakda ang nexthop; ito ay itatakda nang tama gamit ang protocol. Ngunit kung itatakda mo ito nang manu-mano, hindi rin ito magpapalala.

Sa iba pang mga platform, kakailanganin mong malaman ang pagsasaayos sa iyong sarili, ngunit kung mayroon kang anumang mga paghihirap, sumulat sa mga komento, susubukan kong tumulong.

Matapos magsimula ang iyong session sa BGP, ang mga ruta patungo sa malalaking network ay dumating at na-install sa talahanayan, ang trapiko ay dumaloy sa mga address mula sa kanila at ang kaligayahan ay malapit na, maaari kang bumalik sa serbisyo ng ibon at subukang i-uncomment ang entry doon na nag-uugnay sa listahan ng mga IP address, isagawa pagkatapos nito

systemctl reload bird

at tingnan kung paano inilipat ng iyong router ang 85 libong rutang ito. Maging handa sa pag-unplug at pag-isipan kung ano ang gagawin dito :)

Sa kabuuan

Puro theoretically, pagkatapos makumpleto ang mga hakbang na inilarawan sa itaas, mayroon ka na ngayong isang serbisyo na awtomatikong nagre-redirect ng trapiko sa mga IP address na pinagbawalan sa Russian Federation lampas sa filtering system.

Siyempre, maaari itong mapabuti. Halimbawa, medyo madali ang pagbubuod ng isang listahan ng mga IP address gamit ang perl o python solution. Ang isang simpleng Perl script na gumagawa nito gamit ang Net::CIDR::Lite ay ginagawang 85 (hindi libo), ngunit, siyempre, sumasaklaw sa mas malaking hanay ng mga address kaysa sa na-block.

Dahil ang serbisyo ay tumatakbo sa ikatlong antas ng modelong ISO/OSI, hindi ka nito maililigtas mula sa pagharang sa isang site/pahina kung ito ay nalutas sa maling address tulad ng naitala sa registry. Ngunit kasama ng registry, ang file na nxdomain.txt ay dumating mula sa github, na sa ilang mga stroke ng script ay madaling nagiging mapagkukunan ng mga address para sa, halimbawa, ang SwitchyOmega plugin sa Chrome.

Kinakailangan din na banggitin na ang solusyon ay nangangailangan ng karagdagang hasa kung ikaw ay hindi lamang isang gumagamit ng Internet, ngunit nag-publish din ng ilang mga mapagkukunan sa iyong sarili (halimbawa, ang isang website o mail server ay tumatakbo sa koneksyon na ito). Gamit ang paraan ng router, kinakailangan na mahigpit na itali ang papalabas na trapiko mula sa serbisyong ito sa iyong pampublikong address, kung hindi, mawawalan ka ng koneksyon sa mga mapagkukunang iyon na sakop ng listahan ng mga prefix na natanggap ng router.

Kung mayroon kang anumang mga katanungan, magtanong, handa akong sagutin.

UPD. Salamat navion ΠΈ TerAnYu para sa mga parameter para sa git na nagbibigay-daan sa pagbawas ng dami ng pag-download.

UPD2. Mga kasamahan, mukhang nagkamali ako sa hindi pagdaragdag ng mga tagubilin para sa pag-set up ng tunnel sa pagitan ng VPS at ng router sa artikulo. Maraming katanungan ang itinaas nito.
Kung sakali, mapapansin kong muli na bago simulan ang gabay na ito, na-configure mo na ang isang VPN tunnel sa direksyon na kailangan mo at nasuri ang pag-andar nito (halimbawa, sa pamamagitan ng pagliko ng trapiko doon bilang default o statically). Kung hindi mo pa nakumpleto ang yugtong ito, hindi makatuwirang sundin ang mga hakbang sa artikulo. Wala pa akong sariling text dito, ngunit kung mag-google ka sa "pag-set up ng OpenVPN server" kasama ang pangalan ng operating system na naka-install sa VPS, at "pag-set up ng OpenVPN client" na may pangalan ng iyong router , malamang na makakahanap ka ng ilang artikulo sa paksang ito, kabilang ang sa HabrΓ©.

UPD3. Hindi isinakripisyo Sumulat ako ng isang code na nagpapalit ng dump.csv sa isang resultang file para sa ibon na may opsyonal na pagbubuod ng mga IP address. Samakatuwid, ang seksyong "Pagproseso ng pagpapatala para sa serbisyo sa pagruruta" ay maaaring mapalitan sa pamamagitan ng pagtawag sa programa nito. https://habr.com/post/354282/#comment_10782712

UPD4. Isang maliit na gawain sa mga error (hindi ko sila idinagdag sa teksto):
1) sa halip systemctl i-reload ang ibon makatuwirang gamitin ang utos i-configure ang birdc.
2) sa Mikrotik router, sa halip na baguhin ang nexthop sa IP ng pangalawang bahagi ng tunnel /routing filter add action=accept chain=dynamic-in protocol=bgp comment=Β»Itakda ang nexthopΒ» set-in-nexthop=172.30.1.1 makatuwirang tukuyin ang ruta nang direkta sa interface ng tunnel, nang walang address /routing filter add action=accept chain=dynamic-in protocol=bgp comment=Β»Itakda ang nexthopΒ» set-in-nexthop-direct=<pangalan ng interface>

UPD5. May lumitaw na bagong serbisyo https://antifilter.download, mula sa kung saan maaari mong kunin ang mga nakahandang listahan ng mga IP address. Ina-update tuwing kalahating oras. Sa panig ng kliyente, ang natitira na lang ay i-frame ang mga talaan na may kaukulang "ruta... tanggihan".
At sa puntong ito, marahil, sapat na upang basahan ang iyong lola at i-update ang artikulo.

UPD6. Isang binagong bersyon ng artikulo para sa mga hindi gustong malaman ito, ngunit gustong magsimula - dito.

Pinagmulan: www.habr.com

Magdagdag ng komento