Tor, IPv6 et prises de tête

Chez nos-oignons, nous faisons tourner plusieurs relais de sortie tor à haute capacité, et comme nous sommes en 2020, la plupart ont de l'IPv6. Tout allait bien, jusqu'à ce qu'on se penche sur le cas d'elenagb, notre nœud hébergé chez Aquilenet, et nommé d'après la professeure et écrivaine italienne Elena Gianini Belotti. En effet, le consensus pensait que son exit policy était reject *:*, alors que nous voulions qu'il soit un relai de sortie. La seule différence avec nos autre relais était que comme notre hébergeur ne nous attribuait pas l'IPv4, nous nous étions mis d'accord pour n'avoir que du trafic sortant du réseau tor en IPv6. Il y avait donc, quelque part, sûrement, un soucis de configuration. Le torrc ressemblait à ça. En partant du principe que tout le reste soit correctement configuré (ORPort, address, …), arrivez-vous à débusquer l'erreur?

# No exit in ipv4
ExitPolicy reject *:*

# Reduced exit policy in IPv6
ExitPolicy accept6 *:20-23     # FTP, SSH, telnet
…
ExitPolicy accept6 *:64738     # Mumble
ExitPolicy reject6 *:*

L'astuce comme souligné dans le ticket 16069 est que la configuration reject *:* rejette l'IPv4 ainsi que l'IPv6 pour des raisons historiques. À ce sujet, la documentation indique :

Les entrées accept6 et reject6 affectent seulement les politiques de sortie Ipv6. Utiliser des IPv4 avec accept6 et reject6 sera ignoré et générera une alerte. Les entrées accept/reject permettent de prendre en compte l'IPv4 ainsi que l'IPv6. Utiliser *4 comme adresse IPv4 générique, et *6 comme IPv6 générique. accept/reject * sont utilisés comme générique concernant IPv4 et IPv6.

La bonne configuration ressemblerait donc plutôt à ceci:

# No exit in ipv4
ExitPolicy reject *4:*

# Reduced exit policy in IPv6
ExitPolicy accept6 *:20-23     # FTP, SSH, telnet
ExitPolicy accept6 *:43        # WHOIS
…
ExitPolicy accept6 *:64738     # Mumble
ExitPolicy accept6 *:64738     # Mumble
ExitPolicy reject6 *:*

Une bonne partie de la soirée fût passée à s'user les yeux sur le problème, et évidement, aussitôt le mystère résolu, notre hébergeur nous a informé que l'IPv4 nous était maintenant correctement attribuée, et qu'elenagb pouvait donc avoir du trafic sortant de tor à la fois en IPv4 et en IPv6.