Hallo jiddereen!
Nikita ass a Kontakt - e Systemingenieur vun der Firma SEMrush. Haut wĂ€ert ech Iech soen wĂ©i mir d'Aufgab konfrontĂ©iert hunn fir d'StabilitĂ©it vun eisem Semrush.com Service a China ze garantĂ©ieren, a wĂ©i eng Problemer mir wĂ€hrend hirer Ămsetzung begĂ©int hunn (vu de Standuert vun eisem Rechenzentrum op der OstkĂŒst vun den USA).
Dëst wÀert eng grouss Geschicht sinn, an e puer Artikelen opgedeelt. Ech soen Iech wéi et alles fir eis geschitt ass: vun engem komplett net funktionnelle Service aus China, bis op d'Leeschtungsindikatoren vum Service um Niveau vun senger amerikanescher Versioun fir Amerikaner. Ech verspriechen et wÀert interessant an nëtzlech sinn. Also, loosst eis goen.
Problemer vun der Chinese Internet
Och déi wÀitste Persoun aus de Spezifizitéite vun der Netzwierkverwaltung huet iwwer héieren Grouss Firewall vu China. Wow, kléngt cool, richteg? Awer wat et ass a wéi et tatsÀchlech funktionnéiert ass eng zimlech komplizéiert Fro. Dir kënnt vill Artikelen um Internet fannen, déi fir dëst gewidmet sinn, awer aus enger technescher Siicht ass den Design vun dëser Firewall néierens beschriwwen. Wat awer net iwwerrascht. Ech wÀert direkt zouginn, datt op Basis vun de Resultater vun engem Joer Aarbecht, Ech wÀert net fÀheg sinn genee ze soen, wéi et funktionnéiert, awer ech kann Iech iwwer meng Kommentaren a praktesch Conclusiounen soen. A mir fÀnken un mat Rumeuren iwwer dës Firewall.
Et gi vill Rumeuren iwwer dës ganz Firewall. Loosst eis déi wichtegst an interessantst vun hinnen an eng Lëscht sammelen:
- Google, Facebook, Twitter an aner Àhnlech Servicer si blockéiert a funktionnéieren net a China.
- All Traffic, deen Àussert vu China an AN China geet, gëtt parséiert a limitéiert mat Hëllef vu Maschinnléieren (am Fall vu verdÀchtege Verkéier), wat et staark verlangsamt (Traffic) duerch d'Grenz passéiert.
- Chinesesch Intelligenz Agenturen hacken all verschlësselte Verkéier, deen duerch hir Firewall passéiert.
- VPN Tunnel, IPSEC Tunnel sinn onbestÀnneg, Crash a si stÀnneg blockéiert.
- Wat méi einfach d'Verschlësselung, wat méi einfach de Passphrase benotzt gëtt fir de Traffic ze authentifizéieren/verschlësselen, dest méi séier geet et duerch d'chinesesch Firewall.
Hei ass wat mir iwwer dës Rumeuren erausfonnt hunn:
- Google, Facebook, Twitter an aner Ă€hnlech Servicer sinn zwar blockĂ©iert (Ăr KO), awer vill technesch Google Domainen, zum Beispill, sinn net verbannt a funktionnĂ©ieren (dĂ©i selwecht gstatic.com). D'Konklusioun folgt dovun: Dir sollt all Google an aner Ressourcen, dĂ©i blockĂ©iert schĂ©ngen, net onbedĂ©ngt ausschneiden.
- All VerkĂ©ier, deen d'Grenz passĂ©iert, fĂŒĂŒgt wierklech e seriöse VerspĂ©idung un seng ZĂ€it. Kuckt dĂ©i zwee Resultater. Ee Site, eng SĂ€it, einfach GET esouvill'om. DĂ©i Ă©ischt Miessung war aus China selwer (dĂ©i schĂ©in Stad Shenzhen). DĂ©i zweet gouf vu baussen aus Hong Kong gemooss (et huet SouverĂ€nitĂ©it, an et gĂ«tt keng Firewall tĂ«scht him an der Welt). D'Distanz tĂ«scht de Stied an enger riichter Linn ass ongefĂ©ier 30-40 km.
nikita@china-shenzhen:~# curl -o /dev/null -w@curl_time "https://www.semrush.com/info/ebay.com"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 381k 0 381k 0 0 71824 0 --:--:-- 0:00:05 --:--:-- 82832
time_namelookup: 0.004500
time_connect: 0.169342
time_appconnect: 0.723189
time_pretransfer: 0.723499
time_redirect: 0.000000
time_starttransfer: 1.532912
----------
time_total: 5.443407
----------
size_download: 390968 Bytes
speed_download: 71824.000B/s
nikita@china-hongkong:~# curl -o /dev/null -w@curl_time "https://www.semrush.com/info/ebay.com"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 319k 0 319k 0 0 2555k 0 --:--:-- --:--:-- --:--:-- 2573k
time_namelookup: 0.029366
time_connect: 0.030742
time_appconnect: 0.047310
time_pretransfer: 0.047388
time_redirect: 0.000000
time_starttransfer: 0.120793
----------
time_total: 0.124871
----------
size_download: 326755 Bytes
speed_download: 2616740.000B/sOpgepasst ZĂ€it_connect. An allgemeng gesitt Dir d'Resultat: d'Firewall fĂŒĂŒgt 4 extra Sekonnen un, wat monstrĂ©is laang ass.
- VPN an IPSEC Tunnel versoen dacks. Ech wÀert iwwer dëst e bësse méi spéit a méi detailléiert schwÀtzen. VPN-Server, déi vun de Benotzer benotzt ginn, gi mat der ZÀit blockéiert (normalerweis bannent engem Dag nom Start vum Gebrauch).
- Et gëtt eng Meenung vun de Leit, déi a China wunnen, datt wat méi einfach d'Verschlësselung vum Verkéier ass, dest méi séier duerch d'Grenz passéiert, well et einfach ze verstoen ass datt et nÀischt illegal ass. An déi selwecht Art a Weis kritt de "propperen" Verkéier méi Bandbreedung a Passagegeschwindegkeet, wÀhrend de "dreckeg" Verkéier, an deem nÀischt verstÀndlech ass, am Géigendeel e méi luesen Passage kritt. Zum Beispill wÀert ech Curl benotzen fir ifconfig.co iwwer HTTPS an HTTP Protokoll.
curl -o /dev/null -w@curl_time "https://ifconfig.co/"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13 100 13 0 0 2 0 0:00:06 0:00:05 0:00:01 3
time_namelookup: 0.004305
time_connect: 0.397465
time_appconnect: 5.149305
time_pretransfer: 5.149393
time_redirect: 0.000000
time_starttransfer: 5.568847
----------
time_total: 5.568893
----------
size_download: 13 Bytes
speed_download: 2.000B/s
curl -o /dev/null -w@curl_time "http://ifconfig.co/"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13 100 13 0 0 28 0 --:--:-- --:--:-- --:--:-- 28
time_namelookup: 0.004282
time_connect: 0.212457
time_appconnect: 0.000000
time_pretransfer: 0.212484
time_redirect: 0.000000
time_starttransfer: 0.450565
----------
time_total: 0.450620
----------
size_download: 13 Bytes
speed_download: 28.000B/sEn Ănnerscheed vu 5 Sekonnen fir eng total DownloadzĂ€it vun 13 Bytes. Ausserdeem, wann Dir esou en Test e puer Mol maacht, kĂ«nnt Dir feststellen datt GET op HTTP all KĂ©ier an der selwechter ZĂ€it ofgeschloss ass, wĂ€rend op HTTPS de Site heiansdo an 3, 5, 10 a souguer 17 Sekonnen reagĂ©iert. Heiansdo geschĂ©ien SSL Feeler:
Unknown SSL protocol error in connection to ifconfig.co:443.
Also wat mir hunn:
- D'Problemer erstallt vun der chinesescher Firewall ginn hei uewen beschriwwen.
- Pings op extern Ressourcen a bannent Tunnel verschwannen periodesch.
- Latency tëscht zwee Punkte Ànnert sech dauernd, an dacks ass et einfach onberechenbar. Wann Dir verschidde Stied/Regiounen verbënnt, erwaart Dir datt, baséiert op der geographescher Lag vun de Regiounen, d'Verspéidung manner wÀert sinn, awer Dir kritt genee de Géigendeel Situatioun.
- Den Internet a KommunikatiounskanÀl sinn entweder séier oder lues. Et gëtt eng liicht OfhÀngegkeet vun der ZÀit vum Dag an Dag vun der Woch, awer net ëmmer.
- DNS Ufroen un d'Ăussewelt aus China iwwerschreiden heiansdo den erlaabten Timeout.
D'Bild dat entsteet ass einfach "excellent".
Den Datenzenter, wéi ech scho gesot hunn, ass an den ëstlechen USA, an de ganze SEMrush besteet aus Dosende vu verbonne Produkter, Backends, Frontends, Datenbanken, an all dat an der DC a Wolleken. Mir, als Team vu Systemadministrateuren, kruten d'Aufgab fir séier a China mat wéineg Ustrengung ze schaffen.
Mir hu missen eng wichteg Fro beÀntweren: Ass et méiglech mat wéineg KÀschte laanscht ze kommen an all d'Problemer ze léisen, déi mam chinesesche Internet a Firewall um Netzwierk / Cloud / Serverniveau verbonne sinn?
Mir hunn ugefaang mam Empfang .
ICP Lizenz
Fir Ăre Service a China (Festland China) ze hosten an Tester ze maachen, musst Dir als Ă©ischt eng ICP Lizenz fir d'Domain krĂ©ien.
Wann de BenotzerverkĂ©ier vun Ărem Site am Festland China ofgeschloss ass, a wann Ăr Domain keng ICP Lizenz huet, gĂ«tt Ăre Traffic op der ISP / Hosting SĂ€it blockĂ©iert. Interessanterweis enthĂ€lt d'ICP Lizenz e spezifesche Provider, sief et Cloudflare oder Alibaba Cloud. Dofir, wann Dir eng ICP Lizenz fir Cloudflare kritt hutt an Ăr WebsĂ€it mat hinnen gehost hutt, kĂ«nnt Dir net "nahtlos" op Alibaba Cloud plĂ«nneren. Dir musst en anere Hosting zu dĂ«ser Lizenz addĂ©ieren.
Nodeems mir eng ICP Lizenz fir d'Domain kritt hunn, konnte mir spezifesch technesch Iddien a Léisungen opstellen an ëmsetzen.
Test Léisungen
Awer ier Dir direkt Inszenéierungsoptiounen erstellt, d'KnÀpper dréit, d'Performance vum Site a seng Geschwindegkeet optiméiert, musst Dir e Tool fir et ze testen fir ze kucken, wéi eng vun eisen Aktiounen d'Performance vum Site verbesseren oder am Géigendeel verschlechtert.
Eist Testinstrument huet zwee Haaptfuerderunge missen erfëllen:
- et sollt fÀeg sinn Tester aus China auszeféieren,
- et muss Browser Tester hunn.
Also hu mir fonnt ! Si hunn exzellent Ofdeckung vun Testplazen ronderëm d'Welt. A China kënnen Tester och aus 100500 Provënzen duerch dëst Tool lafen. Jiddereen huet e puer verschidde Fournisseuren + d'FÀegkeet ze maachen Réckrad-Tester (eppes wéi eng virtuell Maschinn an engem Rechenzentrum) an Lastmile-Tester (sou no wéi méiglech un de Benotzerbedéngungen, aka Workstation). Déi lescht Zort vun Tester ass méi deier.
Nodeems mir en Joreskontrakt ofgeschloss hunn (manner wĂ©i dat ass net mĂ©iglech), hu mir ugefaang d'Instrument ze studĂ©ieren. Ăierlech gesot, mir ware agreabel iwwerrascht vu senger FunktionalitĂ©it. Dir kĂ«nnt lafen:
- DNS Tester,
- Web Tester (Browser Tester, einfach GET / POST, mobil Client Emulatioun, etc.),
- Transaktiounskontrollen (zum Beispill Login),
- API Tester,
- Ping, traceroute, NTP, etc.
Dir kĂ«nnt net alles opzielen. A wat wichteg ass, kann all Test ganz gutt personalisĂ©iert ginn andeems Dir eng RĂ«tsch Header an aner Parameteren bĂ€idrĂ©it. D'Ausgab ass eng enorm QuantitĂ©it un Informatioun dĂ©i Ăren Test komplett beschreift. Wa mir iwwer dĂ©i interessantst Saache fir eis schwĂ€tzen (Browser Tester), enthĂ€lt d'Resultat:
- Connect, Waart, Luet, SSL, DNS ZĂ€it,
- TTFB, TTLB, Dokument komplett, RenderzÀit, DOM Lueden,
- Ăntwert (eppes no bei Time To First Byte), WebsĂ€it Response (eppes no bei Time To Last Byte),
- All Prozentsaz, Duerchschnëtt, MedianzÀit
- etc.
Deementspriechend sinn all dĂ«s Metriken super fir Ănnerungen ze gesinn an ze verstoen ob d'Saachen besser ginn. Mir hunn haaptsĂ€chlech gekuckt Ăntwert, WebsĂ€it Ăntwert, Median, 75 an 95 Prozent.
Eng wichteg Fro, déi vun Ufank un an der Loft war: Kënnt Dir Catchpoint vertrauen?? Spigelt dëst Tool d'real Site Luede Geschwindegkeet a China aus verschiddene Stied, oder ass et just eng Zort Test an engem Vakuum deen nÀischt mat echte Benotzererfarung ze dinn huet?
Dëst ass e grousse Problem, well a Russland ass et bal onméiglech fir zouverlÀsseg erauszefannen wéi e Site aus China funktionnéiert. Andeems Dir e Socks-Proxy duerch eng virtuell Maschinn mécht, ass d'Ennresultat datt de Site bannent e puer Minutten lued, wat einfach inakzeptabel ass fir Tester, sou datt déi eenzeg Optioun fir manuell Tester Curl an einfach GET vun der Konsole mat engem Timer ass . Dëst hëlleft well dësen Test d'Geschwindegkeet vun der Netzwierkléisung gutt reflektéiert, a wann et och Browser Tester sinn, dann ass et ganz gutt.
Spéider si mir selwer a China gaangen a waren dovun iwwerzeegt Dir kënnt Catchpoint vertrauen; et reflektéiert ganz prÀzis real Leeschtungsindikatoren.
Cloudflare China Network
ZĂ«nter datt mir erfollegrĂ€ich Cloudflare fir den HaaptdomĂ€n semrush.com benotzen, hu mir beschloss direkt hir Feature genannt ze probĂ©ieren . DĂ«s Optioun ass nĂ«mme fir Enterprise Siten op separat Ufro a fir eng zousĂ€tzlech Tax aktivĂ©iert. Et ass och nĂ«mme verfĂŒgbar fir Siten dĂ©i eng entspriechend ICP Lizenz hunn, dĂ©i Cloudflare als Provider oplĂ«scht. Nodeems et aktivĂ©iert ass, gĂ«tt de "Chinese CDN" vu Cloudflare fir de Site verfĂŒgbar - Traffic aus chinesesche Regiounen lant op der nooste PoP (Points of Presence) CF, an dann duerch seng Netzwierker oder d'Netzwierker vun Ubidder/Partner gĂ«tt et un d'Origine geliwwert .
Den Diagramm vun dëser Testbank gëtt hei ënnen presentéiert.
Dëst ass eng super Optioun fir eis. Et stellt sech eraus datt déi zweet Domain och fir CF wÀert sinn, wat net un d'Zuel vun de Léisungen, déi an der Firma benotzt ginn, bÀidréit, an och d'Infrastruktur praktesch net komplizéiert.
Mir hunn Browser Tester gemaach an dëst ass wat geschitt ass:
Roude Diamanten sinn Testfehler. D'Fichier'en hei drënner sinn DNS-Feeler (Timeout léisen). D'Feeler un der Spëtzt sinn Timeouts.
Uptime: 86.6
Mëttelméisseg: 18 s
75 Prozent: 29.3s
95 Prozent: 60s
Median, nodeems d'Luede gelÀscht gouf reCaptcha (Google Service blockéiert a China) ass vun 28 op 18 Sekonnen erofgaang. Awer dës sinn nach ëmmer schrecklech Resultater, wann Dir bedenkt datt dee selwechten Test fir semrush.com (aus den USA) manner wéi 10 Sekonnen fir 95% vun de Benotzer (aus den USA) op der selwechter SÀit (statesch + dynamesch) ginn huet.
Dir kënnt an all Test goen a kucken Waasserfall an aner méi detailléiert Parameteren. Mir hunn ugefaang d'Grënn fir d'Feeler z'ënnersichen, a wa fir Timeouts alles méi oder manner kloer ass: d'Internet a China "beweegt an an eraus", well dëst ass d'Geschwindegkeet vun der Verbindung an d'Luede vu Ressourcen aus dem Ausland onbestÀnneg an onglÀich, dann hunn d'DNS Feeler eis immens iwwerrascht. Mir hunn dat fonnt PoP Cloudflare sinn tatsÀchlech a China lokaliséiert, d'Site Adress léist op eng Anycast IP, awer d'DNS Server sinn amerikanesch, dofir sinn DNS Ufroe gezwongen iwwer d'Grenz ze goen, also heiansdo falen se.
Nodeems Dir dës Fro mam CF geklÀert huet, huet et sech erausgestallt Si hunn net hir eege DNS Serveren a China, a wéini et wÀert sinn ass nach onbekannt.
Dofir hu mir beschloss nëmmen Cloudflare DNS ze testen an de Cloudflare Betribsmechanismus fir eise Site op de "Nëmmen DNS" Dëst ass e Modus wann Cloudflare net Proxy Traffic duerch sech selwer mécht, dat heescht datt et keen DDoS Schutz, CDN an aner Funktiounen ubitt, a funktionnéiert am Modus vun engem normale DNS Server.
DĂ«se Stand ass schematesch an der folgender Figur gewisen. D'Figur berĂŒcksichtegt dat opkomende WĂ«ssen datt d'DNS-Server vun Cloudflare hannert enger Firewall stinn.
Um Catchpoint hu mir einfach GET Tester gemaach (net Browser Tester), déi vill Feeler gewisen hunn. Si goufen duerch déiselwecht DNS Feeler verursaacht.
Mir hunn ugefaang dës Feeler ze Debugging benotzt graff a fonnt datt op der éischter Ufro d'Adress richteg bestëmmt ass, an op widderholl Ufro kréien mir all Kéier SERVFAIL О net fonnt. Firwat geschitt dat op eemol?
root@iZwz97n2wgbp61qucbfrjsZ:~# host semrushchina.cn
semrushchina.cn has address 220.170.186.192
Host semrushchina.cn not found: 2(SERVFAIL)
root@iZwz97n2wgbp61qucbfrjsZ:~# host semrushchina.cn
semrushchina.cn has address 220.170.186.192
Host semrushchina.cn not found: 2(SERVFAIL)
root@iZwz97n2wgbp61qucbfrjsZ:~# host semrushchina.cn
semrushchina.cn has address 220.170.186.192
Host semrushchina.cn not found: 2(SERVFAIL)
root@iZwz97n2wgbp61qucbfrjsZ:~# host semrushchina.cn
semrushchina.cn has address 220.170.186.192
Host semrushchina.cn not found: 2(SERVFAIL)Et gi keng sou Feeler beim Ufro vun Cloudflare NS Serveren direkt:
root@iZwz97n2wgbp61qucbfrjsZ:~# for i in `seq 1 2`; do host semrushchina.cn ray.ns.cloudflare.com.; done
Using domain server:
Name: ray.ns.cloudflare.com.
Address: 173.245.59.138#53
Aliases:
semrushchina.cn has address 220.170.186.192
semrushchina.cn has address 220.170.186.192
Using domain server:
Name: ray.ns.cloudflare.com.
Address: 173.245.59.138#53
Aliases:
semrushchina.cn has address 220.170.186.192
semrushchina.cn has address 220.170.186.192Dëst bedeit datt de Problem op der SÀit vum "lokalen" DNS-Server oder dem Server vum Provider ass.
Weider EnquĂȘte weisen dat SERVFAIL mir krĂ©ien op Entschlossenheet AAAA- records.
Et huet sech erausgestallt datt wann Dir vu Cloudflare gefrot huet AAAA-Rekord deen net am Domain existĂ©iert, huet Cloudflare geĂ€ntwert Đ-en EntrĂ©e deen e Feeler an Net-KonformitĂ©it mam RFC ass. Firwat mĂ©cht de lokale Resolver (xxxx) Ech hunn et net gĂ€r, an hien huet geĂ€ntwert SERVFAIL. DĂ«st Verhalen ass kloer am Logbuch hei Ă«nnen ze gesinn:
root@iZwz97n2wgbp61qucbfrjsZ:~# dig -t AAAA semrushchina.cn @x.x.x.x
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -t AAAA semrushchina.cn @x.x.x.x
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 55467
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;semrushchina.cn. IN AAAA
;; Query time: 334 msec
;; SERVER: x.x.x.x#53(x.x.x.x)
;; WHEN: Tue Aug 14 23:38:50 CST 2018
;; MSG SIZE rcvd: 44
root@iZwz97n2wgbp61qucbfrjsZ:~# dig -t AAAA semrushchina.cn @dana.ns.cloudflare.com.
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -t AAAA semrushchina.cn @dana.ns.cloudflare.com.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63944
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;semrushchina.cn. IN AAAA
;; ANSWER SECTION:
semrushchina.cn. 300 IN A 220.170.186.192
;; Query time: 185 msec
;; SERVER: 173.245.58.105#53(173.245.58.105)
;; WHEN: Tue Aug 14 23:43:03 CST 2018
;; MSG SIZE rcvd: 60
Mir hunn e Feelerbericht op Cloudflare ofginn, a si hunn et no enger ZĂ€it fixĂ©iert. Et huet sech interessant erausgestallt: de Moment gĂ«tt et nach Ă«mmer keng IPv6 ĂnnerstĂ«tzung a China, sou datt Cloudflare seng IPv6 Adress do net konnt ausginn als Ăntwert op eng Ufro AAAA- records. Um Enn war alles esou gelĂ©ist datt Cloudflare ugefaang huet fir China ze Ă€ntweren NODATA op esou Ufroen.
Also sinn DNS Feeler bei Catchpoint Tester staark erofgaang, awer net komplett. Timeouts sinn nach ëmmer hei:
A mir hunn ugefaang no enger anerer Léisung ze sichen.
Am nÀchsten Deel wÀert ech Iech soen wéi mir déi chinesesch Wollek getest hunn Alibaba Cloud, wéi mir mat der Hëllef vun enger klenger "Magie" vun Nginx séier PoC (Proof of Concept) Léisunge kreéiere konnten, wéi mir Multi-Cloud Léisungen erstallt hunn, vun deenen eng schlussendlech immens gehollef huet d'Aarbecht vum Service ze beschleunegen. aus China.
Bleift drun!
NĂ€chst Deeler
Source: will.com
