Première rédaction de cet article le 26 mars 2010
Dernière mise à jour le 16 novembre 2010
Avant de lire cet intéressant article, merci de prendre connaissance d'un avertissement préalable : dès qu'il s'agit de la Chine, il faut bien admettre qu'on ne sait pas grand'chose. La plupart des gens qui pontifient sur la situation de l'Internet en Chine ne parlent pas chinois et ne connaissent du pays que les hôtels internationaux de Pékin et Shanghai. (Le prix de l'énormité pro-chinoise revient au député UMP pro-LOPPSI Jacques Myard pour son soutien à la dictature.) Quand il s'agit du DNS, un des services les moins compris d'Internet, le taux de production de conneries augmente considérablement et la combinaison des deux fait donc que la plupart des phrases où il y a « DNS » et « Chine » sont fausses...
Je vais donc essayer de ne pas faire comme Myard, de ne parler que de ce que je connais, ce qui va donc rendre cet article assez court et plein de conditionnels. Contrairement aux films policiers états-uniens, à la fin de cet article, vous ne connaitrez pas le nom du coupable, vous ne saurez même pas s'il y a eu crime...
À plusieurs reprises (par exemple lors de la réunion IETF à Paris en 2005) a été discutée la question d'un détournement du trafic des serveurs DNS de la racine en Chine, afin de mettre en œuvre les politiques, notamment de censure, de la dictature chinoise. Il est très difficile de savoir exactement ce qui se passe en Chine car les utilisateurs chinois, pour des raisons culturelles mais, surtout, par peur de la répression, ne diffusent guère d'informations. Bien sûr, des tas de gens voyagent en Chine mais ils ne sont pas forcément experts du DNS et il est difficile d'obtenir d'eux des résultats de mtr ou des dig exécutés correctement et avec les bonnes options. Les rapports existants sur la censure de l'Internet en Chine sont souvent pauvres en détails techniques.
Toutefois, de temps en temps, le détournement a des conséquences
visibles à l'extérieur. C'est ainsi que, le 24 mars, le responsable
technique de .cl
note que
le serveur racine I, anycasté et
géré par Netnod,
répond bizarrement depuis le Chili :
$ dig @i.root-servers.net www.facebook.com A ; <<>> DiG 9.6.1-P3 <<>> @i.root-servers.net www.facebook.com A ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7448 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.facebook.com. IN A ;; ANSWER SECTION: www.facebook.com. 86400 IN A 8.7.198.45 ;; Query time: 444 msec ;; SERVER: 192.36.148.17#53(192.36.148.17) ;; WHEN: Wed Mar 24 14:21:54 2010 ;; MSG SIZE rcvd: 66
Les serveurs racine ne font pas autorité pour
facebook.com
. Il aurait donc du renvoyer une
réference aux serveurs de
.com
. Au lieu de cela, on
trouve une adresse IP inconnue. Bref, quelqu'un
détourne le trafic du serveur. En effet :
À noter que le pirate ne se cache même pas. Si on utilise la requête
CH TXT hostname.bind
(on demande au serveur son
nom), au lieu du vrai nom (par exemple s1.sth
),
on obtient le nom du pirate (par exemple
c1-zaojunmiao-ns1
) ce qui montre bien que le
vrai serveur racine I est innocent.
Si vous voulez tester vous-même, le réseau
123.112.0.0/12
, hébergé par China Unicom, est un exemple curieux (à noter qu'il ne répond que pour les noms censurés) :
% dig A www.facebook.com @123.123.123.123 ; <<>> DiG 9.5.1-P3 <<>> A www.facebook.com @123.123.123.123 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44684 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.facebook.com. IN A ;; ANSWER SECTION: www.facebook.com. 86400 IN A 37.61.54.158 ;; Query time: 359 msec ;; SERVER: 123.123.123.123#53(123.123.123.123) ;; WHEN: Fri Mar 26 10:46:52 2010 ;; MSG SIZE rcvd: 66
(L'adresse 37.61.54.158
n'est pas actuellement
affectée et n'est pas une adresse de Facebook.)
Une autre solution pour tester est de trouver un résolveur DNS
ouvert en Chine (c'est la méthode suivie par l'article de Lowe,
Winters et Marcus cité plus loin). Quelques essais/erreurs et on
trouve que ns.bnu.edu.cn
veut bien répondre
(attention, il est très lent) :
% dig +short @ns.bnu.edu.cn www.bortzmeyer.org 208.75.84.80
La réponse est correcte. Et avec un nom censuré ?
% dig +short @ns.bnu.edu.cn www.twitter.com 37.61.54.158
Réponse mensongère (37.0.0.0/8
n'est même pas alloué).
Enfin, si vous êtes situé en Chine, c'est encore plus simple (ici dans le Liaoning) :
% dig A www.facebook.com. ... ;; ANSWER SECTION: www.facebook.com. 86400 IN A 46.82.174.68
Cette adresse n'est pas officiellement allouée. Encore plus drôle, une adresse IPv4 multicast :
% dig A www.twitter.com ... ;; ANSWER SECTION: www.twitter.com. 86400 IN A 243.185.187.39
À noter que les résultats ne seront pas forcément les mêmes selon que le nom de domaine est un IDN ou pas. La censure ne trafique pas que le routage !
Il est donc très probable qu'il existe en Chine des copies pirates des serveurs racine, et que les FAI chinois ont bricolé leur IGP (OSPF ou autre) pour détourner le trafic à destination des serveurs racine (variante de l'explication : des équipements intermédiaires, par exemple des routeurs, réécrivent les paquets). Cela n'explique quand même pas tout (par exemple pourquoi les copies fiables installées en Chine voient quand même un trafic DNS non négligeable) mais, sans tests détaillés faits un peu partout en Chine, difficile d'en dire plus.
À propos de tests détaillés, si vous êtes
en Chine, et que vous avez une machine Unix,
j'apprécierai que vous fassiez tourner le programme dns-china.sh
et que vous me renvoyiez le résutat. Comme il
produit beaucoup de données (et prend du temps), une façon de le faire
tourner est sh dns-china.sh 2>&1 >
/tmp/dns-china.log
et vous pouvez ensuite m'envoyer le
fichier /tmp/dns-china.log
. Précisez bien si vous
voulez que je cite votre nom, je remercie normalement tout le monde
mais, ici, pour des raisons évidentes, je ne citerai que les gens qui
le demandent. Un exemple de résultat (depuis un hôtel pékinois) est disponible.
Merci aux premiers et anonymes (pour vous, pas pour moi) testeurs, qui ont permis de voir que la Chine, c'est grand, et qu'on n'observe pas le même résultat selon les régions et/ou les opérateurs (par exemple, un test depuis Shanghai montre d'autres résultats, où les réponses des serveurs racine ne sont pas réécrites).
Bref, une fois qu'il est établi qu'il y a réécriture de certaines réponses DNS en Chine, revenons au Chili. Pourquoi ont-ils vu le problème ? Une fuite de ce bricolage de routes (analogue à celle qui avait touché YouTube) explique sans doute que l'annonce du serveur pirate ait atteint l'autre bout du Pacifique...
On pourrait penser qu'il suffit aux internautes chinois de créer un VPN avec un réseau à l'étranger, avec service DNS, pour échapper à cette censure mais la dictature est efficace : elle ne compte pas sur une seule méthode technique, elle en utilise plusieurs (filtrage IP, interception HTTP, DPI, etc).
Parmi les sources d'information fiables sur les manipulations DNS
en Chine, l'excellent article technique de Graham Lowe, Patrick
Winters et Michael L. Marcus « The Great DNS Wall
of China » (bonne méthodologie et étude sérieuse) ou
le « Report
about national DNS spoofing in China ». Des
bizarreries dues au filtrage chinois avaient déjà
été signalées. Le NIC chilien a documenté ses observations en espagnol et
en
anglais. Les réécritures faites en Chine par la censure peuvent
avoir des conséquences techniques complexes, et parfois défavorables
au censeur (voir l'analyse
touffue de David Dagon, le chercheur en sécurité bien
connu). Et quelques articles en anglais sont parus sur le récent
problème décrit ici : « China
censorship leaks outside Great Firewall via root
server » (plutôt technique et de bonne qualité),
« Accidentally
Importing Censorship » (bonne analyse technique avec
notamment une analyse de la probabilité de voir la censure depuis
l'extérieur), « China's
Great Firewall spreads overseas » ou « Web traffic
redirected to China in mystery mix-up ». Si vous
voulez un logiciel qui peut détecter certaines réécritures faites en
Chine, il y a ScholarZhang (ne
me demandez pas de traduire le README
!) Une
version autonome a
été publiée.
D'autre part, Jean-Marc Liotier a fait une très bonne traduction en anglais de cet article, pour ceux qui sont plus à l'aise avec la langue de Jasper Fforde.
Merci à Hauke Lampe et Marco Davids pour leur aide technique et bien sûr à Mauricio Vergara Ereche pour ses excellentes observations depuis Santiago.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)