Ki jan nou kraze gwo pare-feu Lachin (Pati 1)

Всем Привет!

Nikita an kontak - yon enjenyè sistèm nan konpayi an SEMrush. Jodi a mwen pral di w sou fason nou te fè fas a travay la nan asire estabilite nan sèvis semrush.com nou an nan Lachin, ak ki pwoblèm nou te rankontre pandan aplikasyon li (bay kote sant done nou an sou kòt lès Etazini).

Sa a pral yon gwo istwa, divize an plizyè atik. Mwen pral di ou ki jan tout bagay te rive pou nou: soti nan yon sèvis konplètman ki pa fonksyonèl soti nan Lachin, nan endikatè pèfòmans nan sèvis la nan nivo vèsyon Ameriken li yo pou Ameriken yo. Mwen pwomèt li pral enteresan ak itil. Donk, ann ale.

Pwoblèm entènèt Chinwa a

Menm moun ki pi lwen soti nan spesifik yo nan administrasyon rezo te tande pale de Gran Firewall nan Lachin. Wow, son fre, dwa? Men, ki sa li ye ak ki jan li aktyèlman ap travay se yon kesyon olye konplike. Ou ka jwenn anpil atik sou entènèt la konsakre nan sa a, men nan yon pwen de vi teknik, estrikti nan firewall sa a pa dekri nenpòt kote. Ki, sepandan, se pa etone. Mwen pral admèt touswit ke baze sou rezilta yo nan yon ane nan travay, mwen pa pral kapab di egzakteman ki jan li fonksyone, men mwen ka di ou sou kòmantè mwen yo ak konklizyon pratik. Epi nou pral kòmanse ak rimè sou firewall sa a.

Gen anpil rimè sou firewall sa a anpil. Ann kolekte prensipal ak pi enteresan nan yo nan yon sèl lis:

  • Google, Facebook, Twitter ak lòt sèvis ki sanble yo bloke epi yo pa travay nan peyi Lachin.
  • Nenpòt trafik ki ale deyò Lachin ak ANTRE Lachin analize ak limite lè l sèvi avèk aprantisaj machin (nan ka trafik sispèk), ki ralanti anpil li (trafik) pase nan fwontyè a.
  • Ajans entèlijans Chinwa yo pral pirate nenpòt trafik chiffres pase nan firewall yo.
  • Tinèl VPN, tinèl IPSEC yo enstab, aksidan epi yo toujou bloke.
  • Plis chifreman an pi senp, se pi senp fraz pasaj yo itilize pou otantifye / ankripte trafik, se pi vit li ale nan firewall Chinwa a.

Men sa nou te jwenn sou rimè sa yo:

  • Google, Facebook, Twitter ak lòt sèvis menm jan yo tout bon bloke (KO ou), men anpil domèn teknik Google, pou egzanp, yo pa entèdi ak travay (gstatic.com a menm). Konklizyon an soti nan sa a: ou pa ta dwe ensousyan koupe tout Google ak lòt resous ki sanble yo bloke.
  • Nenpòt trafik ki pase fwontyè a vrèman ajoute reta grav nan tan li. Gade de rezilta yo. Yon sit, yon paj, senp GET pli'om. Premye mezi a te soti nan Lachin tèt li (bèl vil Shenzhen). Dezyèm lan te mezire soti deyò soti nan Hong Kong (li gen souverènte, epi pa gen okenn firewall ant li ak mond lan). Distans ki genyen ant vil yo nan yon liy dwat se apeprè 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/s

Prete atansyon a tan_konekte. Ak an jeneral, ou wè rezilta a: pare-feu a ajoute 4 segonn siplemantè, ki se monstruman long.

  • Tinèl VPN ak IPSEC echwe souvan. Mwen pral pale sou sa a yon ti kras pita ak nan plis detay. Sèvè VPN ke itilizatè yo itilize yo bloke sou tan (anjeneral nan yon jou apre kòmansman an nan itilize).
  • Gen yon opinyon yo resevwa nan men moun k ap viv nan peyi Lachin ki pi senp chifreman an nan trafik, pi vit pase fwontyè a, paske li fasil pou konprann ke pa gen anyen ilegal sou li. Ak nan menm fason an, trafik "pwòp" resevwa plis Pleasant ak vitès nan pasaj, pandan y ap "sal" trafik, nan ki pa gen anyen ka konprann, resevwa, okontrè, yon pasaj pi dousman. Pa egzanp mwen pral sèvi ak boukl pou ifconfig.co atravè HTTPS ak HTTP pwotokòl.

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/s

Yon diferans 5 segonn pou yon tan total download 13 bytes. Anplis, lè w ap fè tès sa a plizyè fwa, ou ka remake ke GET sou HTTP fini an jeneralman menm tan chak fwa, pandan y ap sou HTTPS sit la pafwa reponn nan 3, 5, 10 e menm 17 segonn. Pafwa erè SSL rive:

Unknown SSL protocol error in connection to ifconfig.co:443.

Se konsa, sa nou genyen:

  • Pwoblèm yo kreye pa firewall Chinwa yo dekri pi wo a.
  • Ping nan resous ekstèn ak tinèl andedan yo disparèt detanzantan.
  • Latansi ant de pwen yo toujou ap chanje, e souvan li se tou senpleman enprevizib. Lè w konekte diferan vil/rejyon, ou espere ke, baze sou kote jewografik rejyon yo, reta a pral mwens, men ou jwenn egzakteman sitiyasyon opoze a.
  • Entènèt ak chanèl kominikasyon yo swa rapid oswa dousman. Gen yon ti depandans sou lè nan jounen an ak jou nan semèn nan, men se pa toujou.
  • Demann DNS nan mond lan deyò ki soti nan Lachin pafwa depase delè a pèmèt.

Foto ki parèt la se tou senpleman "ekselan."

Sant done a, jan mwen te deja di, se nan lès Etazini, ak tout SEMrush la konsiste de plizyè douzèn pwodwi ki konekte, backend, frontends, baz done, ak tout bagay sa yo nan DC a ak nyaj. Nou menm, kòm yon ekip administratè sistèm, yo te bay travay la byen vit kòmanse travay nan Lachin ak ti kras efò.

Nou te oblije reponn yon kesyon enpòtan: èske li posib pou w ale ak ti depans epi rezoud tout pwoblèm ki asosye ak entènèt Chinwa ak firewall nan nivo rezo/nwaj/sèvè?

Nou te kòmanse pa resevwa ICP-lisans.

Lisans ICP

Pou kapab òganize sèvis ou nan peyi Lachin (Mainland Lachin) epi fè tès, ou dwe premye jwenn yon lisans ICP pou domèn nan.

Si trafik itilizatè sit ou a sispann nan tè pwensipal Lachin, epi si domèn ou a pa gen yon lisans ICP, trafik ou a pral bloke sou bò ISP/hÊbergement. Enteresan, lisans ICP a gen ladan yon founisè espesifik, kit li Cloudflare oswa Alibaba Cloud. Se poutèt sa, si ou te resevwa yon lisans ICP pou Cloudflare epi òganize sit entènèt ou a avèk yo, ou pa pral kapab "san pwoblèm" deplase nan Alibaba Cloud. Ou pral bezwen ajoute yon lòt hosting nan lisans sa a.

Lè nou te resevwa yon lisans ICP pou domèn nan, nou te kapab vini ak aplike ide espesifik teknik ak solisyon.

Tès solisyon yo

Men, anvan ou dirèkteman kreye opsyon etap, vire bouton yo, optimize pèfòmans sit la ak vitès li, ou bezwen chwazi yon zouti pou teste li yo nan lòd yo wè kilès nan aksyon nou yo amelyore oswa, okontrè, vin pi mal pèfòmans sit la.

Zouti tès nou an te dwe satisfè de kondisyon prensipal:

  • li ta dwe kapab kouri tès soti nan Lachin,
  • li dwe gen tès navigatè.

Se konsa nou jwenn Pwen pwan! Yo gen pwoteksyon ekselan nan kote tès yo atravè mond lan. Nan Lachin, tès yo ka kouri tou nan 100500 pwovens atravè zouti sa a. Chak gen plizyè founisè diferan + kapasite nan fè Backbone-tès (yon bagay tankou yon machin vityèl nan yon sant done) ak Lastmile-tès (pi pre ke posib nan kondisyon itilizatè, aka estasyon travay). Dènye kalite tès yo pi chè.

Èske w gen konkli yon kontra anyèl (mwens pase sa pa posib), nou te kòmanse etidye enstriman an. Franchman, nou te etone plezant pa fonksyonalite li yo. Ou ka kouri:

  • Tès DNS,
  • Tès entènèt (tès navigatè, senp GET/POST, imitasyon kliyan mobil, elatriye),
  • Chèk tranzaksyon (pa egzanp, login),
  • Tès API,
  • Ping, traceroute, NTP, elatriye.

Ou pa ka lis tout bagay. Ak sa ki pi enpòtan, chak tès ka Customized byen byen lè yo ajoute yon pakèt moun sou tèt ak lòt paramèt. Pwodiksyon an se yon gwo kantite enfòmasyon ki dekri konplètman tès ou a. Si nou pale sou bagay ki pi enteresan pou nou (tès navigatè), rezilta a gen ladan:

  • Konekte, tann, chaje, SSL, tan DNS,
  • TTFB, TTLB, dokiman konplè, tan rann, chaj DOM,
  • Repons (yon bagay ki toupre Time To First Byte), Repons Paj Web (yon bagay tou pre Time To Last Byte),
  • Nenpòt percentile, mwayèn, tan medyĂ n
  • elatriye.

An konsekans, tout mezi sa yo bon pou wè chanjman ak konprann si bagay yo te vinn pi byen. Nou sitou gade Repons, Repons Paj Web, Medyàn, 75 ak 95 percentiles.

Yon kesyon enpòtan ki te nan lè a depi nan kòmansman an: Èske ou ka fè Catchpoint konfyans?? Èske zouti sa a reflete vitès chaj reyèl sit la nan Lachin nan diferan vil, oswa èske se jis kèk kalite tès nan yon vakyòm ki pa gen anyen fè ak eksperyans itilizatè reyèl?
Sa a se yon gwo pwoblèm, paske yo te nan Larisi li se prèske enposib pou chèche konnen ki jan yon sit ki soti nan Lachin ap travay. Lè w fè yon chosèt-proxy atravè yon machin vityèl, rezilta final la se ke sit la chaje nan yon koup de minit, ki se tou senpleman akseptab pou tès yo, kidonk sèlman opsyon pou tès manyèl se pli ak senp GET soti nan konsole a ak yon revèy. . Sa a ede paske tès sa a byen reflete vitès solisyon rezo a, epi si gen tou tès navigatè, Lè sa a, li trè bon.

Pita nou menm nou te ale nan peyi Lachin e yo te konvenki ke Ou ka fè Catchpoint konfyans; li byen reflete endikatè pèfòmans reyèl.

Cloudflare Lachin rezo

Depi nou itilize Cloudflare avèk siksè pou domèn prensipal semrush.com, nou deside imedyatman eseye karakteristik yo rele yo. Rezo Lachin. Opsyon sa a aktive sèlman pou sit Enterprise sou demann separe ak pou yon frè adisyonèl. Li disponib tou sèlman pou sit ki gen yon lisans ICP ki apwopriye ki bay lis Cloudflare kòm founisè a. Apre li pèmèt li, "Chinese CDN" ki soti nan Cloudflare vin disponib pou sit la - trafik ki soti nan rejyon Chinwa yo ateri nan PoP (Pwen Prezans) CF ki pi pre a, ak Lè sa a, atravè rezo li yo oswa rezo founisè/patnè li yo delivre nan orijin. .

Dyagram nan ban tès sa a prezante anba a.

Sa a se yon gwo opsyon pou nou. Li sanble ke domèn nan dezyèm pral tou pou CF, ki pa ajoute nan kantite solisyon yo itilize nan konpayi an, epi tou li pratikman pa konplike enfrastrikti a.

Nou te fè tès navigatè ak sa a se sa ki te pase:

Diamonds wouj yo se echèk tès yo. Fichye ki anba yo se erè DNS (rezoud tan). Echèk yo nan tèt yo se timeout.

Disponibilite: 86.6
MedyĂ n: 18s
75 percentile: 29.3s
95 percentile: 60s

Medyàn, apre chajman yo te retire reCaptcha (Google sèvis bloke nan Lachin) diminye soti nan 28 a 18 segonn. Men, sa yo se toujou rezilta terib, konsidere ke tès la menm pou semrush.com (ki soti nan peyi Etazini an) te bay mwens pase 10 segonn pou 95% nan itilizatè (soti nan US la) sou menm paj la (estatik + dinamik).

Ou ka ale nan chak tès epi gade Cascade ak lòt paramèt ki pi detaye. Nou te kòmanse mennen ankèt sou rezon ki fè erè yo, epi si pou timeout tout bagay se plis oswa mwens klè: Entènèt la nan Lachin "deplase nan ak soti", akòz sa a vitès la nan koneksyon ak loading nan resous ki soti aletranje se enstab ak inegal, Lè sa a, erè dns yo anpil sezi nou. Nou te jwenn sa PoP Cloudflare yo aktyèlman sitiye nan Lachin, adrès sit la rezoud nan yon IP anycast, men sèvè DNS yo Ameriken, se poutèt sa demann DNS yo fòse yo ale atravè fwontyè a, kidonk pafwa yo echwe.

Èske w gen klarifye kesyon sa a ak CF, li te tounen soti sa Yo pa gen pwòp sèvè DNS yo nan peyi Lachin, ak lè li pral se toujou enkoni.

Se poutèt sa, nou deside teste sèlman Cloudflare DNS epi chanje mekanis opere Cloudflare pou sit nou an nan "DNS sèlman" Sa a se yon mòd lè Cloudflare pa proxy trafik nan tèt li, ki vle di li pa bay pwoteksyon DDoS, CDN ak lòt karakteristik, epi li opere nan mòd nan yon sèvè DNS regilye.

Sa a kanpe yo montre schematic nan figi sa a. Figi a pran an kont konesans kap fè konnen sèvè DNS Cloudflare yo dèyè yon firewall.

Nan Catchpoint nou te fè tès GET senp (pa tès navigatè), ki te montre anpil echèk. Yo te koze pa menm erè DNS yo.

Nou te kòmanse debogaj erè sa yo lè l sèvi avèk fouye epi li te jwenn ke sou premye demann lan yo detèmine adrès la kòrèkteman, epi sou demann repete nou resevwa chak fwa SERVFAIL и pa jwenn. Poukisa sa rive toudenkou?

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)

Lè w ap fè rechèch sou sèvè Cloudflare NS dirèkteman, pa gen okenn erè sa yo:

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

Sa vle di ke pwoblèm nan se sou bò a nan "lokal" sèvè DNS la oswa sèvè founisè a.
Pli lwen envestigasyon revele sa SERVFAIL nou jwenn sou rezolisyon AAA-dosye.

Li te tounen soti ke lè mande nan Cloudflare AAA-dosye ki pa egziste nan domèn nan, Cloudflare reponn А-yon antre ki se yon erè ak ki pa konfòme ak RFC la. Poukisa rezolisyon lokal la (xxxx) Mwen pa t renmen li, li reponn SERVFAIL. Konpòtman sa a vizib klèman nan jounal ki anba a:

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

Nou te soumèt yon rapò ensèk bay Cloudflare, epi yo te ranje li apre kèk tan. Li te tounen enteresan: nan moman sa a toujou pa gen sipò IPv6 nan peyi Lachin, kidonk Cloudflare pa t 'kapab bay adrès IPv6 li la an repons a yon demann. AAA-dosye. Nan fen a, tout bagay te rezoud nan yon fason ke Cloudflare te kòmanse reponn pou Lachin NODATA nan demann sa yo.

Kidonk, erè DNS nan tès Catchpoint diminye sevè, men se pa konplètman. Delè yo toujou isit la:

Epi nou te kòmanse chèche yon lòt solisyon.

Nan pwochen pati a mwen pral di w ki jan nou teste nwaj Chinwa a Alibaba Cloud, Ki jan, avèk èd nan yon ti "majik" nan Nginx, nou te kapab byen vit kreye solisyon PoC (Prèv Konsèp), ki jan nou te kreye solisyon Multi-Cloud, youn nan ki finalman anpil te ede pi vit travay la nan sèvis la soti nan Lachin.

Rete branche!

Pwochen pati yo

KONNEN pati

Sous: www.habr.com

Achte hosting serye pou sit ki gen pwoteksyon DDoS, sèvè VPS VDS 🔥 Achte yon hébergement sit entènèt serye ak pwoteksyon DDoS, sèvè VPS VDS | ProHoster