Quelques outils pour du debug plus ou moins avancé du DNS.
Avant la version du 12 avril, dnstraceroute utilise une socket de type DGRAM (UDP) + ICMP. Par défaut, sous Debian GNU/Linux (et sous Ubuntu et Fedora, visiblement), ces sockets ne peuvent pas être créées. Par personne, même pas par root. Python sort de la manière suivante :
File "/usr/lib/python3.4/socket.py", line 123, in __init__
_socket.socket.__init__(self, family, type, proto, fileno)
PermissionError: [Errno 13] Permission denied
Ce refus est piloté depuis net.ipv4.ping_group_range. Voir https://lkml.org/lkml/2011/5/18/305 . 1 0 est la valeur par défaut et indique que personne ne peut créer une socket de ce type. 1000 1000 autorise uniquement mon utilisateur (qui a un guid = 1000). 0 0 autorise root. Etc.
C'est la ressource suivante qui m'a permis de remonter à cette clé sysctl : https://sturmflut.github.io/linux/ubuntu/2015/01/17/unprivileged-icmp-sockets-on-linux/
Attention, il ne faut pas confondre avec une socket de type RAW + ICMP comme ce qu'utilise ping. Ces sockets-là peuvent être créées par root ou par tout programme qui a la capability cap_net_raw, ce qui est le cas de ping :
$ sudo getcap /bin/ping
/bin/ping = cap_net_raw+ep
Je note qu'en utilisant les sockets DGRAM, dnstraceroute ne reçoit visiblement pas les messages ICMP TTL expired puisque les IPs n'apparaissent pas alors que Wireshark voit très bien les ICMP TTL expired. Rien à redire en mode RAW.