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.

Por que a carga do relé varia

O Tor gerencia a largura de banda em toda a rede. Ele faz um trabalho razoável para a maioria dos relés. Mas os objetivos do Tor são diferentes de protocolos como o BitTorrent. O Tor deseja páginas da web de baixa latência, o que requer conexões rápidas com espaço livre. O BitTorrent deseja downloads em massa, o que requer o uso de toda a largura de banda.

Estamos trabalhando em um novo scanner de largura de banda, que é mais fácil de entender e manter. Ele terá diagnósticos para relés que não são medidos e relés que apresentam medições baixas.

Por que o Tor precisa de scanners de largura de banda?

A maioria dos provedores informa a velocidade máxima da sua conexão local. Mas o Tor tem usuários em todo o mundo, e nossos usuários se conectam a um ou dois "Guard Relays" aleatoriamente. Portanto, precisamos saber até que ponto cada relé pode se conectar ao mundo inteiro.

Portanto, mesmo que todos os operadores de retransmissão definissem a largura de banda anunciada para a velocidade de conexão local, ainda precisaríamos de autoridades de largura de banda para equilibrar a carga entre as diferentes partes da Internet.

O que é uma carga de relé normal?

É normal que a maioria dos relés sejam carregados com 30% a 80% de sua capacidade. Isso é bom para os clientes: um relé sobrecarregado tem alta latência. (Queremos relés suficientes para que cada relé seja carregado a 10%. Então o Tor seria quase tão rápido quanto a Internet mais ampla).

Às vezes, um relé é lento porque seu processador é lento ou suas conexões são limitadas. Outras vezes, é a rede que está lenta: o relé tem peering ruim com a maioria dos outros relés do Tor ou está muito distante.

Descobrindo o que está limitando um relé

Muitas coisas podem desacelerar um relé. Veja como rastreá-los.

Limites do sistema

  • Verifique o uso de RAM, CPU e descritor de soquete/arquivo em seu relé

O Tor registra alguns deles quando é iniciado. Outros podem ser visualizados usando ferramentas superiores ou similares.

Limites do provedor

  • Verifique o peering da Internet (largura de banda, latência) do provedor do seu retransmissor para outros retransmissores. Os relés que transitam pela Comcast têm sido lentos às vezes. As retransmissões fora da América do Norte e da Europa Ocidental são geralmente mais lentas.

Limites da rede Tor

A largura de banda do relé pode ser limitada pela largura de banda observada do próprio relé ou pela largura de banda medida pelas autoridades do diretório. Veja como descobrir qual medida está limitando seu relé:

  • Verifique cada um dos votos do seu relé em consensus-health (página grande) e verifique a mediana. Se o seu relé não estiver marcado em Execução por algumas autoridades de diretório:
    • Possui o endereço IPv4 ou IPv6 errado?
    • Seu endereço IPv4 ou IPv6 é inacessível em algumas redes?
    • Existem mais de 2 relés em seu endereço IPv4?

Caso contrário, verifique a largura de banda observada e a taxa de largura de banda (limite) do seu relé. Procure seu relé em Métricas. Em seguida, passe o mouse sobre o título da largura de banda para ver a largura de banda observada e a taxa de largura de banda do relé.

Aqui estão mais alguns detalhes e alguns exemplos: Queda no peso do consenso e Velocidade de aceleração do relé de saída.

Como corrigi-lo

O menor desses números limita a largura de banda alocada ao relé.

  • Se for a taxa de largura de banda, aumente "BandwidthRate/Burst" ou "RelayBandwidthRate/Burst" em seu arquivo torrc.
  • Se for a largura de banda observada, seu relé não solicitará mais largura de banda até perceber que está ficando mais rápido. Você precisa descobrir por que é lento.
  • Se for a largura de banda mediana medida, seu relé parece lento para a maioria das autoridades de largura de banda. Você precisa descobrir por que eles medem isso lentamente.

Fazendo suas próprias medições de relé

Se o seu relé achar que está lento, ou as autoridades de largura de banda acharem que está lento, você mesmo poderá testar a largura de banda:

  • Execute um teste usando o Tor para ver o quão rápido o Tor pode chegar na sua rede

    Para isso, você precisa configurar um cliente Tor para usar seu relé como entrada. Se o seu relé tiver apenas o sinalizador Guard, defina EntryNodes com a impressão digital do seu relé em torrc. Se o seu relé não tiver o sinalizador Guard ou tiver os sinalizadores Guard e Exit, você não poderá definir o seu relé como um nó de entrada (consulte https://gitlab.torproject.org/tpo/core /tor/-/issues/22204), mas você pode defini-lo como sua ponte, mesmo que não seja uma ponte. Para definir seu relé como uma ponte, adicione ao seu arwuivo torrc:

    Bridge <ip>:<port>
    UseBridge 1
    

    Em seguida, baixe um arquivo grande usando seu SocksPort como proxy de socks. Para isso, você pode usar curl, por exemplo:

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

    Usar user/password diferentes garante circuitos diferentes. Você pode usar $RANDOM.

    Isso lhe dará uma ideia de quanto tráfego seu relé pode sustentar.

    Alternativamente, você pode executar relay_bw para testar seu relé usando circuitos de 2 saltos, de maneira semelhante a sbws faz.

  • Execute um teste usando o Tor e chutney para descobrir o quão rápido o Tor pode chegar em seu CPU. Continue aumentando o volume de dados até que a largura de banda pare de aumentar.

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. Você pode fazer isso com

# 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. Você precisa adicionar a configuração em /etc/sysctl.conf ou em um arquivo em /etc/sysctl.d/ para torná-la permanente.

MetricsPort

Para compreender o bem-estar dos retransmissores Tor e da rede Tor, é vital fornecer e ter acesso às métricas de retransmissão. 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. Você pode ativar a porta de métricas adicionando isto ao seu arquivo torrc:

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

que estão por padrão no formato Prometheus.

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

Quando um relé começa a aparecer "caído", geralmente é um problema de CPU/RAM.

Infelizmente, o Tor é de thread único exceto para quando as "onion skins" são processadas. As “onion skins” são o trabalho criptográfico que precisa ser feito nas famosas “onion layers” de todos os circuitos.

Quando o Tor processa as camadas, usamos um pool de threads e terceirizamos todo esse trabalho para esse 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{...}

Qualquer contador no domínio "*_dns_error_total" (exceto aquele para consultas bem-sucedidas) indica um possível problema relacionado ao DNS. 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. Portanto, não os usamos mais para esse propósito, começando com 0.4.6.9 e 0.4.7.4-alpha. No entanto, ainda mantemos métricas de DNS para fornecer ao operador de retransmissão uma visão sobre o que está acontecendo com sua retransmissão.

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.

O Tor tem seu próprio manipulador OOM e é invocado quando 75% da memória total que o Tor pensa estar disponível é atingido. Assim, digamos que o Tor acredite que pode usar 2 GB no total, então, com 1,5 GB de uso de memória, ele começará a liberar memória. Isso é considerado um estado de sobrecarga.

Para estimar a quantidade de memória disponível, quando o Tor for iniciado, ele usará MaxMemInQueues ou, se não estiver definido, examinará a RAM total disponível no sistema e aplicará este algoritmo:

    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. Observação: Se você estiver executando um servidor poderoso com muita RAM, poderá acabar em um estado sobrecarregado devido ao limite de tamanho da fila padrão de 8 GB, mesmo que ainda tenha bastante RAM não utilizada. Adicione uma entrada MaxMemInQueues apropriada à sua configuração torrc nesse caso.

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.

Tente ajustar sysctl como descrito acima.

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. Você pode criptografar seu e-mail usando chave OpenPGP de relatório de rede.

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

Se isso não resolver o problema, você deve usar a opção de configuração "Endereço" para especificar o endereço IP que deseja escolher. Se o seu computador estiver protegido por NAT e tiver apenas um endereço IP interno, consulte a seguinte entrada de suporte em endereços IP dinâmicos.

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

Isso especifica a quantidade máxima de dados que seu retransmissor irá enviar durante um período contabilizada, e o máximo de informação que seu retransmissores irá receber durante um tempo contado. 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.

Ao atualizar seu relé Tor ou movê-lo para um computador diferente, certifique-se de manter as mesmas chaves de identidade (armazenadas em keys/ed25519_master_id_secret_key e keys/secret_id_key em seu "DataDirectory").

Se você é um operador de ponte, certifique-se também de manter pt_state/. Ele contém os dados necessários para que sua ponte continue funcionando com a mesma linha de ponte.

Para simplificar, apenas copiar todo o "DataDirectory" também deve funcionar.

Você pode querer manter backups dessas chaves de identidade, além de pt_state para uma ponte, para poder restaurar a retransmissão se algo der errado.

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.

Se você estiver usando Debian ou Ubuntu especialmente, use o repositório do Projeto Tor, para que você possa receber atualizações facilmente. Além disso, o uso do pacote oferece outras conveniências:

  • Seu ulimit -n é definido com um número alto, para que o Tor possa manter abertas todas as conexões necessárias.
  • O pacote cria e usa um usuário separado, então você não precisa executar o Tor como seu próprio usuário.
  • O pacote inclui um script de inicialização para que o Tor seja executado na inicialização.
  • O Tor pode vincular-se a portas de número baixo e, em seguida, eliminar privilégios.

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, lox, none, any. Você pode encontrar uma descrição de cada distribuidor na documentação dos distribuidores rdsys.

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.

Você pode executar um relé no Windows seguindo estes tutoriais:

Você só deve executar uma retransmissão do Windows se puder executá-la 24 horas por dia, 7 dias por semana. Se você não puder garantir isso, Snowflake é a melhor maneira de contribuir com seus recursos para a rede Tor.

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.