Opérateurs de relais

  • N’utilisez pas les paquets dans les dépôts d’Ubuntu. Ils ne sont pas mis à jours de façon fiable. Si vous les utilisez, vous manquerez d’importants correctifs de stabilité et de sécurité.
  • Déterminez votre version d’Ubuntu en exécutant la commande suivante :
     ‪$ lsb_release -c
    
  • En tant que super-utilisateur, ajoutez les lignes suivantes au fichier /etc/apt/sources.list. Remplacez "version" par la version que vous avez trouvée à l’étape précédente :
     deb https://deb.torproject.org/torproject.org version main
     deb-src https://deb.torproject.org/torproject.org version main
    
  • Ajoutez la clé gpg utilisée pour signer les paquets en exécutant les commandes suivantes :
     ‪$ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
    
  • Exécutez les commandes suivantes pour installer tor et vérifier ses signatures :
     ‪$ sudo apt-get update
     ‪$ sudo apt-get install tor deb.torproject.org-keyring
    

Tor peut très bien gérer des relais avec des adresses IP dynamiques. Laissez simplement la ligne "Adresse" de votre torrc vide, et Tor le devinera.

Non. Si un organisme d’application de la loi commence à s’intéresser au trafic de votre relais de sortie, il est possible que des représentants de cet organisme saisissent votre ordinateur. C’est pourquoi il est préférable de ne pas faire fonctionner votre relais de sortie chez vous ou en utilisant votre connexion résidentielle à Internet.

Envisagez plutôt de faire fonctionner votre relais de sortie dans un centre informatique commercial favorable à Tor. Utilisez une adresse IP séparée pour votre relais de sortie et n’acheminez pas votre propre trafic par ce relais. Bien entendu, vous devriez éviter de garder des renseignements personnels ou délicats sur l’ordinateur qui héberge votre relais de sortie.

Si votre relais Tor utilise plus de mémoire que vous ne le souhaitez, voici quelques conseils pour réduire sa consommation :

  • Si vous êtes sous Linux, vous pouvez rencontrer des problèmes de fragmentation de la mémoire dans l'implémentation de malloc de la glibc. En d'autres termes, lorsque Tor restitue de la mémoire au système, les morceaux de mémoire sont fragmentés, de sorte qu'il est difficile de les réutiliser. L'archive Tor est livrée avec l'implémentation malloc d'OpenBSD, qui n'a pas autant de défauts de fragmentation (mais la contrepartie est une charge CPU plus élevée). Vous pouvez demander à Tor d'utiliser cette implémentation de malloc à la place : ./configure --enable-openbsd-malloc.
  • Si vous utilisez un relais rapide, ce qui signifie que vous avez de nombreuses connexions TLS ouvertes, vous perdez probablement beaucoup de mémoire dans les tampons internes d'OpenSSL (38KB+ par socket). Nous avons corrigé OpenSSL pour libérer la mémoire tampon inutilisée de manière plus dynamique. Si vous mettez à jour OpenSSL 1.0.0 ou plus récent, le processus de construction de Tor reconnaîtra et utilisera automatiquement cette fonctionnalité.
  • Si vous ne pouvez toujours pas gérer la charge de mémoire, envisagez de réduire la quantité de bande passante annoncée par votre relais. Annoncer moins de bande passante signifie que vous attirerez moins d'utilisateurs, de sorte que votre relais ne devrait pas grossir autant. Voir l'option MaxAdvertisedBandwidth dans la page de manuel.

Cela dit, les relais Tor rapides utilisent beaucoup de mémoire vive. Il n'est pas rare qu'un relais de sortie rapide utilise 500 à 1000 Mo de mémoire.

Si vous autorisez les connexions de sortie, certains services auxquels les utilisateurs se connectent à partir de votre relais se connecteront à leur tour pour collecter davantage d'informations à votre sujet. Par exemple, certains serveurs IRC se connectent à votre port identd pour enregistrer l'utilisateur qui a effectué la connexion. (Cela ne fonctionne pas vraiment pour eux, car Tor ne connaît pas cette information, mais ils essaient quand même). De plus, les utilisateurs qui sortent de chez vous peuvent attirer l'attention d'autres utilisateurs sur le serveur IRC, le site web, etc. qui veulent en savoir plus sur l'hôte qu'ils relaient.

Une autre raison est que les groupes qui balayent des proxies ouverts sur Internet ont appris que parfois les relais Tor exposent leur port de socks au monde. Nous vous recommandons de lier votre socksport aux réseaux locaux uniquement.

Dans tous les cas, vous devez maintenir votre sécurité à jour. Consultez cet article sur la sécurité des relais Tor pour plus de suggestions.

Super. C'est exactement pourquoi nous avons mis en place des politiques de sortie.

Chaque relais Tor a une politique de sortie qui spécifie le type de connexions sortantes autorisées ou refusées à partir de ce relais. Les politiques de sortie sont propagées aux clients Tor via le répertoire, de sorte que les clients éviteront automatiquement de choisir des relais de sortie qui refuseraient de sortir vers leur destination prévue. De cette façon, chaque relais peut décider des services, des hôtes et des réseaux auxquels il souhaite autoriser les connexions, en fonction du potentiel d'abus et de sa propre situation. Lisez l'article de support sur les problèmes que vous pourriez rencontrer si vous utilisez la politique de sortie par défaut, puis lisez les conseils de Mike Perry pour gérer un nœud de sortie.

La politique de sortie par défaut permet l'accès à de nombreux services populaires (par exemple, la navigation Web), mais en restreint certains en raison d'un potentiel d'abus (par exemple, le courrier électronique) et d'autres car le réseau Tor ne peut pas gérer la charge (par exemple, les ports de partage de fichiers par défaut). Vous pouvez modifier votre politique de sortie en modifiant votre fichier torrc. Si vous voulez éviter la plupart sinon tous les abus potentiels, réglez-le sur "reject *:*". Ce paramètre signifie que votre relais sera utilisé pour relayer le trafic à l'intérieur du réseau Tor, mais pas pour les connexions à des sites Web externes ou à d'autres services.

Si vous autorisez des connexions de sortie, assurez-vous que la résolution de noms fonctionne (c'est-à-dire que votre ordinateur peut résoudre correctement les adresses Internet). S'il y a des ressources que votre ordinateur ne peut pas atteindre (par exemple, vous êtes derrière un pare-feu ou un filtre de contenu restrictif), veuillez les rejeter explicitement dans votre politique de sortie sinon les utilisateurs de Tor seront également impactés.

Nous recherchons des personnes disposant de connexions Internet fiables, avec une bande passante disponible d'au moins 10 Mbits/s dans chaque sens. Si c'est votre cas, merci d'envisager de faire fonctionner un relais Tor.

Même si vous n'avez pas au moins 10 Mbit/s de bande passante disponible, vous pouvez toujours aider le réseau Tor en utilisant une passerelle Tor avec support obfs4. Dans ce cas, vous devez avoir au moins 1 MBit/s de bande passante disponible.

Tor devine son adresse IP en demandant à l'ordinateur son nom d'hôte, puis en résolvant ce nom d'hôte. Souvent, les gens ont de vieilles entrées dans leur fichier /etc/hosts qui pointent vers d'anciennes adresses IP.

If that doesn't fix it, you should use the "Address" config option to specify the IP address you want it to pick. If your computer is behind a NAT and it only has an internal IP address, see the following Support entry on dynamic IP addresses.

De plus, si vous avez plusieurs adresses, vous pouvez également définir "OutboundBindAddress" pour que les connexions externes proviennent de l'IP que vous avez l'intention de présenter au monde entier.

Tor supporte partiellement IPv6 et nous encourageons chaque opérateur de relais à activer la fonctionnalité IPv6 dans leurs fichiers de configuration torrc lorsque la fonctionnalité IPv6 est disponible. Pour le moment, Tor nécessitera des adresses IPv4 sur les relais, vous ne pouvez pas exécuter un relais Tor sur un hôte avec des adresses IPv6 uniquement.

Si votre relais est relativement récent, laissez-lui le temps. Tor décide des relais qu'il utilise de manière empirique en se basant sur les rapports des autorités de la bande passante. Ces autorités prennent des mesures de la capacité de votre relais et, au fil du temps, dirigent plus de trafic vers celui-ci jusqu'à ce qu'il atteigne une charge optimale. Le cycle de vie d'un nouveau relais est expliqué plus en détail dans cet article de blog. Si vous utilisez un relais depuis un certain temps et que vous avez toujours des problèmes, essayez de poser des questions sur la liste tor-relays.

If you're using Debian or Ubuntu especially, please use the Tor Project's repository, so you can easily receive updates. De plus, l'utilisation du paquet a d'autres atouts :

  • Your ulimit -n gets set to a high number, so Tor can keep open all the connections it needs.
  • The package creates and uses a separate user, so you don't need to run Tor as your own user.
  • The package includes an init script so Tor runs at boot.
  • Tor can bind to low-numbered ports, then drop privileges.

Vous pouvez lancer un relais sous Windows en suivant ce tutoriel :

Vous devriez ne faire fonctionner un relais Windows que si vous pouvez le faire fonctionner en permanence. Si vous n'êtes pas en mesure de le garantir, Snowflake est un meilleur moyen d'apporter vos ressources au réseau Tor.

Lors de la recherche de relais, nous affichons un point orange à côté du surnom du relais lorsqu'il est surchargé. Cela signifie qu'une ou plusieurs des indicateurs de charge suivants ont été déclenchées :

Notez que si un relais atteint un état surchargé, nous l'affichons pendant 72 heures après le rétablissement du relais.

Si vous remarquez que votre relais est surchargé, veuillez :

  1. Consultez https://status.torproject.org/ pour tout problème connu dans la catégorie "Tor network".

  2. Envisagez de régler sysctl pour votre système pour la charge du réseau, de la mémoire et du CPU.

  3. Envisager d'activer MetricsPort pour comprendre ce qui se passe.

Réglage de sysctl pour le réseau, la mémoire et la charge CPU

Épuisement des ports TCP

Si vous rencontrez un épuisement des ports TCP, envisagez d'étendre votre plage de ports locaux. Vous pouvez le faire avec

# sysctl -w net.ipv4.ip_local_port_range="15000 64000"

ou

# echo 15000 64000 > /proc/sys/net/ipv4/ip_local_port_range

Gardez à l'esprit que le réglage de sysctl tel que décrit n'est pas permanent et sera perdu au redémarrage. Vous devez ajouter la configuration au fichier /etc/sysctl.conf ou à un fichier dans /etc/sysctl.d/ pour la rendre permanente.

MetricsPort

Pour comprendre le bien-être des relais Tor et du réseau Tor, il est essentiel de fournir et d'avoir accès aux indicateurs de relais. Les informations de surcharge de relais ont été ajoutées aux descripteurs de relais depuis la version 0.4.6+, mais ce n'est qu'à partir de Tor >= 0.4.7.1-alpha qu'une interface vers les indicateurs de relais sous-jacents était disponible : le port des indicateurs.

Activation de MetricsPort

Tor permet d'accéder au port des indicateurs via une option de configuration torrc appelée MetricsPort.

Il est important de comprendre qu'exposer publiquement le port MetricsPort de Tor est dangereux pour les utilisateurs du réseau Tor, c'est pourquoi ce port n'est pas activé par défaut et son accès doit être régi par une politique d'accès. Veuillez prendre des précautions supplémentaires lors de l'ouverture de ce port, et fermez-le lorsque vous avez terminé le débogage.

Supposons que vous êtes le seul utilisateur sur un serveur qui exécute un relais Tor. Vous pouvez activer le port des indicateurs en ajoutant ceci à votre fichier torrc :

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

Et ensuite vous pourrez récupérer facilement les indicateurs avec :

# curl http://127.0.0.1:9035/metrics

qui sont par défaut au format Prometheus.

Remarque : chaque utilisateur de ce serveur pourra accéder à ces indicateurs de relais dans l'exemple ci-dessus. En général, définissez une politique d'accès très stricte avec MetricsPortPolicy et envisagez d'utiliser les fonctionnalités de pare-feu de votre système d'exploitation pour une défense en profondeur.

Pour une explication plus détaillée sur MetricsPort et MetricsPortPolicy, consultez la page man de Tor.

Sortie de MetricsPort

Voici un exemple de ce que produira l'activation de MetricsPort (nous avons omis tout indicateur lié au contrôle de la congestion car nous devons encore stabiliser cette interface) :

# HELP tor_relay_connections Total number of opened connections
# TYPE tor_relay_connections gauge
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv6"} 0
# HELP tor_relay_connections_total Total number of created/rejected connections
# TYPE tor_relay_connections_total counter
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv6"} 0
# HELP tor_relay_flag Relay flags from consensus
# TYPE tor_relay_flag gauge
tor_relay_flag{type="Fast"} 0
tor_relay_flag{type="Exit"} 0
tor_relay_flag{type="Authority"} 0
tor_relay_flag{type="Stable"} 0
tor_relay_flag{type="HSDir"} 0
tor_relay_flag{type="Running"} 0
tor_relay_flag{type="V2Dir"} 0
tor_relay_flag{type="Sybil"} 0
tor_relay_flag{type="Guard"} 0
# HELP tor_relay_circuits_total Total number of circuits
# TYPE tor_relay_circuits_total gauge
tor_relay_circuits_total{state="opened"} 0
# HELP tor_relay_streams_total Total number of streams
# TYPE tor_relay_streams_total counter
tor_relay_streams_total{type="BEGIN"} 0
tor_relay_streams_total{type="BEGIN_DIR"} 0
tor_relay_streams_total{type="RESOLVE"} 0
# HELP tor_relay_traffic_bytes Traffic related counters
# TYPE tor_relay_traffic_bytes counter
tor_relay_traffic_bytes{direction="read"} 0
tor_relay_traffic_bytes{direction="written"} 0
# HELP tor_relay_dos_total Denial of Service defenses related counters
# TYPE tor_relay_dos_total counter
tor_relay_dos_total{type="circuit_rejected"} 0
tor_relay_dos_total{type="circuit_killed_max_cell"} 0
tor_relay_dos_total{type="circuit_killed_max_cell_outq"} 0
tor_relay_dos_total{type="marked_address"} 0
tor_relay_dos_total{type="marked_address_maxq"} 0
tor_relay_dos_total{type="conn_rejected"} 0
tor_relay_dos_total{type="concurrent_conn_rejected"} 0
tor_relay_dos_total{type="single_hop_refused"} 0
tor_relay_dos_total{type="introduce2_rejected"} 0
# HELP tor_relay_load_onionskins_total Total number of onionskins handled
# TYPE tor_relay_load_onionskins_total counter
tor_relay_load_onionskins_total{type="tap",action="processed"} 0
tor_relay_load_onionskins_total{type="tap",action="dropped"} 0
tor_relay_load_onionskins_total{type="fast",action="processed"} 0
tor_relay_load_onionskins_total{type="fast",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="dropped"} 0
# HELP tor_relay_exit_dns_query_total Total number of DNS queries done by this relay
# TYPE tor_relay_exit_dns_query_total counter
tor_relay_exit_dns_query_total 0
# HELP tor_relay_exit_dns_error_total Total number of DNS errors encountered by this relay
# TYPE tor_relay_exit_dns_error_total counter
tor_relay_exit_dns_error_total{reason="success"} 0
tor_relay_exit_dns_error_total{reason="format"} 0
tor_relay_exit_dns_error_total{reason="serverfailed"} 0
tor_relay_exit_dns_error_total{reason="notexist"} 0
tor_relay_exit_dns_error_total{reason="notimpl"} 0
tor_relay_exit_dns_error_total{reason="refused"} 0
tor_relay_exit_dns_error_total{reason="truncated"} 0
tor_relay_exit_dns_error_total{reason="unknown"} 0
tor_relay_exit_dns_error_total{reason="tor_timeout"} 0
tor_relay_exit_dns_error_total{reason="shutdown"} 0
tor_relay_exit_dns_error_total{reason="cancel"} 0
tor_relay_exit_dns_error_total{reason="nodata"} 0
# HELP tor_relay_load_oom_bytes_total Total number of bytes the OOM has freed by subsystem
# TYPE tor_relay_load_oom_bytes_total counter
tor_relay_load_oom_bytes_total{subsys="cell"} 0
tor_relay_load_oom_bytes_total{subsys="dns"} 0
tor_relay_load_oom_bytes_total{subsys="geoip"} 0
tor_relay_load_oom_bytes_total{subsys="hsdir"} 0
# HELP tor_relay_load_socket_total Total number of sockets
# TYPE tor_relay_load_socket_total gauge
tor_relay_load_socket_total{state="opened"} 0
tor_relay_load_socket_total 0
# HELP tor_relay_load_tcp_exhaustion_total Total number of times we ran out of TCP ports
# TYPE tor_relay_load_tcp_exhaustion_total counter
tor_relay_load_tcp_exhaustion_total 0
# HELP tor_relay_load_global_rate_limit_reached_total Total number of global connection bucket limit reached
# TYPE tor_relay_load_global_rate_limit_reached_total counter
tor_relay_load_global_rate_limit_reached_total{side="read"} 0
tor_relay_load_global_rate_limit_reached_total{side="write"} 0

Découvrons ce que certaines de ces lignes signifient réellement :

tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0

Lorsqu'un relais commence à voir "dropped", il s'agit généralement d'un problème CPU/RAM.

Tor est malheureusement à un seul fil d'exécution, sauf lorsque les "pelures d'oignons" ("onion skins") sont traitées. Les "pelures d'oignons"("onion skins") sont le travail cryptographique qui doit être fait sur les fameuses "couches d'oignons" ("onion layers") dans tous les circuits.

Lorsque Tor traite les couches, nous utilisons un groupe d'unités d'exécution et externalisons tout ce travail vers ce groupe. Il peut arriver que ce groupe commence à abandonner des opérations en raison de la pression de la mémoire ou du processeur, ce qui déclenchera un état de surcharge.

Si votre serveur fonctionne à pleine capacité, cela sera probablement déclenché.

tor_relay_exit_dns_error_total{...}

Tout compteur dans le domaine "*_dns_error_total" (à l'exception de celui des requêtes réussies) indique un problème potentiel lié au DNS. Cependant, nous avons réalisé au cours du cycle de publication 0.4.7 que les erreurs DNS sont peu fiables et contiennent trop de faux positifs pour être utiles à des fins de rapport de surcharge. Nous ne les utilisons donc plus à cette fin à partir de 0.4.6.9 et 0.4.7.4-alpha. Cependant, nous conservons toujours les indicateurs DNS pour donner à l'opérateur de relais un aperçu de ce qui se passe avec son relais.

Les problèmes et les erreurs de délai d'attente DNS ne s'appliquent qu'aux nœuds de sortie.

tor_relay_load_oom_bytes_total{...}

Une invocation Out-Of-Memory indique un problème de RAM. Le relais a peut-être besoin de plus de RAM ou il y a une fuite de mémoire. Si vous avez remarqué que le processus Tor perd de la mémoire, veuillez signaler le problème via Tor gitLab ou en envoyant un courriel à la liste de diffusion tor-relays.

Tor a son propre gestionnaire OOM et il est invoqué lorsque 75 % de la mémoire totale que Tor pense être disponible est atteinte. Thus, let's say tor thinks it can use 2GB in total then at 1.5GB of memory usage, it will start freeing memory. Ceci est considéré comme un état de surcharge.

To estimate the amount of memory it has available, when tor starts, it will use MaxMemInQueues or, if not set, will look at the total RAM available on the system and apply this algorithm:

    if RAM >= 8GB {
      memory = RAM * 40%
    } else {
      memory = RAM * 75%
    }
    /* Capped. */
    memory = min(memory, 8GB) -> [8GB on 64bit and 2GB on 32bit)
    /* Minimum value. */
    memory = max(250MB, memory)

Pour éviter un état surchargé, nous vous recommandons d'exécuter un relais au-dessus de 2 Go de RAM sur 64 bits. 4 Go sont conseillés, même si bien sûr cela ne fait pas de mal d'ajouter plus de RAM si vous le pouvez. Note: If you are running a powerful server with lots of RAM then you might end up in an overloaded state due to the default queue size limit of 8GB even though you still have plenty of RAM unused. Add an appropriate MaxMemInQueues entry to your torrc configuration in that case.

Il est possible que Tor serait appelé par le gestionnaire OOM du système d'exploitation lui-même. Étant donné que Tor utilise la totalité de la mémoire du système au démarrage, si le système global comporte de nombreuses autres applications exécutées à l'aide de la RAM, il finit par consommer trop de mémoire. Dans ce cas, le système d'exploitation pourrait déclarer Tor OOM, sans même que Tor remarque la pression de la mémoire.

tor_relay_load_socket_total

Si le nombre de sockets ouvertes est proche ou égal au nombre total de sockets disponibles, cela indique que le relais est à court de sockets. La solution est d'augmenter ulimit -n pour le processus Tor.

tor_relay_load_tcp_exhaustion_total

Ces lignes indiquent que le relais manque de ports TCP.

Essayez de régler sysctl comme décrit ci-dessus.

tor_relay_load_global_rate_limit_reached_total

Si ce compteur est incrémenté d'une valeur notable sur une courte période de temps, le relais est congestionné. Il est probablement utilisé comme garde par un gros service onion ou pour un DDoS en cours sur le réseau.

Si votre relais est toujours surchargé et que vous ne savez pas pourquoi, veuillez contacter network-report@torproject.org. Vous pouvez chiffrer vos mails en utilisant network-report OpenPGP key.

When upgrading your Tor relay, or moving it to a different computer, be sure to keep the same identity keys (stored in keys/ed25519_master_id_secret_key and keys/secret_id_key in your DataDirectory).

If you are a bridge operator, also make sure to keep pt_state/. It contains data required for your bridge to keep working with the same bridge line.

Pour simplifier, copier l'intégralité du répertoire de données (DataDirectory) devrait également fonctionner.

Vous voudrez peut-être sauvegarder ces clés d'identité, ainsi que l'état pt_state pour un pont, afin de pouvoir restaurer le relais en cas de problème.

Les ports ouverts par défaut sont énumérés ci-dessous, mais il faut garder à l'esprit que n'importe quel port peut être ouvert par l'opérateur du relais en le configurant dans torrc ou en modifiant le code source. La valeur par défaut est celle du fichier src/or/policies.c (ligne 85 et ligne 1901) de la version du code source release-0.4.6 :

reject 0.0.0.0/8
reject 169.254.0.0/16
reject 127.0.0.0/8
reject 192.168.0.0/16
reject 10.0.0.0/8
reject 172.16.0.0/12

reject *:25
reject *:119
reject *:135-139
reject *:445
reject *:563
reject *:1214
reject *:4661-4666
reject *:6346-6429
reject *:6699
reject *:6881-6999
accept *:*

BridgeDB met en œuvre six mécanismes pour distribuer des bridges : HTTPS, Moat, Email, Telegram, paramètres et privé. Les opérateurs de bridge peuvent vérifier le mécanisme utilisé par leur bridge sur le site Relay Search. Entrez le <HASHED FINGERPRINT> de la passerelle dans le formulaire et cliquez sur "Rechercher".

Les opérateurs peuvent également choisir la méthode de distribution utilisée par leur bridge. To change the method, modify the BridgeDistribution setting in the torrc file to one of these: https, moat, email, telegram, settings, lox, none, any. You can find a description of each distributor in the rdsys distributors documentation.

Pour en savoir plus, consultez le guide sur les bridges post-installation.

  • Le relais de sortie est le type de relais le plus utilisé, mais c'est aussi celui qui présente le plus de risques juridiques (et il ne faut pas les utiliser à la maison).
  • Si vous cherchez à faire fonctionner un relais avec un minimum d'effort, les relais de garde rapides sont également très utiles
  • Suivie de bridges.

Notre objectif est de rendre la mise en place d'un relais Tor facile et confortable :

  • Il n'y a pas de problème si le relais est parfois hors ligne. Les annuaires s'en aperçoivent rapidement et cessent de faire de la publicité pour le relais. Veillez simplement à ce que cela ne soit pas trop fréquent, car les connexions utilisant le relais lorsqu'il se déconnecte seront coupées.
  • Chaque relais Tor a une politique de sortie qui spécifie quels types de connexions sortantes sont autorisées ou refusées à partir de ce relais. Si vous ne souhaitez pas que des personnes sortent de votre relais, vous pouvez le configurer pour qu'il n'autorise que les connexions vers d'autres relais Tor.
  • Votre relais estimera et annoncera passivement sa récente capacité de bande passante, de sorte que les relais à large bande passante attireront plus d'utilisateurs que les relais à faible bande passante. Par conséquent, il est également utile d'avoir des relais à faible bande passante.

Pourquoi la charge des relais varie

Tor gère la bande passante sur l'ensemble du réseau. Il fait un travail raisonnable pour la plupart des relais. Mais les objectifs de Tor sont différents de ceux de protocoles comme BitTorrent. Tor veut des pages web à faible latence, ce qui nécessite des connexions rapides avec de la marge. BitTorrent veut des téléchargements en masse, ce qui nécessite l'utilisation de toute la bande passante.

Nous travaillons sur un nouveau scanner de bande passante, qui est plus facile à comprendre et à entretenir. Il permettra de diagnostiquer les relais qui ne sont pas mesurés et les relais dont les résultats sont faibles.

Pourquoi Tor a-t-il besoin de scanner la bande passante ?

La plupart des fournisseurs vous indiquent la vitesse maximale de votre connexion locale. Mais Tor a des utilisateurs dans le monde entier, et nos utilisateurs se connectent à un ou deux relais de garde au hasard. Nous devons donc savoir dans quelle mesure chaque relais peut se connecter au monde entier.

Ainsi, même si tous les opérateurs de relais fixaient leur bande passante annoncée à la vitesse de leur connexion locale, nous aurions toujours besoin d'autorités de la bande passante pour équilibrer la charge entre les différentes parties du réseau.

Quelle est la charge normale d'un relais ?

Il est normal que la plupart des relais soient chargés à 30-80% de leur capacité. C'est une bonne chose pour les clients : un relais surchargé a un temps de latence élevé. (Nous voulons suffisamment de relais pour que chaque relais soit chargé à 10%. Tor serait alors presque aussi rapide que l'Internet au sens large).

Parfois, un relais est lent parce que son processeur est lent ou que ses connexions sont limitées. Dans d'autres cas, c'est le réseau qui est lent : le relais a un mauvais raccordement à la plupart des autres relais tor, ou est très éloigné.

Déterminer ce qui limite un relais

De nombreux éléments peuvent ralentir un relais. Voici comment les repérer.

Limites du système

  • Vérifier l'utilisation de la RAM, du CPU et des descripteurs de socket/fichier sur votre relais

Tor enregistre certaines de ces données lorsqu'il démarre. D'autres peuvent être visualisés en utilisant top ou des outils similaires.

Limites des fournisseurs

  • Vérifier le trafic Internet (bande passante, temps de latence) entre le fournisseur de votre relais et les autres relais. Les relais transitant par Comcast ont parfois été lents. Les relais en dehors de l'Amérique du Nord et de l'Europe occidentale sont généralement plus lents.

Limites du réseau Tor

La bande passante du relais peut être limitée par la bande passante observée par le relais lui-même ou par la bande passante mesurée par les autorités de l'annuaire. Voici comment déterminer quelle donnée limite votre relais :

  • Vérifiez chacun des votes pour votre relais sur consensus-health (large page), et vérifiez la médiane. Si votre relais n'est pas marqué Exécution par certaines autorités d'annuaire :
    • L'adresse IPv4 ou IPv6 est-elle incorrecte ?
    • Son adresse IPv4 ou IPv6 est-elle inaccessible depuis certains réseaux ?
    • Y a-t-il plus de 2 relais sur son adresse IPv4 ?

Sinon, vérifiez la bande passante observée et le taux de bande passante (limite) de votre relais. Consultez votre relais sur Metrics. Passez ensuite la souris sur le titre de la bande passante pour voir la bande passante observée et le taux de bande passante du relais.

Voici plus de détails et quelques exemples : Baisse du poids du consensus et Augmentation de la vitesse du relais de sortie.

Comment résoudre le problème

Le plus petit de ces nombres est la limitation de la bande passante allouée au relais.

  • Si c'est le taux de bande passante, augmentez BandwidthRate/Burst ou RelayBandwidthRate/Burst dans votre torrc.
  • S'il s'agit de la bande passante observée, votre relais ne demandera pas plus de bande passante tant qu'il ne constatera pas qu'il devient plus rapide. Vous devez déterminer pourquoi il est lent.
  • Si c'est la bande passante médiane mesurée, votre relais semble lent du point de vue de la majorité des autorités de la bande passante. Vous devez déterminer la raison pour laquelle ils mesurent leur lenteur.

Effectuer ses propres calculs de relais

Si votre relais pense qu'il est lent, ou si les autorités de la bande passante pensent qu'il est lent, vous pouvez tester la bande passante vous-même :

  • Run a test using tor to see how fast tor can get on your network

    Pour ce faire, vous devez configurer un client Tor pour utiliser votre relais comme point d'entrée. If your relay has only Guard flag, set EntryNodes with your relay fingerprint in torrc. If your relay doesn't have Guard flag or it has Guard and Exit flags, you can't set your relay as an entry node (see https://gitlab.torproject.org/tpo/core/tor/-/issues/22204), but you can set it as your bridge, even if it is not a bridge. To set your relay as a bridge, add to your torrc:

    Bridge <ip>:<port>
    UseBridge 1
    

    Then download a large file using your SocksPort as a socks proxy. Pour cela, vous pouvez utiliser curl, eg :

    curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
    

    Using different user/password guarantees different circuits. You can use $RANDOM.

    Cela vous donnera une idée de la quantité de trafic que votre relais peut supporter.

    Alternativement, vous pouvez exécuter relay_bw pour tester votre relais en utilisant des circuits à 2 sauts, de manière similaire à ce que fait sbws.

  • Run a test using tor and chutney to find out how fast tor can get on your CPU. Continuez à augmenter le volume de données jusqu'à ce que la bande passante cesse d'augmenter.

Oui, vous obtiendrez un meilleur anonymat contre certaines attaques.

L'exemple le plus simple est celui d'un attaquant qui possède un petit nombre de relais Tor. Ils verront une connexion de votre part, mais ils ne pourront pas savoir si la connexion provient de votre ordinateur ou si elle a été relayée par quelqu'un d'autre.

Dans certains cas, cela ne semble pas utile : si un pirate peut observer l'ensemble de votre trafic entrant et sortant, il lui est facile de savoir quelles connexions ont été relayées et lesquelles sont parties de vous. (Dans ce cas, ils ne connaissent toujours pas vos destinations à moins qu'ils ne les observent également, mais vous n'êtes pas mieux loti que si vous étiez un client ordinaire)

Il y a également des inconvénients à gérer un relais Tor. Premièrement, bien que nous ne disposions que de quelques centaines de relais, le fait que vous en utilisiez un pourrait indiquer à un attaquant que vous accordez une grande importance à votre anonymat. Deuxièmement, il existe des attaques plus ésotériques qui ne sont pas aussi bien comprises ou testées et qui impliquent l'utilisation du fait que vous utilisez un relais - par exemple, un attaquant peut être en mesure d'"observer" si vous envoyez du trafic même s'il ne peut pas réellement surveiller votre réseau, en relayant le trafic à travers votre relais Tor et en remarquant les changements dans la synchronisation du trafic.

La question de savoir si les avantages l'emportent sur les risques est une question ouverte. Cela dépend en grande partie des attaques qui vous inquiètent le plus. Pour la plupart des utilisateurs, nous pensons qu'il s'agit d'une décision intelligente.

Voir portforward.com pour des instructions sur la façon de transférer des ports avec votre périphérique NAT/routeur.

Si votre relais fonctionne sur un réseau interne, vous devez mettre en place une redirection de port. Le transfert des connexions TCP dépend du système, mais l'entrée FAQ firewalled-clients donne quelques exemples sur la manière de procéder.

Voici également un exemple de la façon de procéder sous GNU/Linux si vous utilisez iptables :

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 9001 -j ACCEPT

Il se peut que vous deviez modifier "eth0" si vous avez une interface externe différente (celle qui est connectée à Internet). Il est probable que vous n'en ayez qu'un seul (à l'exception du loopback), ce qui ne devrait pas être trop difficile à identifier.

Les options de comptabilisation du fichier torrc vous permettent de spécifier le nombre maximal d'octets que votre relais utilise pendant une période donnée.

    AccountingStart day week month [day] HH:MM

Cela spécifie quand la comptabilité doit être réinitialisée. Par exemple, pour configurer un nombre total d'octets servis pendant une semaine (qui se réinitialise tous les mercredis à 10h00), vous utiliseriez :

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

Cela spécifie la quantité maximale de données que votre relais enverra pendant une période comptable et la quantité maximale de données que votre relais recevra pendant une période comptable. Lorsque la période comptable est réinitialisée (à partir de AccountingStart), les compteurs de AccountingMax sont réinitialisés à 0.

Exemple : Supposons que vous souhaitiez autoriser 50 Go de trafic par jour dans chaque direction et que la comptabilité doive être réinitialisée à midi chaque jour :

    AccountingStart day 12:00
    AccountingMax 50 GBytes

Notez que votre relais ne se réveillera pas exactement au début de chaque période comptable. Il gardera une trace de la vitesse à laquelle il a utilisé son quota au cours de la dernière période et choisira un point aléatoire dans le nouvel intervalle pour se réveiller. De cette façon, nous évitons d'avoir des centaines de relais qui fonctionnent au début de chaque mois mais qu'aucun n'est encore opérationnel à la fin.

Si vous n'avez qu'une petite quantité de bande passante à donner par rapport à votre vitesse de connexion, nous vous recommandons d'utiliser une comptabilité quotidienne, afin de ne pas utiliser l'intégralité de votre quota mensuel le premier jour. Divisez simplement votre montant mensuel par 30. Vous pouvez également envisager de limiter le débit pour répartir votre utilité sur une plus grande partie de la journée : si vous souhaitez offrir X Go dans chaque direction, vous pouvez fixer votre RelayBandwidthRate à 20*X KBytes. Par exemple, si vous avez 50 Go à offrir dans chaque sens, vous pouvez fixer votre RelayBandwidthRate à 1000 KBytes : de cette façon, votre relais sera toujours utile pendant au moins la moitié de chaque journée.

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # permet des rafales plus élevées mais maintient la moyenne

Vous avez raison, dans la plupart des cas, un octet entrant dans votre relais Tor signifie un octet sortant, et vice versa. Mais il y a quelques exceptions :

Si vous ouvrez votre DirPort, les clients Tor vous demanderont une copie du répertoire. La requête qu'ils formulent (un HTTP GET) est assez petite, et la réponse est parfois très volumineuse. Cela explique probablement la majeure partie de la différence entre le nombre d'octets en "écriture" et le nombre d'octets en "lecture".

Une autre exception mineure apparaît lorsque vous opérez en tant que noeud de sortie, et que vous lisez quelques octets à partir d'une connexion de sortie (par exemple, une connexion de messagerie instantanée ou ssh) et que vous les intégrez dans une cellule entière de 512 octets pour les transporter à travers le réseau Tor.

Les paramètres attribués dans AccountingMax et BandwidthRate s'appliquent aux fonctions client et relais du processus Tor. Ainsi, vous pouvez constater que vous ne parvenez pas à naviguer dès que votre Tor entre en hibernation, signalé par cette entrée dans le journal :

Bandwidth soft limit reached; commencing hibernation.
No new connections will be accepted

La solution consiste à exécuter deux processus Tor - un relais et un client, chacun avec sa propre configuration. Une façon de procéder (si vous partez d'une configuration de relais en état de marche) est la suivante :

  • Dans le fichier torrc du relais Tor, fixer simplement le SocksPort à 0.
  • Créez un nouveau fichier client torrc à partir de torrc.sample et assurez-vous qu'il utilise un fichier journal différent du relais. Une convention de nommage peut être torrc.client et torrc.relay.
  • Modifiez les scripts de démarrage du client et du relais Tor pour inclure -f /chemin/vers/le/bon/torrc.
  • Sous Linux/BSD/Mac OS X, changer les scripts de démarrage en Tor.client et Tor.relay peut faciliter la séparation des configurations.

En termes simples, cela fonctionne comme ceci :

  • Il existe un fichier de clé secrète d'identité primaire ed25519 nommé "ed25519 master_id secret_key". C'est le plus important, alors assurez-vous de conserver une sauvegarde dans un endroit sûr - le fichier est sensible et doit être protégé. Tor pourrait le crypter pour vous si vous le générez manuellement et entrez un mot de passe lorsqu'on vous le demande.
  • Une clé de signature à moyen terme nommée "ed25519 signature secret_key" est générée pour que Tor puisse l'utiliser. En outre, un certificat est généré nommé "ed25519_signing_cert" qui est signé par la clé secrète d'identité primaire et confirme que la clé de signature à moyen terme est valide pendant une certaine période de temps. La validité par défaut est de 30 jours, mais elle peut être personnalisée en définissant "SigningKeyLifetime N days|weeks|months" dans torrc.
  • Il existe également une clé publique primaire nommée "ed25519 master_id public_key", qui est l'identité réelle du relais annoncée dans le réseau. Celui-ci n'est pas sensible et peut être facilement calculé à partir de "ed5519_master_id_secret_key".

Tor n'aura besoin d'accéder à la clé de signature à moyen terme et au certificat que tant qu'ils sont valides, de sorte que la clé secrète d'identité primaire peut être conservée en dehors de DataDirectory/keys, sur un support de stockage ou un autre ordinateur. Vous devrez renouveler manuellement la clé de signature à moyen terme et le certificat avant leur expiration, sinon le processus Tor sur le relais se terminera à l'expiration.

Cette fonctionnalité est facultative, vous n'avez pas besoin de l'utiliser sauf si vous le souhaitez. Si vous souhaitez que votre relais fonctionne sans surveillance pendant plus longtemps sans avoir à renouveler manuellement la clé de signature à moyen terme de manière régulière, il est préférable de laisser la clé secrète d'identité primaire dans DataDirectory/keys, faites simplement une sauvegarde au cas où vous auriez besoin de la réinstaller. Si vous souhaitez utiliser cette fonction, vous pouvez consulter notre guide détaillé à ce sujet.

Puisqu'il s'agit maintenant d'un garde, les clients l'utilisent moins dans d'autres positions, mais peu de clients ont déjà remplacé leurs gardes existants pour l'utiliser comme garde. Pour en savoir plus, consultez ce billet de blog ou le Changement des gardes : Un cadre pour comprendre et améliorer la sélection des gardes d'entrée au Tor.

Lorsqu'une sortie est mal configurée ou malveillante, le drapeau BadExit lui est attribué. Cela indique à Tor d'éviter de sortir par ce relais. En effet, les relais avec ce drapeau deviennent des non-exits. Si vous obtenez ce drapeau, c'est que nous avons découvert un problème ou une activité suspecte lors de l'acheminement du trafic via votre sortie et que nous n'avons pas été en mesure de vous contacter. Veuillez contacter l'équipe bad-relays afin que nous puissions résoudre le problème.

Toutes les connexions sortantes doivent être autorisées, afin que chaque relais puisse communiquer avec tous les autres relais.

Dans de nombreuses juridictions, les opérateurs de relais Tor sont légalement protégés par les mêmes réglementations sur les transporteurs publics qui empêchent les fournisseurs de services Internet d'être tenus responsables du contenu de tiers qui transite par leur réseau. Les relais de sortie qui filtrent une partie du trafic perdraient probablement ces protections.

Tor favorise un accès libre au réseau sans interférence. Les relais de sortie ne doivent pas filtrer le trafic qui les traverse vers Internet. Les relais de sortie qui filtrent le trafic recevront l'indicateur BadExit une fois détectés.

Super. Si vous souhaitez mettre en service plusieurs relais pour donner plus au réseau, nous en sommes satisfaits. Mais s'il vous plaît, n'en exécutez pas plus de quelques dizaines sur le même réseau, car une partie de l'objectif du réseau Tor est la dispersion et la diversité.

Si vous décidez de mettre en service plus d'un relais, veuillez définir l'option de configuration "MyFamily" dans le torrc de chaque relais, en répertoriant tous les relais (séparés par des virgules) qui sont sous votre contrôle :

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

où chaque empreinte numérique est l'empreinte numérique d'identité de 40 caractères (sans espaces).

De cette façon, les clients Tor sauront éviter d'utiliser plus d'un de vos relais dans un même circuit. Vous devez définir MyFamily si vous avez le contrôle administratif des ordinateurs ou de leur réseau, même s'ils ne se trouvent pas tous au même emplacement géographique.

Vous pouvez ajouter deux options à votre fichier torrc :

BandwidthRate est la bande passante maximale autorisée à long terme (octets par seconde). Par exemple, vous pouvez choisir "BandwidthRate 10 MBytes" pour 10 mégaoctets par seconde (une connexion rapide), ou "BandwidthRate 500 KBytes" pour 500 kilobytes par seconde (une connexion par câble décente). La valeur minimale de BandwidthRate est de 75 kilooctets par seconde.

BandwidthBurst est un pool d'octets utilisé pour répondre aux demandes pendant de courtes périodes de trafic supérieur au BandwidthRate, tout en maintenant la moyenne sur une longue période au BandwidthRate. Un taux faible mais une rafale élevée imposent une moyenne à long terme tout en permettant un trafic plus important pendant les heures de pointe si la moyenne n'a pas été atteinte dernièrement. Par exemple, si vous choisissez "BandwidthBurst 500 KBytes" et que vous l'utilisez également pour votre BandwidthRate, vous n'utiliserez jamais plus de 500 kilooctets par seconde ; mais si vous choisissez une BandwidthBurst plus élevée (comme 5 Mégaoctets), vous laisserez passer plus d'octets jusqu'à ce que le pool soit vide.

Si vous disposez d'une connexion asymétrique (moins de téléchargement en amont qu'en aval), comme un modem câble, vous devez régler BandwidthRate sur une valeur inférieure à votre plus petite bande passante (en général, il s'agit de la bande passante en amont). Sinon, vous risquez de perdre de nombreux paquets pendant les périodes d'utilisation maximale de la bande passante - vous devrez peut-être expérimenter les valeurs qui rendent votre connexion confortable. Réglez ensuite BandwidthBurst sur la même valeur que BandwidthRate.

Les noeuds Tor basés sur Linux ont une autre option à leur disposition : ils peuvent privilégier le trafic Tor par rapport aux autres trafics sur leur machine, afin que leur propre trafic ne soit pas impacté par la charge de Tor. Un script pour faire cela peut être trouvé dans le répertoire contrib de la distribution source de Tor.

De plus, il existe des options d'hibernation qui vous permettent d'indiquer à Tor de ne servir qu'une certaine quantité de bande passante par période de temps (comme 100 Go par mois). Ces options sont couvertes par l'entrée hibernation.

Notez que BandwidthRate et BandwidthBurst sont exprimés en octets, et non en bits.