Ahoana no namakiantsika ny Great Chinese Firewall (Fizarana faha-2)

Miarahaba!

Miaraka aminao indray i Nikita, injeniera rafitra avy amin'ny orinasa SEMrush. Ary miaraka amin'ity lahatsoratra ity dia tohizako ny tantara momba ny fomba nahatongavanay vahaolana vahaolana Firewall Sinoa ho an'ny serivisy semrush.com.

Π’ ampahany teo aloha hoy aho:

  • inona no olana mitranga aorian'ny fandraisana ny fanapahan-kevitra "Mila manao asa fanompoana any Shina isika"
  • Inona no olan'ny Aterineto Shinoa?
  • nahoana ianao no mila fahazoan-dΓ lana ICP?
  • ahoana ary nahoana izahay no nanapa-kevitra ny hanandrana ny toeram-pitsapana amin'ny Catchpoint
  • inona no vokatry ny vahaolana voalohany mifototra amin'ny Cloudflare China Network
  • Ahoana no nahitanay bibikely tao amin'ny Cloudflare DNS

Ity ampahany ity no mahaliana indrindra, araka ny hevitro, satria mifantoka amin'ny fampiharana ara-teknika manokana amin'ny fampisehoana. Ary isika dia hanomboka, na ny marimarina kokoa, amin'ny Alibaba Cloud.

Alibaba Cloud

Alibaba Cloud dia mpanome rahona midadasika be, izay manana ny serivisy rehetra ahafahany miantso ny tenany ho mpamatsy rahona. Soa ihany fa manana fahafahana misoratra anarana ho an'ireo mpampiasa vahiny izy ireo, ary ny ankamaroan'ny tranonkala dia nadika amin'ny teny anglisy (ho an'i Shina dia rendrarendra izany). Amin'ity rahona ity dia afaka miara-miasa amin'ny faritra maro eran'izao tontolo izao ianao, ny tanibe Shina, ary koa ny Oceanic Asia (Hong Kong, Taiwan, sns.).

IPSEC

Nanomboka tamin'ny jeografia izahay. Satria ao amin'ny Google Cloud no misy ny tranokalanay, mila "mampifandray" an'i Alibaba Cloud amin'ny GCP izahay, ka nanokatra lisitry ny toerana misy an'i Google izahay. Tamin'izany fotoana izany dia tsy mbola nanana ivon-toerana momba ny angona manokana ao Hong Kong izy ireo.
Ny faritra akaiky indrindra no hita azia-atsinanana1 (Taiwan). I Ali no faritra akaiky indrindra amin'ny tanibe Shina amin'i Taiwan cn-shenzhen (Shenzhen).

Amin'ny fanampian'ny terraform namaritra sy nanangana ny fotodrafitrasa manontolo ao amin'ny GCP sy Ali. Nisy tonelina 100 Mbit/s teo anelanelan'ny rahona niakatra saika avy hatrany. Teo anilan'i Shenzhen sy Taiwan, natsangana ny milina virtoaly proxy. Any Shenzhen, tapaka ny fifamoivoizan'ny mpampiasa, alefa amin'ny alalan'ny tonelina mankany Taiwan, ary avy eo dia mandeha mivantana mankany amin'ny IP ivelany an'ny serivisintsika any. us-atsinanana (Etazonia East Coast). Ping eo anelanelan'ny milina virtoaly amin'ny alΓ lan'ny tonelina 24ms, izay tsy dia ratsy loatra.

Nandritra izany fotoana izany dia nametraka faritra fitsapana izahay Alibaba Cloud DNS. Taorian'ny nametrahana ny faritra ho an'ny NS Ali, dia nihena avy amin'ny 470 ms ny fotoana famahana 50 ms. Talohan'io dia teo amin'ny Cloudlfare ihany koa ilay faritra.

Parallèle amin'ny tonelina mankany azia-atsinanana1 nanangana tonelina iray hafa avy any Shenzhen mivantana mankany us-atsinanana4. Tao izy ireo dia namorona milina virtoaly proxy bebe kokoa ary nanomboka nanandrana ireo vahaolana roa ireo, nitondra ny fifamoivoizana fitsapana tamin'ny alàlan'ny Cookies na DNS. Ny dabilio fitsapana dia nofaritana schematically amin'ny sary manaraka:

Ny faharetan'ny tonelina dia toy izao manaraka izao:
Ali cn-shenzhen <β€”> GCP asia-atsinanana1 β€” 24ms
Ali cn-shenzhen <β€”> GCP us-east4 β€” 200ms

Nitatitra fanatsarana tsara ny fitsapana navigateur Catchpoint.

Ampitahao ny valin'ny fitsapana ho an'ny vahaolana roa:

fanapahan-kevitra
Uptime
Median
75 isan-jato
95 isan-jato

Cloudflare
86.6
18s
30s
60s

IPsec
99.79
18s
21s
30s

Ity dia angona avy amin'ny vahaolana iray izay mampiasa tonelina IPSEC amin'ny alΓ lan'ny azia-atsinanana1. Tamin'ny alalan'ny us-east4 dia ratsy kokoa ny vokatra, ary nisy fahadisoana bebe kokoa, ka tsy hanome ny valiny aho.

Miorina amin'ny valin'ny fitsapana ny tonelina roa, ny iray amin'izy ireo dia tapitra ao amin'ny faritra akaiky indrindra an'i Shina, ary ny iray hafa any amin'ny toerana farany, dia nanjary nazava fa zava-dehibe ny "mipoitra" avy ao ambanin'ny firewall Shinoa haingana araka izay azo atao. azo atao, ary mampiasa tambajotra haingana (mpanome CDN, mpamatsy rahona, sns.). Tsy ilaina ny manandrana mamakivaky ny firewall ary tonga any amin'ny toerana halehanao ao anatin'ny indray mipi-maso. Tsy ity no fomba haingana indrindra.

Amin'ny ankapobeny, tsy ratsy ny valiny, na izany aza, ny semrush.com dia manana mediana 8.8s, ary 75 Percentile 9.4s (amin'ny fitsapana mitovy).
Ary alohan'ny handrosoana dia te hanao digression tononkira fohy aho.

Fihoarana herisetra

Aorian'ny fidirana amin'ny tranokala ny mpampiasa www.semrushchina.cn, izay mamaha amin'ny alΓ lan'ny mpizara DNS Shinoa β€œfaingana”, ny fangatahana HTTP dia mandeha amin'ny vahaolana haingana. Ny valiny dia averina amin'ny lalana iray ihany, fa ny sehatra dia voafaritra amin'ny script JS rehetra, pejy HTML ary singa hafa amin'ny pejin-tranonkala. semrush.com ho an'ny loharano fanampiny izay tsy maintsy ampidirina rehefa adika ny pejy. Izany hoe, ny mpanjifa dia mamaha ny "main" A-record www.semrushchina.cn ary miditra ao amin'ny tonelina haingana, mahazo valiny haingana - pejy HTML izay milaza hoe:

  • misintona js toy izany sy izany avy amin'ny sso.semrush.com,
  • Raiso ny rakitra CSS avy amin'ny cdn.semrush.com,
  • ary maka sary ihany koa avy amin'ny dab.semrush.com
  • sy ny sisa.

Manomboka mandeha any amin'ny Internet "ivelany" ny navigateur ho an'ireo loharano ireo, isaky ny mandalo amin'ny firewall izay mandany fotoana mamaly.

Saingy ny fitsapana teo aloha dia mampiseho ny valiny rehefa tsy misy loharano ao amin'ny pejy semrush.comihany semrushchina.cn, ary *.semrushchina.cn dia mamaha ny adiresin'ny milina virtoaly ao Shenzhen mba hidirana ao amin'ny tonelina.

Amin'izany fomba izany ihany, amin'ny alΓ lan'ny fanosehana ny fifamoivoizana rehetra mety ho ambony indrindra amin'ny alΓ lan'ny vahaolanao handalo haingana ny firewall Shinoa, azonao atao ny mahazo ny hafainganam-pandeha azo ekena sy ny mari-pamantarana ny fisian'ny tranokala, ary koa ny valiny marina amin'ny fitsapana vahaolana.
Nanao izany izahay tsy nisy fanitsiana kaody iray teo amin'ny lafiny vokatra an'ny ekipa.

Subsivana

Ny vahaolana dia teraka saika avy hatrany taorian'ny nipoiran'ity olana ity. nilainay PoC (Proof of Concept) fa ny vahaolana amin'ny fidirana amin'ny firewall dia tena miasa tsara. Mba hanaovana izany dia mila mamatotra ny fifamoivoizana amin'ny tranokala rehetra amin'ity vahaolana ity araka izay azo atao ianao. Ary nanao fangatahana izahay sivana amin'ny nginx.

Subsivana dia modely tsotra amin'ny nginx izay ahafahanao manova andalana iray ao amin'ny vatan'ny valiny mankany amin'ny tsipika hafa. Ka nanova ny fisehoan-javatra rehetra izahay semrush.com amin'ny semrushchina.cn amin'ny valiny rehetra.

Ary... tsy nety izany satria nahazo votoaty voaporitra avy amin'ny lamosina izahay, ka tsy nahita ny tsipika ilaina ny subfilter. Tsy maintsy nanampy mpizara teo an-toerana iray hafa aho amin'ny nginx, izay nanala ny valiny ary nampita izany tamin'ny mpizara eo an-toerana manaraka, izay efa sahirana manolo ny tady, manindry azy, ary mandefa azy any amin'ny mpizara proxy manaraka ao amin'ny rojo.

Vokatr'izany, aiza no hahazoan'ny mpanjifa .semrush.com, azony .semrushchina.cn ary nandalo tamim-pankatoavana ny fanapahan-kevitray.

Na izany aza, tsy ampy ny manova fotsiny ny sehatra amin'ny fomba iray, satria ny backends dia mbola manantena ny semrush.com amin'ny fangatahana manaraka avy amin'ny mpanjifa. Noho izany, amin'ny lohamilina iray izay anaovana ny fanoloana tokana, amin'ny fampiasana fomba fiteny mahazatra tsotra dia mahazo ny subdomain amin'ny fangatahana, ary avy eo dia manao proxy_pass miaraka amin'ny miovaova $host, naseho tao $subdomain.semrush.com. Mety ho toa manahiran-tsaina izany, saingy miasa. Ary miasa tsara izany. Ho an'ny sehatra tsirairay izay mitaky lojika samihafa, mamorona sakana mpizara anao fotsiny ary manaova tefy hafa. Ireto ambany ireto ny config nginx nohafohezina mba hanazavana sy fanehoana an'io tetika io.

Ity config manaraka ity dia manodina ny fangatahana rehetra avy any Shina mankany .semrushchina.cn:

    listen 80;

    server_name ~^(?<subdomain>[w-]+).semrushchina.cn$;

    sub_filter '.semrush.com' '.semrushchina.cn';
    sub_filter_last_modified on;
    sub_filter_once off;
    sub_filter_types *;

    gzip on;
    gzip_proxied any;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

    location / {
        proxy_pass http://127.0.0.1:8083;
        proxy_set_header Accept-Encoding "";
        proxy_set_header Host $subdomain.semrush.com;
        proxy_set_header X-Accept-Encoding $http_accept_encoding;
    }
}

Ity config ity dia mifamatotra amin'ny localhost mankany amin'ny port 83, ary ity config manaraka ity dia miandry ao:

    listen 127.0.0.1:8083;

    server_name *.semrush.com;

    location / {
        resolver 8.8.8.8 ipv6=off;
        gunzip on;
        proxy_pass https://$host;
        proxy_set_header Accept-Encoding gzip;
    }
}

Averiko indray fa config cropped ireto.

Toy izany. Mety ho sarotra izany, saingy amin'ny teny. Raha ny marina, ny zava-drehetra dia tsotra kokoa noho ny sakamalaho etona :)

Faran'ny digression

Faly izahay nandritra ny fotoana kelikely satria tsy voamarina ny angano momba ny fianjeran'ny tonelina IPSEC. Nanomboka nianjera anefa ireo tonelina avy eo. Imbetsaka isan'andro mandritra ny minitra vitsivitsy. Kely, saingy tsy nety taminay izany. Koa satria ny tonelina roa dia tapaka teo amin'ny sisin'i Ali tamin'ny router iray ihany, dia nanapa-kevitra izahay fa angamba olana isam-paritra izany ary mila manangana ny faritra backup.

Noraisin’izy ireo izany. Nanomboka tsy nahomby ny tonelina tamin'ny fotoana samihafa, fa ny failover dia niasa tsara ho antsika teo amin'ny ambaratonga ambony amin'ny nginx. Saingy nanomboka nianjera tamin'ny fotoana iray ihany ny tonelina πŸ™‚ Ary nanomboka indray ny 502 sy 504. Nanomboka niharatsy ny ora fiasana, ka nanomboka niasa tamin'ny safidy izahay Alibaba CEN (Cloud Enterprise Network).

CEN

CEN - ity no fifandraisan'ny VPC roa avy amin'ny faritra samihafa ao anatin'ny Alibaba Cloud, izany hoe afaka mampifandray ireo tambajotra tsy miankina amin'ny faritra rehetra ao anatin'ny rahona ianao. Ary ny tena zava-dehibe: ity fantsona ity dia manana somary henjana slΓ₯. Tena marin-toerana izy io na amin'ny hafainganam-pandeha sy ny ora fiasana. Saingy tsy dia tsotra loatra izany:

  • TENA sarotra ny mahazo raha tsy teratany sinoa na fikambanana ara-dalΓ na ianao,
  • Mila mandoa isaky ny megabit ny fahafahan'ny fantsona ianao.

Manana fahafahana mifandray Mainland China ΠΈ ampitan-dranomasina, namorona CEN teo anelanelan'ny faritra Ali roa izahay: cn-shenzhen ΠΈ us-atsinanana-1 (teboka akaiky indrindra aminay-atsinanana4). Ao amin'ny Ali us-atsinanana-1 nanangana milina virtoaly hafa mba hisy iray hafa mitsambikina.

Toy izao no niseho:

Ny valin'ny fitsapana navigateur dia eto ambany:

fanapahan-kevitra
Uptime
Median
75 isan-jato
95 isan-jato

Cloudflare
86.6
18s
30s
60s

IPsec
99.79
18s
21s
30s

CEN
99.75
16s
21s
27s

Ny fampisehoana dia somary tsara kokoa noho ny IPSEC. Saingy amin'ny alΓ lan'ny IPSEC dia azonao atao ny misintona amin'ny hafainganam-pandeha 100 Mbit/s, ary amin'ny CEN ihany amin'ny hafainganam-pandeha 5 Mbit/s sy mihoatra.

Toa hybrid, sa tsy izany? Atambatra ny hafainganam-pandeha IPSEC sy ny fahamarinan-toerana CEN.

Izany no nataonay, mamela ny fifamoivoizana amin'ny IPSEC sy CEN raha sendra ny tsy fahombiazan'ny tonelina IPSEC. Nanjary avo kokoa ny ora fiasana, fa ny hafainganan'ny fampidinana ny tranokala dia mbola mamela betsaka. Avy eo dia nanao ny sariny rehetra izay efa nampiasainay sy notsapainay aho, ary nanapa-kevitra ny hanandrana hanampy GCP kely kokoa amin'ity faritra ity, izany hoe satroka.

satroka

satroka - ity dia Global Load Balancer (na Google Cloud Load Balancer). Manana tombony lehibe ho antsika izy io: ao anatin'ny tontolon'ny CDN izay ananany anycast IP, izay ahafahanao mampandeha ny fifamoivoizana mankany amin'ny foibe angona akaiky indrindra amin'ny mpanjifa, mba hidirana haingana amin'ny tambajotran'ny Google haingana ny fifamoivoizana ary tsy dia mandeha amin'ny Internet "mahazatra".

Tsy nieritreritra indroa izahay fa niakatra HTTP/HTTPS LB Nametraka ny milina virtoaly miaraka amin'ny sivana ao amin'ny GCP izahay ary ho toy ny backend.

Nisy drafitra maromaro:

  • Ampiasao Cloudflare China Network, fa amin'ity indray mitoraka ity dia tokony hamaritra maneran-tany ny Origin IP GLB.
  • Atsaharo ny mpanjifa amin'ny cn-shenzhen, ary avy eo proxy ny fifamoivoizana mivantana mankany satroka.
  • Mandehana mivantana avy any Shina mankany satroka.
  • Atsaharo ny mpanjifa amin'ny cn-shenzhen, avy eo proxy mankany azia-atsinanana1 amin'ny IPSEC (in us-atsinanana4 amin'ny alalan'ny CEN), avy eo mankany amin'ny GLB (miadana fa hisy sary sy fanazavana eto ambany)

Nosedrainay avokoa ireo safidy rehetra ireo sy ireo hybrid maro hafa:

  • Cloudflare + GLB

Tsy nety taminay ity tetika ity noho ny tsy fahampian'ny fotoana sy ny DNS. Saingy ny fitsapana dia natao talohan'ny nametrahana ny bug teo amin'ny lafiny CF, angamba tsara kokoa izao (na izany aza, tsy manilika ny fotoanan'ny HTTP izany).

  • Ali + GLB

Ity tetika ity koa dia tsy mety aminay amin'ny resaka ora fiasana, satria matetika ny GLB dia latsaka avy any ambony noho ny tsy fahafahan'ny fifandraisana amin'ny fotoana mety na fotoana voafetra, satria ho an'ny mpizara ao Shina, ny adiresy GLB dia mijanona any ivelany, ary noho izany dia ao ambadiky ny Firewall sinoa. Tsy nitranga ilay ody.

  • GLB ihany

Safidy mitovy amin'ny teo aloha, fa tsy nampiasa lohamilina tany Shina mihitsy: nandeha mivantana tany amin'ny GLB ny fifamoivoizana (novana ny rakitra DNS). Noho izany, tsy nahafa-po ny vokatra, satria ny mpanjifa Shinoa tsotra mampiasa ny tolotr'ireo mpanome Aterineto mahazatra dia manana toe-javatra ratsy kokoa amin'ny fandalovana ny firewall noho ny Ali Cloud.

  • Shenzhen -> (CEN/IPSEC) -> Proxy -> GLB

Eto izahay dia nanapa-kevitra ny hampiasa ny tsara indrindra amin'ny vahaolana rehetra:

  • fitoniana sy SLA azo antoka avy amin'ny CEN
  • hafainganam-pandeha ambony avy amin'ny IPSEC
  • Tambajotra "faingana" an'i Google sy ny anycast.

Toy izao ny tetika: tapaka amin'ny milina virtoaly ny fifamoivoizana mpampiasa ch-shenzhen. Ny Nginx ambony dia amboarina ao, ny sasany amin'izy ireo dia manondro ireo mpizara IP tsy miankina izay hita any amin'ny faran'ny tonelina IPSEC, ary ny sasany amin'ireo ambony dia manondro ny adiresin'ny mpizara amin'ny lafiny iray amin'ny CEN. IPSEC namboarina ho faritra azia-atsinanana1 ao amin'ny GCP (faritra akaiky indrindra an'i Shina tamin'ny fotoana namoronana ny vahaolana. Efa misy any Hong Kong koa ny GCP ankehitriny). CEN - mankany amin'ny faritra us-atsinanana1 ao amin'ny Ali Cloud.

Avy eo dia nizotra ho any ny fifamoivoizana avy amin'ny andaniny roa anycast IP GLB, izany hoe, mankany amin'ny toerana akaiky indrindra an'i Google, ary nandeha namaky ny tambajotrany nankany amin'ny faritra us-atsinanana4 ao amin'ny GCP, izay nisy milina virtoaly fanoloana (miaraka amin'ny subfilter amin'ny nginx).

Ity vahaolana hybrid ity, araka ny efa nampoizina, dia nanararaotra ny tombotsoan'ny teknolojia tsirairay. Amin'ny ankapobeny, mandeha amin'ny IPSEC haingana ny fifamoivoizana, fa raha manomboka ny olana, dia avoakanay haingana sy mandritra ny minitra vitsy ireo mpizara ireo avy any ambony ary mandefa ny fifamoivoizana amin'ny alΓ lan'ny CEN ihany mandra-pahatongan'ny tonelina.

Tamin'ny fampiharana ny vahaolana faha-4 avy amin'ny lisitra etsy ambony dia tratranay izay tadiavinay sy izay takin'ny orinasa taminay tamin'izany fotoana izany.

Valiny andrana amin'ny navigateur amin'ny vahaolana vaovao raha oharina amin'ny teo aloha:

fanapahan-kevitra
Uptime
Median
75 isan-jato
95 isan-jato

Cloudflare
86.6
18s
30s
60s

IPsec
99.79
18s
21s
30s

CEN
99.75
16s
21s
27s

CEN/IPsec + GLB
99.79
13s
16s
25s

CDN

Tsara avokoa ny vahaolana nampiharina, saingy tsy misy CDN afaka hanafaingana ny fifamoivoizana eny amin’ny faritra eny amin’ny tanΓ na mihitsy aza. Amin'ny teoria, tokony hanafaingana ny tranokala ho an'ny mpampiasa farany izany amin'ny fampiasana ny fantsom-pifandraisana haingana an'ny mpamatsy CDN. Ary nieritreritra izany foana izahay. Ary izao, tonga ny fotoana hamerenana ny tetikasa manaraka: fitadiavana sy fitiliana ireo mpamatsy CDN any Shina.

Ary holazaiko aminao ny momba izany amin'ny ampahany farany manaraka :)

Source: www.habr.com

Add a comment