Guía para montar un relay de Tor que no es de salida (middle/guard), desde cero, adaptada a tu máquina (Arch Linux, tor 0.4.9.12, 6 núcleos, 7.7 GB RAM).
Un circuito Tor típico tiene 3 saltos:
Cliente <-> Guard (entrada) <-> Middle (medio) <-> Exit (salida) <-> Destino
| Tipo | Rol | Qué ve | Riesgo legal | Recomendado para |
|---|---|---|---|---|
| Cliente | Solo usa Tor (tu navegador, torsocks) | — | Ninguno | Todos |
| Guard / Entry | Primer salto del circuito. Conecta con el usuario | La IP del cliente, pero NO el destino | Bajo-medio | Operadores con uptime estable |
| Middle | Segundo salto, solo reenvía tráfico cifrado entre relays | No ve IP del cliente ni destino | Mínimo | Casi todo el mundo — es “el” nodo no-exit |
| Exit | Último salto. El tráfico sale a internet desde tu IP | El destino y el contenido si es HTTP | Alto (quejas de abuso, DMCA, posible contacto policial) | Operadores con soporte legal y hosting que lo permita |
| Bridge | Relay no listado en el directorio público. Solo entrada | Lo mismo que un guard, pero “secreto” | Bajo | Redes censuradas, IP única en casa |
| Snowflake | Puente con transporte complementario | — | Bajo | Voluntarios ligeros |
| Onion service | Servicio alojado en .onion (antes “hidden service”) | — | Depende de lo que alojes | Quien publica un servicio |
Reglas de oro:
- Un nodo middle/guard nunca aparece como IP de origen del tráfico. Los quejas de abuso son casi inexistentes.
- El de salida es el único que genera exposición legal real. Por eso en este tutorial no lo configuramos.
- El flag
ExitRelay 0+ExitPolicy reject *:*garantiza que jamas actuarás como salida.
No se elige manualmente. Todo relay de no-salida empieza como middle y, si es estable y rápido (≥2 MB/s), los directorios de Tor le dan el flag Guard automáticamente (~8 días a meses de uptime). No hace falta configuración extra.
Requisitos oficiales del Tor Project (guard/middle):
192.168.0.143 (LAN privada detrás de NAT). Un relay público necesita abrir un puerto en el firewall/router (port-forwarding del ORPort). Si no quieres/compartes IP con servicios, la alternativa es un bridge.MaxMemInQueues 512 MB para no acaparar)./etc/tor/torrc.Edita /etc/tor/torrc. Añade/ajusta estas directivas:
## Identidad
Nickname MiNodoPrivado # sin espacios, alfanumérico, máx 19 chars
ContactInfo usuario@ejemplo.com # obligatorio de facto: canal de abuso
## Puerto de relay (como llegan los demás relays/clientes)
ORPort 9001
# Si tienes IPv6 pública, añade: ORPort [tu::ipv6]:9001 IPv6Only
## CRÍTICO: nodo NO de salida
ExitRelay 0
ExitPolicy reject *:*
## Apagar lo que no usamos (no soy cliente ni bridge)
SocksPort 0
BridgeRelay 0
DirPort 0
## Seguridad
Sandbox 1
DisableDebuggerAttachment 1
ControlPort 0
MaxMemInQueues 512 MB
## Límites de ancho de banda (ajusta a tu línea)
## 5 MB/s = ~40 Mbit/s por dirección. 12 MB = ~96 Mbit/s.
RelayBandwidthRate 5 MBytes
RelayBandwidthBurst 10 MBytes
## Capa dura mensual (evita pasarte con tu proveedor de internet)
AccountingStart month 1 00:00
AccountingRule sum
AccountingMax 1500 GBytes
## Solo si ya tienes otro relay: evita que una misma ruta use dos de tus nodos
# MyFamily <fingerprint1>,<fingerprint2>
Pasos:
sudo systemctl edit --force --full tor # ó simplemente edita /etc/tor/torrc
# pega la config de arriba (o al final del archivo)
sudo systemctl restart tor
Abre el ORPort (9001). Con nftables/iptables:
# iptables
sudo iptables -A INPUT -p tcp --dport 9001 -j ACCEPT
# nftables
sudo nft add rule inet filter input tcp dport 9001 accept
# ufw
sudo ufw allow 9001/tcp
Si estás detrás de NAT (tu caso): configura port-forwarding en el router del puerto 9001 → 192.168.0.143:9001, e idealmente IP fija en el router (o el relay se rompe al cambiar la IP).
sudo journalctl -eu tor -f
En los primeros 5-10 min deberías ver:
Bootstrapped 100% (done)Registered server transport o Self-testing indicates your ORPort 9001 is reachable from the outside. Excellent.Performing bandwidth self-test... doneComprueba la dirección pública desde fuera:
nc -zv TU_IP_PUBLICA 9001
Tu fingerprint está en /var/lib/tor/fingerprint. A las 1-2 horas aparecerás en el buscador oficial:
https://metrics.torproject.org/rs.html#search/MiNodoPrivado
| Periodo | Tráfico |
|---|---|
| Semana 1 | <5% (peso del consensus en 0) |
| Semana 2-3 | 5-70%, los medidores de ancho de banda te miden |
| Semana 4+ | 70-100% (estado estacionario) |
| Mes ~2-6 | Flag Guard si hay uptime estable |
No reinicies a menudo: cada reinicio resetea contadores de los directorios. Actualiza paquetes/kernel en horas valle.
# Estado en vivo (interfaz de consola tipo htop)
sudo pacman -S nyx
sudo nyx
# Logs
sudo journalctl -u tor -f
Comprueba tu relay en https://metrics.torproject.org y activa alertas (Tor Weather).
ExitRelay 0.