On 03-01-20, Stephane Bortzmeyer wrote: > Le TTL change à chaque paquet. > 2) Quel équipement ferait ça, et pourquoi ?
Vraisemblablement le serveur lui-même. Très certainement pour le fun, ou
pour que des ingénieurs et chercheurs se posent trop de questions :)
En tout cas, le TTL des paquets retours est stable en TCP, donc c'est un
comportement spécifique à l'ICMP.
En analysant rapidement les TTLs observés (merci Perl [1] pour l'histogramme
rapide) :
$ ping -c 500 -i 0.2 114.114.114.114 | sed -nr 's/.*ttl=([0-9]*).*/\1/p' |
sort -n | uniq -c | perl -lane 'print $F[1], "\t", "*" x $F[0]'
50 ***************
51 *************
52 ************
53 ****************
54 *****************
55 ****************
56 ***************
57 *****************
58 ************
59 *********************
60 ************
61 ****************
62 ******************
63 *************
64 ******************
65 **************
66 ***************
67 ***************
68 **************
69 *********************
70 **************
71 ***********
72 ****************
73 *******************
74 ****************
75 ********************
76 **************
77 *****************
78 **************
79 ***********
80 ******************
81 **********
Les TTLs ont donc l'air d'être tirés de façon à peu près uniforme.
En TCP j'ai un TTL retour de 42, donc en supposant qu'ils partent à 64 ça
fait un décalage de 22 : ils tirent donc les TTLs uniformément entre 72 et 103.
C'est possible de faire quelque chose d'approchant avec iptables (man
iptables-extensions) :
for ttl in {0..31}
do
iptables -t mangle -A OUTPUT -p icmp --icmp-type echo-reply -m statistic
--mode nth --every 32 --packet $ttl -j TTL --ttl-set $((ttl+72))
done
Là ça donne des TTL dans l'ordre, mais en cherchant un peu on doit pouvoir
faire des séquences pseudo-aléatoires. Il y a un autre mode où on peut
appliquer une règle avec une certaine probabilité, mais là ça devient
chaud de faire une distribution uniforme à partir de ça.
Bon en tout cas, quelle que soit la méthode, ils ont l'air de s'être bien
amusés et je pense que c'est la réponse à ta question :)
Baptiste
[1]
https://unix.stackexchange.com/questions/177777/drawing-a-histogram-from-a-bash-command-output
signature.asc
Description: PGP signature
