Operadores de Retransmissores

Nós esperamos tornar a configuração de um retransmissor Tor fácil e conveniente:

  • Tudo bem se o retransmissor ficar offline algumas vezes. Os diretórios notam isso rapidamente e param de anunciar o retransmissor. Apenas tente ter certeza de que não seja tão frequente, uma vez que as conexões usando o retransmissor serão quebradas quando ele desconectar.
  • Cada retransmissor Tor tem uma política de saída que especifica que tipo de conexões de saída são permitidas ou negadas por aquele retransmissor. Se você está desconfortável em permitir pessoas para sair a partir do seu retransmissor, você pode configurá-lo para apenas permitir conexões para outros retransmissores Tor.
  • Seu retransmissor irá estimar passivamente e anunciar sua capacidade recente de bandwidth, então retransmissores de alta bandwidth irão atrair mais usuários que os de baixa. Portanto, ter retransmissores de baixa bandwidth também é útil.

Quando uma saída está mal configurada ou é maliciosa ela é nomeada com a bandeira BadExit (SaídaRuim). Isto diz ao Tor para evitar a saída através daquele retransmissor. De fato, retransmissores com essa bandeira se tornam não disponíveis para saída. Se você recebeu essa sinalização, então descobrimos um problema ou atividade suspeita ao direcionar o tráfego pela sua saída e não conseguimos entrar em contato com você. Entre em contato com a equipe de relés ruins para que possamos resolver o problema.

Veja portforward.com para instruções em como encaminhar para portas com seu aparelho NAT/router.

Se o seu retransmissor está rodando em uma rede interna, você precisa configurar o encaminhamento de porta. O encaminhamento de conexões TCP depende do sistema, mas a entrada FAQ sobre clientes com firewall oferece alguns exemplos de como fazer isso.

Também existe um exemplo de como você deveria fazer isto no GNU/Linux se você estiver usando Iptables:

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

Pode ser que você tenha que alterar "eth0" se você tem uma interface externa diferente (aquela conectada à Internet). Provavelmente você tem apenas uma (exceto o loopback) então isso não deve ser muito difícil de descobrir.

Why Relay Load Varies

Tor manages bandwidth across the entire network. It does a reasonable job for most relays. But Tor's goals are different to protocols like BitTorrent. Tor wants low-latency web pages, which requires fast connections with headroom. BitTorrent wants bulk downloads, which requires using all the bandwidth.

Estamos trabalhando em um novo scanner de largura de banda, que é mais fácil de entender e manter. It will have diagnostics for relays that don't get measured, and relays that have low measurements.

Why does Tor need bandwidth scanners?

Most providers tell you the maximum speed of your local connection. But Tor has users all over the world, and our users connect to one or two Guard relays at random. So we need to know how well each relay can connect to the entire world.

So even if all relay operators set their advertised bandwidth to their local connection speed, we would still need bandwidth authorities to balance the load between different parts of the Internet.

What is a normal relay load?

It's normal for most relays to be loaded at 30%-80% of their capacity. This is good for clients: an overloaded relay has high latency. (We want enough relays to so that each relay is loaded at 10%. Then Tor would be almost as fast as the wider Internet).

Sometimes, a relay is slow because its processor is slow or its connections are limited. Other times, it is the network that is slow: the relay has bad peering to most other tor relays, or is a long distance away.

Finding Out what is Limiting a Relay

Lots of things can slow down a relay. Here's how to track them down.

System Limits

  • Check RAM, CPU, and socket/file descriptor usage on your relay

Tor logs some of these when it starts. Others can be viewed using top or similar tools.

Provider Limits

  • Check the Internet peering (bandwidth, latency) from your relay's provider to other relays. Relays transiting via Comcast have been slow at times. Relays outside North America and Western Europe are usually slower.

Tor Network Limits

Relay bandwidth can be limited by a relay's own observed bandwidth, or by the directory authorities' measured bandwidth. Here's how to find out which measurement is limiting your relay:

  • Check each of the votes for your relay on consensus-health (large page), and check the median. If your relay is not marked Running by some directory authorities:
    • Does it have the wrong IPv4 or IPv6 address?
    • Is its IPv4 or IPv6 address unreachable from some networks?
    • Are there more than 2 relays on its IPv4 address?

Otherwise, check your relay's observed bandwidth and bandwidth rate (limit). Look up your relay on Metrics. Then mouse over the bandwidth heading to see the observed bandwidth and relay bandwidth rate.

Here is some more detail and some examples: Drop in consensus weight and Rampup speed of Exit relay.

How to fix it

The smallest of these figures is limiting the bandwidth allocated to the relay.

  • If it's the bandwidth rate, increase the BandwidthRate/Burst or RelayBandwidthRate/Burst in your torrc.
  • If it's the observed bandwidth, your relay won't ask for more bandwidth until it sees itself getting faster. Você precisa descobrir por que é lento.
  • If it's the median measured bandwidth, your relay looks slow from a majority of bandwidth authorities. Você precisa descobrir por que eles medem isso lentamente.

Doing Your Own Relay Measurements

If your relay thinks it is slow, or the bandwidth authorities think it is slow, you can test the bandwidth yourself:

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

    For this, you need to configure a tor client to use use your relay as entry. 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. For this, you can use 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.

    That will give you some idea of how much traffic your relay can sustain.

    Alternatively, you can run relay_bw to test your relay using 2 hops circuits, in a similar way as sbws does.

  • Run a test using tor and chutney to find out how fast tor can get on your CPU. Keep increasing the data volume until the bandwidth stops increasing.

Existem duas opções que você pode adicionar no seu arquivo torrc:

BandwidthRate é a bandwidth máxima de longo prazo permitida (bytes por segundo). Por exemplo, você pode querer escolher "BandwidthRate 10 MBytes" para 10 megabytes por segundo (uma conexão rápida), ou "BandwidthRate 500 KBytes" para 500 kilobytes por segundo (uma conexão à cabo decente). A configuração mínima de taxa de Bandwidth é 75 kilobytes por segundo.

BandwidthBurst é um conjunto de bytes usado para atender solicitações durante períodos curtos de tráfego acima da BandwidthRate mas continua a manter a média ao longo do período com a BandwidthRate. Uma baixa taxa mas uma alta explosão impõe uma média de longo prazo enquanto continua permitindo mais tráfego durante momentos de pico se a média não tem sido alcançada ultimamente. Por exemplo, se você escolher "BandwidthBurst 500 KBytes"  e também usar para sua taxa de Bandwidth, então você nunca ira usar mais do que 500 kilobytes por segundos; mas se você escolher uma BandwidthBurst mais alta (como 5 MBytes), isto irá permitir mai bytes através até o conjunto estar vazio.

Se você tem uma conexão assimétrica (upload menos do que download) como um modem a cabo, você deveria definir a BandwidthRate para menos do que a sua menor bandwidth (Geralmente é a bandwidth de upload). Caso contrário, você poderia perder vários pacotes durante os períodos de máximo uso da bandwidth - talvez você precise experimentar qual valor torna sua conexão mais confortável. Então defina a BandwidthBurst para o mesmo que a BandwidthRate.

Nós Tor baseados em Linux possuem outra opção a sua disposição: eles podem priorizar o tráfego do Tor abaixo de outro tráfego em sua máquina, então seu próprio tráfego pessoal não é impactado pela carga do Tor. Um script para fazer isso pode ser encontrado no diretório contrib da distribuição dos fontes do Tor.

Além disso, existem opções de hibernação onde você pode dizer ao Tor para servir apenas uma certa quantidade de largura de banda por período (como 100 GB por mês). Eles são abordados na entrada de hibernação.

Observe que BandwidthRate e BandwidthBurst estão em Bytes, não Bits.

Em palavras simples, funciona assim:

  • Há um arquivo principal de chave secreta da identidade ed25519 chamado "ed25519_master_Id_secret_key". Este é o mais importante, então tenha certeza de manter um backup em um lugar seguro - o arquivo é sensível e deve ser protegido. Tor pode criptografá-lo para você se você gerá-lo manualmente e digitar uma senha quando perguntado.
  • Uma chave de assinatura de médio termo nomeada "ed25519_signing_secret_key" é gerada para o Tor usar. Além disso, é gerado um certificado chamado "ed25519_signing_cert" o qual é assinado pela chave-principal de identidade e confirma que a chave de assinatura de médio prazo é válida por um certo período de tempo. A validade padrão é 30 dias, mas isso pode ser personalzado configurando ""SigningKeyLifetime N days|weeks|months" no torrc.
  • Existe também uma chave pública primária chamada "ed25519_master_id_public_key", que é a identidade real do relé anunciado na rede. Essa não é sensível e pode ser facilmente obtida pela "ed5519_master_id_secret_key".

O Tor só precisará de acesso à chave de assinatura de médio prazo e o certificado desde que eles sejam válidos, então a chave primária de identidade pode ser mantida fora do DataDirectory/keys, em uma mídia de armazenamento ou em um computador diferente. Você terá que manualmente renovar a chave de assinatura de médio prazo e o certificado antes que eles expirem, de outra forma o processo do Tor no retransmissor irá sair após a expiração.

Este recurso é opicional, você não precisa usá-lo a não ser que queira. Se você quiser que seu retransmissor funcione sem nenhum acompanhamento por um período maior sem ter que fazer manualmente a renovação da chave de assinatura de médio prazo com regularidade, o melhor é deixar a chave de identidade primária secreta no DataDirectory/keys, e basta fazer um backup no caso de precisar reinstalar. Se você quiser usar esse recurso, você pode consultar nosso guia mais detalhado sobre o tópico.

Se seu relé for relativamente novo, aguarde um momento. O Tor decide heuristicamente qual retransmissor ele usa baseado em relatórios de autoridades de Bandwidth. Essas autoridades realizam medições da capacidade do seu retransmissor e ao longo do tempo, direcionam mais tráfego para ele até que atinja a carga ótima. O ciclo de vida de um retransmissor novo é explicado em mais detalhes neste artigo de blog. Se você tem executado um retransmissor por algum tempo e ontinua tendo problemas, então tente perguntar na lista de retransmissor Tor.

  • Não use os pacotes dos repositórios do Ubuntu. Eles não são atualizados de maneira confiável. Se você usar eles, você perderá importante estabilidade e atualizações na segurança.
  • Determine a sua versão Ubuntu utilizada executando o seguinte comando:
     ‪$ lsb_release -c
    
  • Como root, adicione as seguintes linhas ao /etc/apt/sources.list. Substitua 'versão' pela versão que você encontrou na etapa anterior:
     deb https://deb.torproject.org/torproject.org version main
     deb-src https://deb.torproject.org/torproject.org version main
    
  • Adicione a chave gpg usada para assinar os pacotes executando os seguintes comandos:
     ‪$ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
    
  • Rode os seguintes comandos pra instalar o Tor e verificar suas assinaturas:
     ‪$ sudo apt-get update
     ‪$ sudo apt-get install tor deb.torproject.org-keyring
    

Na busca do retransmissor, mostramos um ponto âmbar próximo ao apelido do retransmissor quando ele está sobrecarregado. Isso significa que uma ou mais das seguintes métricas de carga foram acionadas:

Observe que se um relé atingir um estado de sobrecarga, mostraremos isso por 72 horas após a recuperação do retransmissor .

Se você notar que seu retransmissor está sobrecarregado, por favor:

  1. Verifique https://status.torproject.org/ para quaisquer problemas conhecidos na categoria "Rede Tor".

  2. Considere ajustar o sysctl para o seu sistema para carga de rede, memória e CPU.

  3. Considere habilitar MetricsPort para entender o que está acontecendo.

Ajustando sysctl para carga de rede, memória e CPU

Esgotamento da porta TCP

Se você estiver enfrentando esgotamento da porta TCP, considere expandir o intervalo de portas locais. You can do that with

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

ou

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

Tenha em mente que o ajuste do sysctl conforme descrito não é permanente e será perdido na reinicialização. You need to add the configuration to /etc/sysctl.conf or to a file in /etc/sysctl.d/ to make it permanent.

MetricsPort

To understand the well-being of Tor relays and the Tor network it is vital to provide and have access to relay metrics. Informações sobre sobrecarga de retransmissor foram adicionadas aos descritores de retransmissor desde 0.4.6+, mas não foi até Tor >= 0.4.7.1-alpha que uma interface para as métricas de retransmissor subjacentes estava disponível: a porta de métricas.

Habilitando MetricsPort

Tor fornece acesso à porta de métricas através de uma opção de configuração torrc chamada MetricsPort.

É importante entender que expor publicamente o tor MetricsPort é perigoso para os usuários da rede Tor, e é por isso que essa porta não está habilitada por padrão e seu acesso deve ser regido por uma política de acesso. Por favor, tome precauções e cuidados extras ao abrir esta porta e feche-a quando terminar a depuração.

Vamos supor que você seja o único usuário em um servidor que executa um retransmissor Tor. You can enable the metrics port adding this to your torrc file:

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

E então você poderá recuperar facilmente as métricas com:

# curl http://127.0.0.1:9035/metrics

which are by default in a Prometheus format.

Observação: todos os usuários desse servidor poderão acessar essas métricas de retransmissão no exemplo acima. Em geral, defina uma política de acesso muito rigorosa com MetricsPortPolicy e considere usar os recursos de firewall do seu sistema operacional para defesa em profundidade.

Para uma explicação mais detalhada sobre MetricsPort e MetricsPortPolicy veja a página man do tor.

Saída MetricsPort

Aqui está um exemplo de qual saída a ativação de MetricsPort produzirá (omitimos qualquer métrica relacionada ao controle de congestionamento, pois ainda precisamos estabilizar essa 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

Vamos descobrir o que algumas dessas linhas realmente significam:

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

When a relay starts seeing "dropped", it is a CPU/RAM problem usually.

Tor is sadly single threaded except for when the "onion skins" are processed. The "onion skins" are the cryptographic work that needs to be done on the famous "onion layers" in every circuits.

When tor processes the layers we use a thread pool and outsource all of that work to that pool. Pode acontecer que este pool comece a interromper o trabalho devido à pressão da memória ou da CPU e isso acionará um estado de sobrecarga.

Se o seu servidor estiver funcionando com capacidade máxima, isso provavelmente será acionado.

tor_relay_exit_dns_error_total{...}

Any counter in the "*_dns_error_total" realm (apart from the one for successful queries) indicates a potential DNS related problem. No entanto, percebemos durante o ciclo de lançamento 0.4.7 que os erros de DNS são muito barulhentos e contêm muitos falsos positivos para serem úteis para fins de relatórios de sobrecarga. We therefore don't use them anymore for that purpose starting with 0.4.6.9 and 0.4.7.4-alpha. However, we still keep DNS metrics around to give the relay operator insight into what is going on with their relay.

Problemas e erros de tempo limite de DNS aplicam-se apenas aos nós de saída.

tor_relay_load_oom_bytes_total{...}

Uma chamada de Out-Of-Memory indica um problema de RAM. O retransmissor pode precisar de mais RAM ou está vazando memória. Se você notou que o processo tor está vazando memória, relate o problema via Tor gitLab ou enviando um e-mail para a lista de discussão tor-relays.

Tor has its own OOM handler and it is invoked when 75%, of the total memory tor thinks is available, is reached. Assim, digamos que ele pense que pode usar 2 GB no total e, com 1,5 GB de uso de memória, ele começará a liberar memória. Isso é considerado um estado de sobrecarga.

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)

Para evitar um estado de sobrecarga, recomendamos executar um retransmissor acima de 2 GB de RAM em 64 bits. Aconselha-se 4 GB, embora é claro que não custa nada adicionar mais RAM, se possível.

Pode-se notar que tor pode ser chamado pelo próprio manipulador OS OOM. Como o tor ocupa toda a memória do sistema quando é iniciado, se o sistema geral tiver muitos outros aplicativos em execução usando RAM, ele acabará consumindo muita memória. Nesse caso, o sistema operacional poderia fazer OOM, sem sequer perceber a pressão da memória.

tor_relay_load_socket_total

Se o número de soquetes abertos for próximo ou igual ao total de soquetes disponíveis, isso indica que o relé está ficando sem soquetes. A solução é aumentar ulimit -n para o processo tor.

tor_relay_load_tcp_exhaustion_total

Estas linhas indicam que o retransmissor está sem portas TCP.

Try to tune sysctl as described above.

tor_relay_load_global_rate_limit_reached_total

Se este contador for incrementado em algum valor perceptível durante um curto período de tempo, o relé ficará congestionado. Provavelmente está sendo usado como guarda por um grande serviço de onion ou para um DDoS contínuo na rede.

Se o seu retransmissor ainda estiver sobrecarregado e você não souber o motivo, entre em contato com network-report@torproject.org. You can encrypt your email using network-report OpenPGP key.

Ótimo. Se você pode executar vários retransmissores para doar mais para a rede, nós ficamos feliz com isso. Porém, por favor, não rode mais do que algumas dúzias na mesma rede, visto que parte do objetivo da rede Tor é dispersão e diversidade.

Se você decidir em manter mais de um retransmissor, por favor configure a opção "MyFamily" no arquivo torrc de cada retransmissor, listando todos os retransmissores (separados por vírgula) que estão sob seu controle:

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

onde cada fingerprint é a identidade de 40 caracteres (sem espaços).

Dessa maneira, clientes Tor irão saber evitar usar mais de um de seus retransmissores em um único circuito. Você deve configurar MyFamily se você tiver controle administrativo dos computadores ou da rede, mesmo se eles não estiverem todos na mesma localização geográfica.

Tor tem suporte parcial para IPv6 e incentivamos todos os operadores de retransmissão a ativar a funcionalidade IPv6 em seus arquivos de configuração torrc quando a conectividade IPv6 estiver disponível. Por enquanto, o Tor exigirá endereços IPv4 em relés, não é possível executar um relé Tor em um host apenas com endereços IPv6.

Sim, você obtém um anonimato melhor contra alguns tipos de ataques.

O exemplo mais simples é um atacante que possui uma quantidade pequena de retransmissores de Tor. Eles irão ver uma conexão vindo de você, mas eles não serão capazes de saber se a conexão foi originada em seu computador ou se foi retransmitida vinda de outra pessoa.

Existem alguns casos onde isto não parece ajudar: Se um atacante pode observar todo o seu tráfego vindo e indo, então é fácil para ele aprender quais conexões são retransmissões e quais você iniciou. (Neste caso, eles ainda não sabem suas destinações a não ser que eles também estejam observando-as, mas isso não é nenhuma vantagem comparado a um cliente padrão.)

Existem também algumas desvantagens em executar um retransmissor Tor. Primeiro, enquanto nós temos apenas algumas centenas de retransmissores, o fato de você estar executando um pode talvez sinalizar para um atacante que você deposita um grande valor em seu anonimato. Segundo, existem alguns ataques mais raros que não são bem entendidos ou testados o suficiente que envolvem fazer uso do conhecimento que você está executando um retransmissor - por exemplo, um atacante pode ser capaz de "observar" se você está enviando tráfego mesmo se ele não pode efetivamente observar sua rede, ao retransmitir tráfego através do seu relé Tor e observar mudanças no tempo de tráfego.

É uma questão aberta à pesquisa se os benefícios superam os riscos. A maior parte disto depende dos ataques com o quais você é mais preocupado. Para a maioria dos usuários, nós achamos que isso é um movimento inteligente.

O Tor adivinha seu endereço IP, solicitando ao computador o nome do host e resolvendo esse nome. Frequentemente, as pessoas têm entradas antigas no arquivo /etc/hosts que apontam para endereços IP antigos.

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.

Além disso, se você tiver muitos endereços, convém definir "OutboundBindAddress" para que as conexões externas venham do IP que você pretende apresentar ao mundo.

As opções contábeis no arquivo torrc permitem que você especifique a quantidade máximas que seu retransmissor usa por um período de tempo.

    AccountingStart day week month [day] HH:MM

Isso especifíca quando a contabilidade deve ser zerada. Por exemplo, para definir a quantidade total de bytes disponíveis para uma semana (que é zerada toda Quarta-feira às 10 am), você deve usar:

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

This specifies the maximum amount of data your relay will send during an accounting period, and the maximum amount of data your relay will receive during an accounting period. Quando o período contabilizado zerar (através do AccountingStart), então a contagem de AccountingMax será também zerada.

Exemplo: Vamos dizer que você quer permitir 50 GB de tráfego todo dia em cada direção e a contabilidade deve ser zerada todo dia, ao meio-dia:

    AccountingStart day 12:00
    AccountingMax 50 GBytes

Observe que seu retransmissores não irá ser ativado exatamente no começo de cada período contabilizado. Será mantido o registro de quão rápido ele usou a cota no último período e escolher um ponto aleatório no novo intervalo para se ativar. Dessa maneira nós evitamos ter centenas de retransmissores funcionando no começo de cada mês, porém nenhum ativo ainda no final do mês.

Se você tem apenas uma quantidade pequena de bandwidth para doar comparado com a sua velocidade de conexão, nós recomendamos que você use a contagem diária, assim você não acabará usando sua cota mensal inteira no primeiro dia. Apenas divida sua quantidade mensal por 30. Você pode também considerar limitar a taxa para aumentar sua utilidade ainda mais no dia; se você quer oferecer X GB em cada direção, você pode configurar sua RelayBandwidthRate para 20*X KBytes. Por exemplo, se você tem 50 GB para oferecer em cada direção, você pode configurar sua RelayBandwidthRate para 1000 KBytes: dessa maneira seu retransmissor será sempre útil pelo menos para metade de cada dia.

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # permite picos maiores, mas mantém a média

  • O retransmissor de saída é o tipo de retransmissor mais necessário, porém ele também tem a maior exposição e risco legal (e você não deve executá-los da sua casa).
  • Se você está querendo executar um retransmissor com mínimo esforço, retransmissores rápidos de guarda são também muito úteis
  • Seguido pelas pontes.

Todas as conexões de saída devem ser permitidas, assim cada retransmissor pode se comunicar com todos os outros retransmissores.

Em muitas jurisdições, operados de retransmissores Tor são legalmente protegidos pelos mesmos regulamentos comuns de Provedores de Rede, oque previne provedores de serviço de Internet de serem responsabilizados pelo conteúdo de terceiro que passa pela rede deles. Retransmissores de saída que filtram algum tráfego provavelmente perdem essas proteções.

Tor promove acesso livre a rede sem interferências. Retransmissores de saída não devem filtrar o tráfego que passam através deles para a Internet. Retransmissores de saída que forem descobertos filtrando tráfego irão receber a bandeira SaídaRuim assim que forem detectados.

Você está certo, para a maioria um byte dentro do seu retransmissor Tor significa um byte para fora e vice-versa. Mas existem algumas exceções:

Se você abrir seu DirPort, então os clientes Tor irão pedir para você uma cópia do diretório. A solicitação que eles fazem (uma GET HTTP) é bem pequena e a resposta às vezes bem grande. Isto provavelmente é responsável pela maior parte da diferença de contagem de bytes entre o que o seu relé escreve e lê.

Outra exceção secundária aparece quando você opera como um no de saída e você lê alguns bytes de uma conexão de saída (por exemplo, uma mensagem instantânea ou uma conexão ssh) e a embrulha em uma cápsula inteira de 512 bytes para transporte através da rede Tor.

Nós estamos procurando por pessoas com uma conexão de internet razoavelmente confiável, que tenha ao mínimo 10 Mbit/s (Mbps) disponíveis de bandwitdh em cada sentido. Se possuir, por favor considere executar um retransmissor Tor.

Mesmo que você não tenha ao mínimo 10Mbit/s disponíveis de bandwidth, você continua podendo ajudar a rede Tor ao executar uma ponte Tor com suporte obfs4. Nesse caso, você deve ter ao menos 1 Mbit/s disponível de bandwidth.

Ótimo. É exatamente por isto que nós implementamos as políticas de saída.

Cada retransmissor do Tor tem uma política de saída que especifica qual tipo de conexões de saída são permitidas ou negadas por aquele retransmissor. As políticas de saída são propagadas para os clientes Tor através do diretório, assim clientes irão automaticamente evitar escolher retransmissores de saída que recusariam-se "sair" para a destinação pretendida por eles. Desta maneira, cada retransmissor pode decidir os serviços, hospedagens e redes que querem permitir conexões para, baseado no potencial de abuso e sua própria situação. Leia a entrada de suporte sobre problemas que você pode encontrar se você usar a política de saída padrão e, em seguida, leia as dicas para executar um nó de saída com o mínimo de assédio de Mike Perry .

A política padrão de saída permite acesso para vários serviços populares (ex.: navegar na web), mas restringe alguns devido o potencial de abuso (ex.: email) e alguns desde que a rede Tor não consiga lidar com o carregamento. Você pode mudar a sua política de saída editando seu arquivo torrc. Se você quiser evitar a maior parte, senão todo o potencial de abuso, defina como "reject *:*". Esta configuração significa que seu retransmissor será usado para retransmissão de tráfego dentro da rede Tor, mas não para conexões para websites externos ou outros serviços.

Se você autoriza qualquer conexão de saída, tenha certeza que a resolução de nomes funciona (isto é, que seu computador pode resolver os endereços de Internet corretamente). Se existirem qualquer recursos que o seu computador não pode alcançar (por exemplo, você está atrás de um firewall restritivo ou filtro de conteúdo), por favor, explicitamente rejeite eles na suas política de saída caso contrário usuários do Tor também serão impactados.

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.

For simplicity, just copying over the entire DataDirectory should work too.

You may wish to keep backups of these identity keys, plus pt_state for a bridge, so you can restore the relay if something goes wrong.

Não. Se a polícia se interessar pelo tráfego do seu relay de saída, é possível que policiais apreendam seu computador. Por essa razão, é melhor não rodar seu relay de saída em sua casa ou usando a conexão de internet da sua residência.

Em vez disso, considere executar seu relay de saída em uma instalação comercial que é solidária com Tor. Tenha um endereço de IP separado de seu relay de saída, e não roteie seu próprio tráfego por dele. Naturalmente, você deveria evitar manter qualquer informação sensível ou pessoal em computadores que hospedam seu relay de saída.

If you're using Debian or Ubuntu especially, please use the Tor Project's repository, so you can easily receive updates. In addition, using the package provides other conveniences:

  • 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.

Se você permitir conexões de saída, alguns serviços aos quais as pessoas se conectam a partir de sua retransmissão se conectarão novamente para coletar mais informações sobre você. Por exemplo, alguns servidores de IRC se conectam novamente à sua porta identd para registrar qual usuário fez a conexão. (Isso realmente não funciona para eles, porque o Tor não conhece essas informações, mas tenta de qualquer maneira.) Além disso, os usuários que saem de você podem atrair a atenção de outros usuários no servidor de IRC, site etc. que desejam saber mais sobre o host pelo qual eles estão retransmitindo.

Outra razão é que grupos que escaneiam por proxies abertos na Internet aprenderam que às vezes retransmissores Tor expoem suas "port socks" para o mundo. Nós recomendamos que você vincule sua socksport apenas com redes locais.

De qualquer maneira, você precisa manter sua segurança em dia. Veja este artigo sobre segurança para retransmissores Tor para mais sugestões.

As portas abertas padrão estão listadas abaixo, mas lembre-se de que qualquer porta ou portas podem ser abertas pelo operador de retransmissão configurando-o em torrc ou modificando o código-fonte. O padrão de acordo com src/or/policies.c (linha 85 e linha 1901) da versão do código-fonte 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 implementa seis mecanismos para distribuir pontes: HTTPS, Moat, Email, Telegram, Settings e Reserved. Os operadores de ponte podem verificar qual mecanismo sua ponte está usando na pesquisa de retransmissor. Insira o <HASHED FINGERPRINT> da ponte no formulário e clique em "Pesquisar".

As operadoras também podem escolher qual método de distribuição sua ponte usará. Para alterar o método, modifique a configuração BridgeDistribution no arquivo torrc para um destes: https, moat, email, telegram, settings, none, any.

Leia mais no guia Pontes pós-instalação.

Tor pode lidar facilmente com retransmissores de endereço de IP dinâmico. Basta deixar a linha "Endereço" em seu torrc em branco e o Tor irá adivinhar.

Os parâmetros atribuídos no AccountingMax e BandwidthRate aplicam-se para as funções dos processos Tor para ambos, cliente e retransmissor. Portanto você pode achar que não está apto a navegar assim que seu Tor entra em hibernação, sinalizado por esta entrada no log:

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

A solução é rodar dois processos Tor - um retransmissor e outro cliente, cada um com sua própria configuração. Uma maneira de fazer isso (se você estiver começando a partir de uma configuração com um retransmissor em funcionamento) e a seguinte:

  • No arquivo torrc do retransmissor Tor, simplesmente edite o SocksPort para 0.
  • Crie um novo arquivo torrc de cliente usando o torrc.sample e garanta que use um arquivo diferente de registro do que o do retransmissor. Uma convenção para nomear pode ser torrc.client e torrc.relay.
  • Modifique o cliente Tor e scripts de iniciação do retransmissor para incluir -f /path/to/correct/torrc.
  • No Linux/BSD/Mac OS X, mudar os scripts de inicialização para Tor.client e Tor.relay pode tornar a separação de configuração mais fácil.

Desde que agora ele é um guarda, clientes estão o usando menos em outras posição, mas não muito clientes alternaram seus guardas existentes para usa-lo como guarda ainda. Leia mais detalhes nesse artigo de blog ou em Troca de guardas: Estrutura para entender e melhorar a seleção de entrada de guarda no Tor.

You can run a relay in Windows following this tutorials:

You should only run a Windows relay if you can run it 24/7. If you are unable to guarantee that, Snowflake is a better way to contribute your resources to the Tor network.

Se o seu retransmissor Tor está usando mais memória do que você gostaria, aqui estão algumas dicas para reduzir sua demanda:

  • Se você estiver no Linux, vocês pode estar encontrando erros de fragmentação de memória na implementação glibc's malloc. Isto é, quando o Tor libera memória de volta para o sistema, as peças de memória são fragmentadas e devido a isso são difíceis de serem reusadas. O arquivo.tar do Tor vem com implementação malloc OpenBSD, a qual não possui muitos erros de fragmentação (mas a desvantagem é uma carga maior da CPU). Você pode dizer ao Tor para alternativamente usar esta implementação malloc: ./configure --enable-openbsd-malloc.
  • Se você estiver executando um retransmissor rápido, significando que você tem várias conexões TLS abertas, você provavelmente está perdendo muita memória para os buffers internos OpenSSL's (38KB+ para cada socket). Nós atualizamos o OpenSSL para liberar memória não usada pelo buffer de maneira mais consistente. Se você atualizar para o OpenSSL 1.0.0 ou versão mais recente, o processo embutido no Tor irá reconhecer automaticamente e usar este recurso.
  • Se você continuar a não conseguir lidar com a carga de memória, considere reduzir a quantidade de bandwidth que o seu retransmissor anuncia. Anunciar menos bandwidth siginifica que você irá atrair menos usuários, então o seu retransmissor não deve crescer como um grande. Veja a opção MaxAdvertisedBandwidth na página principal.

Dito tudo isso, retransmissores Tor rápidos usam muito de ram. Não é incomum para um retransmissor de saída rápido usar de 500-1000 MB de memória.