Comment nous avons contourné le Grand Pare-feu de Chine (partie 3)

Bonjour !
Toutes les bonnes histoires ont une fin. Et notre histoire sur la façon dont nous avons trouvé une solution pour contourner le Grand Firewall de Chine ne fait pas exception. Je suis donc ravi de partager avec vous la derniÚre partie, la partie finale à ce sujet.

Dans la partie prĂ©cĂ©dente, nous avons parlĂ© de nombreux bancs d'essai que nous avons conçus et des rĂ©sultats qu'ils ont donnĂ©s. Et nous nous Ă©tions arrĂȘtĂ©s sur le fait qu'il serait bon d'ajouter un CDN ! pour la cohĂ©sion de notre schĂ©ma.

Je vais vous raconter comment nous avons testé Alibaba Cloud CDN, Tencent Cloud CDN et Akamai, et quelle solution nous avons finalement choisie. Et bien sûr, nous ferons un résumé.

Comment nous avons contourné le Grand Pare-feu de Chine (partie 3)

Alibaba Cloud CDN

Nous sommes hébergés chez Alibaba Cloud, utilisant IPSEC et CEN de leur part. Il serait logique de commencer par essayer leurs solutions.

Alibaba Cloud propose deux types de produits qui pourraient nous convenir : CDN et DCDN. La premiĂšre option est un CDN classique pour un domaine spĂ©cifique (sous-domaine). La seconde option se dĂ©chiffre en Dynamic Route for CDN (que j'appelle CDN dynamique), qui peut ĂȘtre activĂ© en mode Full-site (pour les domaines wildcard), il met Ă©galement en cache la statique et accĂ©lĂšre le contenu dynamique, c'est-Ă -dire que la dynamique de la page sera Ă©galement chargĂ©e via les rĂ©seaux rapides du fournisseur. C'est important pour nous, car notre site est principalement dynamique, utilisant de nombreux sous-domaines, et il est plus pratique de configurer le CDN une seule fois pour “l'astĂ©risque” — *.semrushchina.cn.

Nous avions déjà vu ce produit lors des premiÚres étapes de notre projet en Chine, mais à l'époque, il ne fonctionnait pas encore, et les développeurs promettaient que le produit serait bientÎt disponible pour tous les clients. Et cela a été fait.

Dans DCDN, vous pouvez :

  • configurer la terminaison SSL avec votre propre certificat,
  • activer l'accĂ©lĂ©ration du contenu dynamique,
  • configurer de maniĂšre flexible le cache des fichiers statiques,
  • effectuer un purge du cache,
  • faire passer des web sockets,
  • activer la compression et mĂȘme HTML Beautifier.

En gros, tout comme chez les grands fournisseurs de CDN.

AprÚs avoir spécifié l'Origin (l'endroit vers lequel iront les serveurs edge du CDN), il ne reste plus qu'à créer un CNAME pour l'astérisque, pointant vers all.semrushchina.cn.w.kunluncan.com (ce CNAME a été obtenu dans la console Alibaba Cloud), et le CDN fonctionnera.

D'aprÚs les résultats des tests, ce CDN nous a beaucoup aidés. Les statistiques sont ci-dessous.

Solution
Uptime
Médiane
75e percentile
95e percentile

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

Ali CDN + CEN/IPsec + GLB
99.75
10s
12.8s
17.3s

Ce sont de trĂšs bons rĂ©sultats, surtout si on les compare Ă  ceux d'auparavant. Mais nous savions que le test de la version amĂ©ricaine de notre site www.semrush.com s'effectue en moyenne depuis les États-Unis en 8,3 secondes (valeur trĂšs approximative). Il y a du chemin Ă  parcourir. De plus, il y avait d'autres fournisseurs de CDN qui mĂ©ritaient d'ĂȘtre testĂ©s.

Nous passons ainsi en douceur Ă  un autre gĂ©ant du marchĂ© chinois — Tencent.

Tencent Cloud

Tencent dĂ©veloppe encore son cloud — cela se voit par le petit nombre de produits. Au cours de son utilisation, nous avons voulu tester non seulement leur CDN mais aussi l'infrastructure rĂ©seau dans son ensemble :

  • ont-ils quelque chose qui ressemble Ă  CEN ?
  • Comment fonctionne leur IPSEC ? Est-ce rapide, quel est leur uptime ?
  • ont-ils du Anycast ?

Comment nous avons contourné le Grand Pare-feu de Chine (partie 3)

Nous allons examiner ces questions séparément.

Analog CEN

Tencent dispose d'un produit Cloud Connect Network (CCN), permettant de connecter entre eux des VPC de différentes régions, y compris des régions à l'intérieur et à l'extérieur de la Chine. Le produit est actuellement en version beta interne, et il faut créer un ticket pour demander à y accéder. D'aprÚs le support, nous avons appris que les comptes globaux (pas de citoyens chinois ou de personnes morales) ne peuvent pas participer au programme de test beta et ne peuvent généralement pas connecter une région en Chine avec une région à l'extérieur. 1-0 en faveur d'Ali Cloud.

IPSEC

La rĂ©gion la plus au sud de Tencent est Guangzhou. Nous avons créé un tunnel et l'avons connectĂ© Ă  la rĂ©gion de Hong Kong dans GCP (Ă  l'Ă©poque, cette rĂ©gion Ă©tait dĂ©jĂ  accessible). Nous avons Ă©galement ouvert en mĂȘme temps un deuxiĂšme tunnel dans Ali Cloud de Shenzhen Ă  Hong Kong. Il s'est avĂ©rĂ© qu'Ă  travers le rĂ©seau de Tencent, la latence vers Hong Kong est globalement meilleure (10 ms) que de Shenzhen Ă  Hong Kong dans Ali (120 ms — quoi ?). Mais cela n'accĂ©lĂ©rait en aucun cas le fonctionnement du site orientĂ© vers Tencent et ce tunnel, ce qui Ă©tait un fait surprenant et prouvait encore une fois que : la latence — pour la Chine, ce n'est pas un indicateur sur lequel il faut vraiment se concentrer lors du dĂ©veloppement d'une solution pour le contournement du pare-feu chinois.

Anycast Internet Acceleration

Un autre produit permettant de travailler via IP anycast — AIA. Mais il est Ă©galement inaccessible aux comptes globaux, donc je n'en parlerai pas, mais savoir qu'un tel produit existe peut ĂȘtre utile.

Mais le test de CDN a montrĂ© des rĂ©sultats plutĂŽt intĂ©ressants. Le CDN de Tencent ne peut pas ĂȘtre activĂ© sur un site complet, seulement sur des domaines spĂ©cifiques. Nous avons installĂ© des domaines et dirigĂ© du trafic vers eux :

Comment nous avons contourné le Grand Pare-feu de Chine (partie 3)

Il s'est avéré que ce CDN a cette fonction : Optimisation du trafic transfrontalier. Cette fonctionnalité devrait réduire les coûts de passage du trafic à travers le pare-feu chinois. En tant que Origin adresse IP du GLB de Google (GLB anycast). Ainsi, nous voulions simplifier l'architecture du projet.

Les rĂ©sultats ont Ă©tĂ© trĂšs bons — au niveau de l'Ali Cloud CDN, et parfois mĂȘme meilleurs. C'est surprenant, car en cas de rĂ©ussite des tests, il serait possible de se passer d'une part importante de l'infrastructure, des tunnels, CEN, des serveurs virtuels, etc.

Nous avons peu apprécié cette joie, car un problÚme est apparu : les tests dans Catchpoint échouaient pour le fournisseur d'accÚs internet China Mobile. Nous avons reçu un timeout via le CDN de Tencent depuis n'importe quelle localisation. La correspondance avec le support technique n'a rien donné. Pendant environ un jour, nous avons essayé de résoudre ce problÚme, mais sans succÚs.

À ce moment-lĂ , j'Ă©tais en Chine, mais je n'ai pas pu trouver de Wi-Fi public dans le rĂ©seau de ce fournisseur pour vĂ©rifier le problĂšme personnellement. En dehors de cela, tout semblait rapide et bon.
Cependant, étant donné que l'opérateur China Mobile fait partie des trois plus grands opérateurs, nous avons dû renvoyer le trafic vers l'Ali CDN.
Mais dans l'ensemble, c'était une solution assez intéressante qui mérite un test et un dépannage plus approfondis.

Akamai

Le dernier fournisseur CDN que nous avons testé est Akamai. C'est un grand fournisseur qui possÚde son propre réseau en Chine. Bien sûr, nous ne pouvions pas passer à cÎté.

Comment nous avons contourné le Grand Pare-feu de Chine (partie 3)

DĂšs le dĂ©part, nous avons convenu avec Akamai d'une pĂ©riode d'essai, afin que nous puissions activer le domaine et voir comment il fonctionnerait sur leur rĂ©seau. Je dĂ©crirai les rĂ©sultats de tous les tests sous forme de “Ce que j'ai aimĂ©â€ et “Ce que je n'ai pas aimĂ©â€, ainsi que les rĂ©sultats des tests.

Ce que j'ai aimé :

  • Les Ă©quipes d'Akamai sont trĂšs aidantes dans toutes les questions et nous ont accompagnĂ©s Ă  chaque Ă©tape des tests. Ils ont constamment cherchĂ© Ă  amĂ©liorer quelque chose de leur cĂŽtĂ©. Ils ont donnĂ© de bons conseils techniques.
  • Akamai fonctionne environ 10 Ă  15 % plus lentement que notre solution via Ali Cloud CDN. Ce qui est impressionnant, c'est que pour Akamai, nous avons indiquĂ© l'adresse IP du GLB en tant qu'origine, ce qui signifie que le trafic ne passait pas par notre solution (il est donc potentiellement possible de se passer d'une part de l'infrastructure). Cependant, les rĂ©sultats des tests ont montrĂ© que cette option Ă©tait moins bonne que notre solution actuelle (les rĂ©sultats comparatifs ci-dessous).
  • Il a Ă©tĂ© testĂ© Ă  la fois comme origine GLB et comme origine en Chine. Les deux options sont Ă  peu prĂšs identiques.
  • Oui Sure Route (optimisation automatique du routage). Il est possible de placer un objet de test sur l'Origin, et les serveurs Edge d'Akamai essaieront de l'obtenir (appel GET classique). Pour ces requĂȘtes, la vitesse et d'autres mĂ©triques sont mesurĂ©es, sur la base desquelles le rĂ©seau Akamai optimise les routes, afin que le trafic circule plus rapidement pour notre site et il devient Ă©vident que l'activation de cette fonctionnalitĂ© a rĂ©ellement un impact significatif sur la vitesse de notre site.
  • La versionnage de la configuration dans l'interface web est formidable. Il est possible de faire un Compare pour les versions, de voir un diff. Consulter les versions prĂ©cĂ©dentes.
  • Il est possible de dĂ©ployer une nouvelle version d'abord uniquement sur le rĂ©seau Staging d'Akamai — un rĂ©seau identique Ă  celui de production, mais ce chemin n'affecte pas les utilisateurs rĂ©els. Pour ce test, il faut effectuer un spoofing des enregistrements DNS sur la machine locale.
  • Une vitesse de chargement trĂšs rapide Ă  travers leur rĂ©seau pour de gros fichiers statiques, ainsi que pour tout autre type de fichiers. Un fichier du cache « froid » est rĂ©cupĂ©rĂ© bien plus rapidement qu'un mĂȘme fichier du cache « froid » d'Ali CDN. Pour le cache « chaud », la vitesse est dĂ©jĂ  plus ou moins Ă©quivalente.

Test Ali CDN :

root@shenzhen1:~# curl -o /dev/null -w@curl_time https://en.semrushchina.cn/my_reports/build/scripts/simpleInit.js?v=1551879212
  % Total    % Received % Xferd  Vitesse Moyenne   Temps    Temps     Temps  Courant
                                 Dload  Upload   Total   Dépensé    Restant  Vitesse
100 5757k    0 5757k    0     0   513k      0 --:--:--  0:00:11 --:--:--  526k
time_namelookup:  0.004286
time_connect:  0.030107
time_appconnect:  0.117525
time_pretransfer:  0.117606
time_redirect:  0.000000
time_starttransfer:  0.840348
----------
time_total:  11.208119
----------
size_download:  5895467 Bytes
speed_download:  525999.000B/s

Test Akamai :

root@shenzhen1:~# curl -o /dev/null -w@curl_time https://www.semrushchina.cn/my_reports/build/scripts/simpleInit.js?v=1551879212
  % Total    % Received % Xferd  Vitesse Moyenne   Temps    Temps     Temps  Courant
                                 Dload  Upload   Total   Dépensé    Restant  Vitesse
100 5757k    0 5757k    0     0  1824k      0 --:--:--  0:00:03 --:--:-- 1825k
time_namelookup:  0.509005
time_connect:  0.528261
time_appconnect:  0.577235
time_pretransfer:  0.577324
time_redirect:  0.000000
time_starttransfer:  1.327013
----------
time_total:  3.154850
----------
size_download:  5895467 Bytes
speed_download:  1868699.000B/s

Nous avons remarquĂ© que la situation de l'exemple ci-dessus dĂ©pend de diffĂ©rents facteurs. Au moment de rĂ©diger ce point, j'ai refait le test. Les rĂ©sultats pour les deux plateformes se sont rĂ©vĂ©lĂ©s ĂȘtre Ă  peu prĂšs identiques. Cela nous indique que l'internet en Chine, mĂȘme pour de grands opĂ©rateurs et fournisseurs de cloud, se comporte parfois de maniĂšre variable.

À l'Ă©lĂ©ment prĂ©cĂ©dent, j'ajouterai un grand avantage d'Akamai : si Ali prĂ©sente des pics de performances Ă©levĂ©es et des temps trĂšs bas (cela concerne Ă  la fois Ali CDN, Ali CEN et Ali IPSEC), chez Akamai, peu importe combien de fois j'ai testĂ© leur rĂ©seau, tout fonctionne de maniĂšre stable.
Akamai a effectivement une large couverture en Chine et collabore avec de nombreux fournisseurs.

Ce qui n'a pas plu :

  • Je n'aime pas l'interface web et le schĂ©ma de fonctionnement — c'est vraiment basique. Mais dans l'ensemble, on s'y habitue (probablement).
  • Les rĂ©sultats des tests sont pires que ceux de notre plateforme.
  • Il y a plus d'erreurs dans les tests que sur notre plateforme (temps de disponibilitĂ© infĂ©rieur).
  • Il n'y a pas de serveurs DNS propres en Chine. Cela entraĂźne de nombreuses erreurs dans les tests en raison des dĂ©lais d'expiration de la rĂ©solution DNS.
  • Ils ne fournissent pas leurs plages d'IP -> impossible d'Ă©crire correctement set_real_ip_from sur nos serveurs.

Métriques (~3626 exécutions; toutes les métriques, sauf le temps de disponibilité, en ms; statistiques pour une période donnée) :

Fournisseur CDN
Médiane
75%
95%
Response
Réponse de la page web
Uptime
DNS
Connecter
Attente
Charge
SSL

Ali CDN
9195
10749
17489
1,715
10,745
99.531
57
17
927
479
200

Akamai
9783
11887
19888
2,352
11,550
98.980
424
91
1408
381
50

Distribution par percentiles (en ms) :

Percentile
Akamai
Ali CDN

10
7,092
6,942

20
7,775
7,583

30
8,446
8,092

40
9,146
8,596

50
9,783
9,195

60
10,497
9,770

70
11,371
10,383

80
12,670
11,255

90
15,882
13,165

100
91,592
91,596

La conclusion est la suivante : l'option avec Akamai est viable, mais elle ne fournit pas les mĂȘmes niveaux de stabilitĂ© et de vitesse que notre propre solution en combinaison avec Ali CDN.

Petites notes

Certains points n'ont pas été inclus dans le récit, mais j'aimerais aussi en parler.

Pékin + Tokyo et Hong Kong

Comme je l'ai mentionné plus haut, nous avons testé un tunnel IPSEC vers Hong Kong (HK). Mais nous avons également testé CEN vers HK. Il est légÚrement moins cher, et il était intéressant de voir comment il allait fonctionner entre des villes distantes de ~100 km. Il s'avÚre qu'il y a 100 ms de latence supplémentaire entre ces villes par rapport à notre option initiale (vers Taïwan). La vitesse et la stabilité étaient également meilleures pour Taïwan. Au final, nous avons conservé HK comme région de sauvegarde IPSEC.

De plus, nous avons tenté de mettre en place une telle installation :

  • terminaison des clients Ă  PĂ©kin,
  • IPSEC et CEN vers Tokyo,
  • indiquĂ© comme serveur d'origine dans le CDN Ali Ă  PĂ©kin.

Ce schĂ©ma n'Ă©tait pas aussi stable, bien que la vitesse globale ne soit pas infĂ©rieure Ă  notre solution. En ce qui concerne le tunnel, j'ai remarquĂ© des baisses pĂ©riodiques mĂȘme pour CEN, qui Ă©tait censĂ© ĂȘtre stable. Nous sommes donc revenus Ă  l'ancien schĂ©ma et avons abandonnĂ© cette mise en scĂšne.

Vous trouverez ci-dessous des statistiques sur la latence entre différentes régions par différents canaux. Cela peut intéresser certains.

IPsec
Ali cn-beijing GCP asia-northeast1 — 193ms
Ali cn-shenzhen GCP asia-east2 — 91ms
Ali cn-shenzhen GCP us-east4 — 200ms

CEN
Ali cn-beijing Ali ap-northeast-1 — 54ms (!)
Ali cn-shenzhen Ali cn-hongkong — 6ms (!)
Ali cn-shenzhen Ali us-east1 — 216ms

Informations générales sur Internet en Chine

En complément des problÚmes d'Internet décrits au début de l'article, dans la premiÚre partie.

  • Internet en Chine fonctionne assez rapidement Ă  l'intĂ©rieur.
    • Cette conclusion est basĂ©e sur des tests rĂ©alisĂ©s sur des rĂ©seaux Wi-Fi publics dans divers endroits oĂč ces rĂ©seaux sont utilisĂ©s par un grand nombre de personnes.
    • La vitesse de tĂ©lĂ©chargement et de tĂ©lĂ©versement vers les serveurs Ă  l'intĂ©rieur de la Chine Ă©tait d'environ 20 Mbit/s et 5-10 Mbit/s respectivement.
    • La vitesse vers des serveurs en dehors de la Chine est simplement dĂ©risoire, infĂ©rieure Ă  1 Mbit/s.
  • Internet en Chine n'est pas trĂšs stable.
    • Parfois, les sites peuvent se charger rapidement, parfois lentement (Ă  la mĂȘme heure de la journĂ©e, mais diffĂ©rents jours), Ă  condition que la configuration ne change pas. Nous l'avons observĂ© avec semrushchina.cn. Cela peut ĂȘtre attribuĂ© Ă  Ali CDN, qui fonctionne Ă©galement de maniĂšre variable selon l'heure de la journĂ©e, la position des Ă©toiles, etc.
  • Internet mobile est pratiquement partout en 4G ou 4G+. On capte dans le mĂ©tro, les ascenseurs — en gros, partout.
  • L'idĂ©e que les utilisateurs chinois ne font confiance qu'aux domaines en .cn est un mythe. Nous l'avons vĂ©rifiĂ© directement auprĂšs des utilisateurs.
    • On peut voir comment http://baidu.cn redirige vers www.baidu.com (Ă©galement en Chine continentale).
  • De nombreuses ressources sont effectivement bloquĂ©es. Par exemple : google.com, Facebook, Twitter. Mais beaucoup de ressources de Google fonctionnent (bien sĂ»r, ce n'est pas sur tous les Wi-Fi et le VPN n'est pas utilisĂ© (cĂŽtĂ© routeur aussi, c'est certain).
  • De nombreux domaines "techniques" des entreprises bloquĂ©es fonctionnent Ă©galement. Cela signifie qu'il ne faut pas toujours Ă©liminer toutes les ressources Google et autres qui semblent bloquĂ©es sans discernement. Il faut rechercher une liste de domaines interdits.
  • Ils n'ont que trois principaux opĂ©rateurs Internet : China Unicom, China Telecom, China Mobile. Il y en a d'autres plus petits, mais leur part de marchĂ© est insignifiante.

Bonus : le schéma final de la solution

Comment nous avons contourné le Grand Pare-feu de Chine (partie 3)

Conclusion

Il y a un an, nous avons lancĂ© le projet. Nous avons commencĂ© par le fait que notre site refusait complĂštement de fonctionner correctement depuis la Chine, et une simple requĂȘte GET avec curl prenait 5,5 secondes.

Ensuite, avec ces chiffres lors de la premiĂšre solution (Cloudflare) :

Solution
Uptime
Médiane
75e percentile
95e percentile

Cloudflare
86.6
18s
30s
60s

Nous avons finalement obtenu ces résultats (statistiques du dernier mois) :

Solution
Uptime
Médiane
75e percentile
95e percentile

Ali CDN + CEN/IPsec + GLB
99.86
8.8s
9.5s
13.7s

Comme on peut le voir, atteindre un uptime de 100 % n'a pas encore été possible, mais nous allons trouver une solution, et nous vous informerons des résultats dans un nouvel article :)

Respect à ceux qui ont lu les trois parties jusqu'à la fin. J'espÚre que tout cela vous a intéressé autant que moi lorsque je l'ai écrit.

P.S. Parties précédentes

Partie 1
Partie 2

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster