Re ile ra phunyeletsa joang ho Great Firewall of China (Karolo ea 2)

Lumela!

Nikita o na le uena hape, moenjiniere oa tsamaiso ho tsoa k'hamphaning SEMrushana. 'Me ka sengoloa sena ke tsoela pele pale ea hore na re fumane tharollo ea tharollo joang Sechaena sa Firewall bakeng sa tšebeletso ea rona semrush.com.

В karolo e fetileng Ke ile ka re:

  • mathata a hlahang ka mor'a hore qeto e etsoe "Re hloka ho etsa hore tšebeletso ea rona e sebetse Chaena"
  • Marang-rang a China a na le mathata afe?
  • hobaneng o hloka lengolo la ICP?
  • joang le hobaneng re nkile qeto ea ho leka libethe tsa rona tsa liteko ka Catchpoint
  • phello ea tharollo ea rona ea pele e thehiloeng ho Cloudflare China Network e bile efe
  • Re fumane phoso joang ho Cloudflare DNS

Karolo ena ke eona e khahlang ka ho fetesisa, ka maikutlo a ka, hobane e shebana le ts'ebetso e khethehileng ea tekheniki ea sethala. 'Me re tla qala, kapa ho e-na le hoo, tsoela pele, ka Cloud Cloud.

Cloud Cloud

Cloud Cloud ke mofani oa maru o lekaneng, o nang le lits'ebeletso tsohle tse o lumellang ho ipitsa ka botšepehi mofani oa maru. Ho hotle hore ba be le monyetla oa ho ngolisa basebelisi ba tsoang linaheng tse ling, le hore boholo ba sebaka sena se fetoleloa ka Senyesemane (bakeng sa Chaena sena ke mabothobotho). Lerung lena, o ka sebetsa le libaka tse ngata tsa lefats'e, naha ea China, hammoho le Oceanic Asia (Hong Kong, Taiwan, joalo-joalo).

IPsec

Re ile ra qala ka jeokrafi. Kaha sebaka sa rona sa liteko se ne se le ho Google Cloud, re ne re hloka ho "hokela" Alibaba Cloud le GCP, kahoo re ile ra bula lethathamo la libaka tseo Google e leng ho tsona. Ka nako eo ba ne ba e-so be le setsi sa bona sa data Hong Kong.
Sebaka se haufi ka ho fetisisa se ile sa fetoha Asia-bochabela1 (Taiwan). Ali e ile ea bonahala e le sebaka se haufi ka ho fetisisa naheng ea China ho ea Taiwan cn-shenzhen (Shenzhen).

Ka thuso ea terraform e hlalositse le ho phahamisa meralo eohle ea motheo ho GCP le Ali. Tunnel ea 100 Mbit/s lipakeng tsa maru e ile ea nyoloha hang hang. Ka lehlakoreng la Shenzhen le Taiwan, ho ile ha phahamisoa mechini e sebetsang ea proxying. Shenzhen, sephethephethe sa basebelisi se felisitsoe, se tsamaisoa ka kotopo ho ea Taiwan, 'me ho tloha moo se ea ka kotloloho ho IP ea kantle ea ts'ebeletso ea rona rona-bochabela (USA East Coast). Ping pakeng tsa mechini ea sebele ka kotopo 24ms, e seng mpe hakaalo.

Ka nako e tšoanang, re ile ra beha sebaka sa teko Alibaba Cloud DNS. Kamora ho abela sebaka ho NS Ali, nako ea tharollo e fokotsehile ho tloha ho 470 ms ho ea 50 ms. Pele ho mona, sebaka sena se ne se boetse se le Cloudlfare.

E bapileng le kotopo ho Asia-bochabela1 tsosoa kotopo e 'ngoe ho tloha Shenzhen ka ho toba ho rona-bochabela4. Ha ba le moo ba thehile mechini e mengata ea proxy mme ba qala ho leka litharollo ka bobeli, ba tsamaisa sephethephethe sa liteko ba sebelisa Cookies kapa DNS. Benche ea liteko e hlalosoa ka schematically setšoantšong se latelang:

Ho lieha ha lithanele ho bile ka tsela e latelang:
Ali cn-shenzhen <—> GCP asia-east1 — 24ms
Ali cn-shenzhen <—> GCP us-east4 — 200ms

Liteko tsa sebatli sa Catchpoint li tlalehile ntlafatso e ntle haholo.

Bapisa liphetho tsa liteko bakeng sa litharollo tse peli:

u etsa qeto ea
Nako ea holimo
E bohareng
75 Percentile
95 Percentile

Cloudflare
86.6
18
30
60

IPsec
99.79
18
21
30

Ena ke data e tsoang ho tharollo e sebelisang kotopo ea IPSEC ka Asia-bochabela1. Ka rona-bochabela4 liphetho li ne li mpefala, 'me ho ne ho e-na le liphoso tse ngata, kahoo nke ke ka fana ka liphetho.

Ho itšetlehile ka liphello tsa teko ena ea lithanele tse peli, e 'ngoe ea tsona e felisitsoe sebakeng se haufi le Chaena,' me e 'ngoe e le sebakeng sa ho qetela, ho ile ha hlaka hore ke habohlokoa ho "tsoa" tlas'a firewall ea Chaena kapele kamoo ho ka khonehang. ho khoneha, ebe o sebelisa marang-rang a potlakileng (bafani ba CDN , bafani ba maru, joalo-joalo). Ha ho hlokahale hore u leke ho kena ka har'a firewall 'me u fihle moo u eang teng ka lekhetlo le le leng. Ena hase eona tsela e potlakileng.

Ka kakaretso, liphetho ha li mpe, leha ho le joalo, semrush.com e na le median ea 8.8s, le 75 Percentile 9.4s (tekong e tšoanang).
Mme pele ke fetela pele, ke kopa ho nyenyefatsa mantsoe a makhutšoane.

Khutlela holimo

Kamora hore mosebelisi a kene sebakeng sa marang-rang www.semrushchina.cn, e rarollang ka li-server tsa "matla" tsa Chinese DNS, kopo ea HTTP e feta ka tharollo ea rona e potlakileng. Karabo e khutlisetsoa ka tsela e ts'oanang, empa domain name e hlalositsoe libukeng tsohle tsa JS, maqephe a HTML le likarolo tse ling tsa leqephe la webo. semrush.com bakeng sa lisebelisoa tse eketsehileng tse tlamehang ho kenngoa ha leqephe le etsoa. Ke hore, moreki o rarolla "rekote" e kholo ea A www.semrushchina.cn mme o kena ka kotopong e potlakileng, o fumana karabo kapele - leqephe la HTML le reng:

  • khoasolla tse joalo le tse joalo ho sso.semrush.com,
  • Fumana lifaele tsa CSS ho cdn.semrush.com,
  • hape u nke linepe ho dab.semrush.com
  • joalo-joalo.

Sebatli se qala ho ea ho Internet "ea kantle" bakeng sa lisebelisoa tsena, nako le nako se feta har'a firewall e jang nako ea karabo.

Empa tlhahlobo e fetileng e bonts'a liphetho ha ho se na lisebelisoa leqepheng semrush.com, feela semrushchina.cn, 'me *.semrushchina.cn e etsa qeto ea ho ea atereseng ea mochine oa sebele oa Shenzhen e le hore o kene ka har'a kotopo.

Ke ka tsela ena feela, ka ho sutumelletsa sephethephethe sohle ho fihlela boholo ka tharollo ea hau bakeng sa ho feta kapele firewall ea China, o ka fumanang lebelo le amohelehang le matšoao a ho fumaneha ha webosaete, hammoho le liphetho tse tšepahalang tsa liteko tsa tharollo.
Re entse sena ntle le ho hlophisa khoutu e le 'ngoe lehlakoreng la sehlahisoa sa sehlopha.

Sefate se ka tlase

Tharollo e ile ea hlaha hang ka mor'a hore bothata bona bo hlahe. Re ne re hloka PoC (Bopaki ba Khopolo) hore tharollo ea rona ea ho kenella ha firewall e hlile e sebetsa hantle. Ho etsa sena, o hloka ho phuthela sephethephethe sohle sa sebaka ka tharollo ena ka hohle kamoo ho ka khonehang. Mme ra etsa kopo setlhoa ka nginx.

Sefate se ka tlase ke mojule o bonolo oa nginx o u lumellang hore u fetole mola o le mong 'meleng oa karabelo ho ea mola o mong. Kahoo re ile ra fetola liketsahalo tsohle semrush.com mabapi le semrushchina.cn likarabong tsohle.

'Me ... ha ea ka ea sebetsa hobane re fumane litaba tse hatelitsoeng ho tloha ka morao, kahoo subfilter ha ea ka ea fumana mohala o hlokahalang. Ke ile ka tlameha ho eketsa seva e 'ngoe ea sebakeng sa nginx, e ileng ea theola karabo 'me ea e fetisetsa ho seva se latelang sa sebaka seo, se neng se se se ntse se phathahane ho nkela khoele sebaka, ho e hatella, le ho e romela ho seva sa proxy se latelang ka ketane.

Ka lebaka leo, mofani o ne a tla fumana hokae .semrush.com, o ile a amohela .semrushchina.cn mme ka kutlo a tsamaela qeto ya rona.

Leha ho le joalo, ha hoa lekana ho fetola sebaka sa marang-rang ka tsela e le 'ngoe, hobane li-backends li ntse li lebelletse semrush.com likopo tse latelang tse tsoang ho moreki. Ka hona, ho seva se le seng moo phetoho ea tsela e le 'ngoe e etsoang, ho sebelisa poleloana e bonolo ea kamehla re fumana subdomain ho tsoa kopo, ebe rea e etsa. proxy_pass e nang le phetoho $moamoheli, e bonts'itsoeng ka $subdomain.semrush.com. Ho ka bonahala ho ferekanya, empa hoa sebetsa. Mme e sebetsa hantle. Bakeng sa libaka ka bomong tse hlokang mabaka a fapaneng, iketsetse feela li-block tsa hau tsa seva ebe u etsa tlhophiso e fapaneng. Ka tlase ke li-configs tsa nginx tse khutsufalitsoeng bakeng sa ho hlaka le ho bonts'a morero ona.

Setlhophiso se latelang se sebetsana le likopo tsohle tse tsoang China ho .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;
    }
}

Sena se config proxies ho Localhost ho port 83, 'me config e latelang e emetse moo:

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

Kea pheta, tsena ke li-configs tse khaotsoeng.

Joalo joalo. E ka bonahala e rarahane, empa e ka mantsoe. Ebile, ntho e ngoe le e ngoe e bonolo ho feta li-turnips tse halikiloeng :)

Qetello ya ho kgeloha

Ka nakoana re ne re thabile hobane tšōmo ea ho oa ha lithanele tsa IPSEC e ne e sa tiisoa. Empa joale lithanele li ile tsa qala ho oa. Ka makhetlo a 'maloa ka letsatsi metsotso e seng mekae. Hanyenyane, empa seo se ne se sa re tšoanele. Kaha lithanele ka bobeli li ne li felisitsoe ka lehlakoreng la Ali ho router e le 'ngoe, re ile ra etsa qeto ea hore mohlomong ena e ne e le bothata ba sebaka mme re hloka ho phahamisa sebaka sa polokelo.

Ba e thonaka. Lithanele li ile tsa qala ho hloleha ka linako tse fapaneng, empa failover e ile ea sebetsa hantle bakeng sa rona boemong bo ka holimo ho nginx. Empa joale lithanele li ile tsa qala ho oa hoo e ka bang ka nako e le 'ngoe 🙂 Mme 502 le 504 li ile tsa qala hape. Uptime e ile ea qala ho senyeha, kahoo re ile ra qala ho sebetsa ka khetho ka. Alibaba CEN (Cloud Enterprise Network).

CEN

CEN - Ena ke khokahano ea li-VPC tse peli tse tsoang libakeng tse fapaneng kahare ho Alibaba Cloud, ke hore, o ka hokela marang-rang a poraefete a libaka life kapa life tse ka har'a leru. 'Me ntho ea bohlokoa ka ho fetisisa: mocha ona o na le melao e thata haholo SLA. E tsitsitse haholo ka bobeli ka lebelo le ho feta nako. Empa ha ho mohla e leng bonolo hakaalo:

  • Ho thata haholo ho fumana haeba o se baahi ba China kapa mokhatlo oa molao,
  • U hloka ho lefella megabit e 'ngoe le e 'ngoe ea bokhoni ba mocha.

Ho ba le monyetla oa ho hokahanya China Mainland и mose ho maoatle, re thehile CEN lipakeng tsa libaka tse peli tsa Ali: cn-shenzhen и rona-bochabela-1 (sebaka se haufi le rona-bochabela4). Ho Ali rona-bochabela-1 e phahamisitse mochine o mong oa sebele e le hore ho be le o mong hape hop.

Ho ile ha hlaha tjena:

Liphetho tsa liteko tsa sebatli li ka tlase:

u etsa qeto ea
Nako ea holimo
E bohareng
75 Percentile
95 Percentile

Cloudflare
86.6
18
30
60

IPsec
99.79
18
21
30

CEN
99.75
16
21
27

Ts'ebetso e betere hanyane ho feta IPSEC. Empa ka IPSEC o ka khoasolla ka lebelo la 100 Mbit/s, le ka CEN feela ka lebelo la 5 Mbit/s le ho feta.

E utloahala joalo ka lebasetere, na? Kopanya lebelo la IPSEC le botsitso ba CEN.

Sena ke seo re se entseng, ho lumella sephethephethe ka bobeli ba IPSEC le CEN ha ho ka ba le ho hlōleha ha kotopo ea IPSEC. Uptime e se e phahame haholo, empa lebelo la ho kenya sebaka sa marang-rang le ntse le siea lintho tse ngata tse lakatsehang. Eaba ke hula lipotoloho tsohle tseo re neng re se re li sebelisitse le ho li hlahloba, 'me ka etsa qeto ea ho leka ho eketsa GCP ho potoloho ena, e leng. GLB.

GLB

GLB - sena ke Global Load Balancer (kapa Google Cloud Load Balancer). E na le molemo oa bohlokoa ho rona: moelelong oa CDN e nang le eona IP leha e le efe, e leng se u lumellang hore u tsamaise sephethephethe ho ea setsing sa data se haufi le moreki, e le hore sephethephethe se kene ka potlako marang-rang a potlakileng a Google 'me se fokotsehe ho feta Inthaneteng "kamehla".

Ntle le ho nahana habeli, re ile ra phahamisa HTTP/HTTPS LB Re kentse mechini ea rona ea sebele e nang le subfilter ho GCP hape e le backend.

Ho ne ho e-na le merero e mengata:

  • Sebelisa Cloudflare China Network, empa lekhetlong lena Origin e lokela ho hlakisa lefatše lohle IP GLB.
  • Felisa bareki ka cn-shenzhen, 'me ho tloha moo proxy the traffic ka ho toba ho GLB.
  • Tsamaea ka kotloloho ho tloha China ho ea GLB.
  • Felisa bareki ka cn-shenzhen, ho tloha moo proxy ho Asia-bochabela1 ka IPSEC (in rona-bochabela4 ka CEN), ho tloha moo u ee ho GLB (ka khutso, ho tla ba le setšoantšo le tlhaloso ka tlase)

Re lekile likhetho tsena kaofela le tse ling tse 'maloa tse nyalisitsoeng:

  • Cloudflare + GLB

Morero ona o ne o sa re tšoanele ka lebaka la liphoso tsa nako le DNS. Empa teko e ile ea etsoa pele kokoanyana e lokisoa ka lehlakoreng la CF, mohlomong ho molemo hona joale (leha ho le joalo, sena ha se qhelele nako ea HTTP).

  • Ali + GLB

Morero ona le ona o ne o sa re tšoanele mabapi le nako ea ho qetela, kaha GLB hangata e ne e oela ka ntle ho nōka ka lebaka la ho se khonehe ho hokahanya ka nako e amohelehang kapa nako ea nako, hobane bakeng sa seva ka hare ho Chaena, aterese ea GLB e ntse e le ka ntle, ka hona ka mor'a Sechaena firewall. Boselamose ha boa etsahala.

  • GLB feela

Khetho e ts'oanang le e fetileng, feela ha ea ka ea sebelisa li-server tsa China ka boeona: sephethephethe se ile sa ea ka kotloloho ho GLB (lirekoto tsa DNS li fetotsoe). Ka lebaka leo, liphetho li ne li sa khotsofatse, kaha bareki ba tloaelehileng ba Machaena ba sebelisang litšebeletso tsa bafani ba tloaelehileng ba Inthanete ba na le boemo bo bobe haholo ka ho fetisa firewall ho feta Ali Cloud.

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

Mona re nkile qeto ea ho sebelisa tharollo e molemohali ho tsohle:

  • botsitso le SLA e tiisitsoeng ho tsoa ho CEN
  • lebelo le phahameng ho tloha IPSEC
  • Marang-rang a "potlako" a Google le mofuta ofe kapa ofe oa eona.

Morero o shebahala tjena: sephethephethe sa basebelisi se felisitsoe ka mochini o hlakileng ch-shenzhen. Li-upstream tsa Nginx li hlophisitsoe moo, tse ling tsa tsona li lebisang ho li-server tsa IP tse ikemetseng tse ka lehlakoreng le leng la kotopo ea IPSEC, 'me tse ling tse holimo li supa liaterese tsa poraefete tsa li-server ka lehlakoreng le leng la CEN. IPSEC e lokiselitsoe sebakeng Asia-bochabela1 GCP (e ne e le sebaka se haufi haholo le Chaena nakong eo tharollo e neng e thehoa. Hona joale GCP e boetse e na le boteng ba Hong Kong). CEN - ho ea sebakeng rona-bochabela1 ho Ali Cloud.

Joale sephethephethe se tsoang mahlakoreng ka bobeli se ne se lebisitsoe ho leha e le efe IP GLB, ke hore, sebakeng se haufi sa boteng ba Google, 'me sa feta marang-rang a eona ho ea sebakeng seo rona-bochabela4 ho GCP, moo ho neng ho e-na le mechini e ncha e ncha (e nang le subfilter ho nginx).

Tharollo ena ea lebasetere, joalo ka ha re ne re lebelletse, e ile ea nka monyetla oa melemo ea theknoloji ka 'ngoe. Ka kakaretso, sephethephethe se feta ka potlako ea IPSEC, empa haeba mathata a qala, ka potlako le ka metsotso e seng mekae re raha li-server tsena ho tsoa holimo ebe re romela sephethephethe feela ka CEN ho fihlela kotopo e tsitsa.

Ka ho kenya ts'ebetsong tharollo ea 4 ho tsoa lethathamong le ka holimo, re fihletse seo re neng re se batla le seo khoebo e neng e se hloka ho rona ka nako eo ka nako.

Liphetho tsa liteko tsa sebatli bakeng sa tharollo e ncha ha li bapisoa le tse fetileng:

u etsa qeto ea
Nako ea holimo
E bohareng
75 Percentile
95 Percentile

Cloudflare
86.6
18
30
60

IPsec
99.79
18
21
30

CEN
99.75
16
21
27

CEN/IPsec + GLB
99.79
13
16
25

CDN

Ntho e 'ngoe le e' ngoe e ntle ka tharollo eo re e sebelisitseng, empa ha ho na CDN e ka potlakisang sephethephethe sebakeng sa libaka esita le sa toropo. Ka khopolo, sena se lokela ho potlakisa sebaka sa basebelisi ba ho qetela ka ho sebelisa mekhoa ea puisano e potlakileng ea mofani oa CDN. 'Me re ne re nahana ka eona ka linako tsohle. 'Me joale, nako e fihlile bakeng sa phetisetso e latelang ea morero: ho batla le ho hlahloba bafani ba CDN Chaena.

'Me ke tla u bolella ka sena karolong e latelang, ea ho qetela :)

Source: www.habr.com

Eketsa ka tlhaloso