Was damit gebaut wird
Ein Middle-Relay: Es nimmt Verbindungen von Clients und anderen Relays an, leitet Datenverkehr innerhalb des Netzwerks weiter und öffnet niemals eine Verbindung zu einem Ziel im normalen Internet. Niemand erhält eine Missbrauchsbeschwerde wegen eines Middle-Relays, denn von außen tauscht es verschlüsselten Datenverkehr mit einer veröffentlichten Liste anderer Relays aus und sonst nichts.
Diese Unterscheidung ist der einzige Grund, warum dieser Leitfaden existiert. Exit-Relays sind eine andere Geschichte: Beschwerden darüber landen bei unserem Missbrauchs-Team und nicht bei Ihnen. Lesen Sie also die Nutzungsrichtlinien und eröffnen Sie ein Ticket, bevor Sie eines konfigurieren. Alles unten deaktiviert das Exiting absichtlich, doppelt.
Bevor Sie beginnen
- Eine R-4. Tor ist pro Verbindung single-threaded und netzwerkgebunden; vier dedizierte Kerne sättigen einen Link lange bevor die CPU es merkt.
- Ein Standort mit Bandbreite, die Sie gerne spenden. BUH-01 und HEL-01 sind die günstigsten Terabyte, die wir verkaufen, und beide haben den Transit, um das zu unterstützen.
- Eine funktionierende Uhr. Relays mit schiefer Zeit werden aus dem Konsens entfernt, und das ist der häufigste einzelne Grund für ein Relay, das perfekt startet und nirgendwo erscheint.
1. Basissystem
apt update && apt full-upgrade -y
apt install -y tor nyx chrony nftables
timedatectl set-timezone UTC
chronyc trackingchronyc tracking sollte einen Systemzeit-Offset im Mikrosekundenbereich melden. Wenn es Sekunden meldet, stoppen Sie und beheben Sie das zuerst; nichts weiter unten wird funktionieren.
2. Die Relay-Konfiguration
Ersetzen Sie /etc/tor/torrc durch Folgendes. Lesen Sie jede Zeile, denn zwei davon sind diejenigen, die Sie innerhalb der Richtlinie halten:
Nickname exampleRelay
ContactInfo [email protected]
ORPort 9001
ORPort [2001:db8:1a2b::2]:9001
SocksPort 0
ControlPort 0
ExitRelay 0
ExitPolicy reject *:*
IPv6Exit 0
RelayBandwidthRate 40 MBytes
RelayBandwidthBurst 60 MBytes
AccountingMax 40 TBytes
AccountingStart month 1 00:00
MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1
User debian-tor
DataDirectory /var/lib/tor
Log notice syslogExitRelay 0 und ExitPolicy reject *:* sind Sicherheitsgurte und Hosenträger. Jedes würde allein ausreichen; beide zusammen bedeuten, dass kein zukünftiger Paketstandard und keine halb erinnerte Bearbeitung um Mitternacht Sie stillschweigend in einen Exit verwandelt.
Ersetzen Sie die echte IPv6-Adresse Ihrer Instanz in der zweiten ORPort-Zeile. Jede Instanz wird mit einem gerouteten /64 ausgeliefert, also gibt es keinen Grund, ein reines v4-Relay zu betreiben, und v6-fähige Relays sind immer noch knapper als v4-Relays.
Bandbreitenabrechnung verdient einen Gedanken statt eines Copy-Paste. Der Datenverkehr in unserem Netzwerk ist unter fairen Bedingungen unbegrenzt, aber ein Relay ohne Begrenzung wird genau so viel nutzen, wie das Netzwerk finden kann, für immer. Vierzig Megabyte pro Sekunde mit einem monatlichen Limit von vierzig Terabyte ist ein großzügiges, wohlerzogenes Relay. Wenn das Limit erreicht ist, hiberniert das Relay, bis der Zeitraum umschlägt, anstatt mitten im Stromkreis abgeschnitten zu werden.
Wenn Sie irgendwo mehr als ein Relay betreiben, fügen Sie eine MyFamily-Zeile hinzu, die jeden Fingerabdruck einschließlich dieses auflistet, durch Kommas getrennt. Clients verwenden sie, um zu vermeiden, einen Stromkreis zu bauen, der durch zwei Maschinen unter derselben Kontrolle führt, und das Weglassen ist die häufigste Konfigurationsbeschwerde, die an Betreiber gerichtet wird.
3. Härtung der Einheit
Die gebündelte Einheit ist anständig; diese Zeilen machen sie für jeden, der einen Fehler darin findet, erheblich uninteressanter.
systemctl edit tor@default[Service]
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
ProtectSystem=strict
ProtectHome=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
RestrictNamespaces=yes
MemoryDenyWriteExecute=yes
ReadWritePaths=/var/lib/tor /var/log/tor /run/tor
LimitNOFILE=65535Das Dateideskriptor-Limit ist wichtiger, als es aussieht. Ein beschäftigtes Relay hält Tausende von gleichzeitigen Sockets, und das Standardlimit erzeugt ein Relay, das eine Woche funktioniert und dann beginnt, Verbindungen ohne ersichtlichen Grund im Protokoll abzulehnen.
4. Firewall
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
ct state invalid drop
iif lo accept
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
tcp dport 22 accept
tcp dport 9001 accept
}
chain forward {
type filter hook forward priority filter; policy drop;
}
}systemctl enable --now nftables
systemctl restart tor@defaultBeachten Sie, dass der Metrik-Port an die Loopback-Adresse gebunden ist und daher keine Regel benötigt. Erreichen Sie ihn bei Bedarf über einen SSH-Tunnel und setzen Sie ihn niemals aus; Relay-Metriken sind für mehr Leute interessant, als Sie denken.
Verifizieren Sie es
Dies ist der Teil, der Stunden statt Minuten dauert, also starten Sie und gehen Sie weg.
Zuerst, innerhalb von etwa zwanzig Minuten nach dem Start, sollte das Protokoll sagen, dass das Relay seinen eigenen Port von außen getestet und durchgekommen ist:
journalctl -u tor@default --since "20 min ago" | grep -i "self-testing"Sie möchten die Zeile, die besagt, dass Ihr ORPort von außen erreichbar ist. Wenn sie nie erscheint, blockiert die Firewall eingehenden Port 9001 oder Ihre v6-Adresse in der torrc stimmt nicht mit der Instanz überein.
Zweitens, nehmen Sie Ihren Fingerabdruck und bewahren Sie ihn:
cat /var/lib/tor/fingerprintDrittens, bestätigen Sie, dass das Relay tatsächlich arbeitet, nicht nur läuft:
nyx
curl -s http://127.0.0.1:9035/metrics | grep -E "tor_relay_traffic|tor_relay_connections"Die Datenverkehrszähler sollten innerhalb einer Stunde nach bestandenem Selbsttest steigen. Verzeichnisbehörden benötigen etwa drei Stunden, um Ihren Fingerabdruck in den Konsens zu wählen, und Clients senden erst danach meaningful Menge. Die Guard-Flagge erscheint um den achten Tag, wenn Ihre Betriebszeit hält, und das ist der Zeitpunkt, an dem die Datenverkehrsgrafik von einem Rinnsal zu dem von Ihnen gesetzten Limit übergeht.
Viertens, und am wichtigsten für diesen speziellen Build, beweisen Sie, dass Sie nicht exitieren. Prüfen Sie von einem zweiten Rechner aus, dass nichts außer Relay-Datenverkehr ausgeht:
ss -tn state established | wc -l
ss -tn state established sport = :9001 | wc -lFast jede etablierte Verbindung sollte den ORPort betreffen. Eine große Anzahl von ausgehenden Verbindungen zu beliebigen Ports würde eine Exit-Richtlinie bedeuten, die Sie nicht beabsichtigt haben; stoppen Sie in diesem Fall den Daemon und lesen Sie Schritt zwei erneut.
Betrieb
| Sache | Antwort |
|---|---|
| Neustart | Kostet Sie ein paar Stunden Reputation. Bündeln Sie Ihre Änderungen. |
| Upgrades | apt upgrade, dann Neustart. Relays mit alten Versionen werden markiert und schließlich entfernt. |
| Standortwechsel | Kopieren Sie /var/lib/tor/keys und der Fingerabdruck folgt dem Relay. Die Konsensgewichtung wird nicht zurückgesetzt. |
| Beschwerden | Ein Middle-Relay erzeugt keine. Wenn Sie eine erhalten, exitiert etwas und Sie sollten prüfen. |
| Herunterfahren | Setzen Sie zuerst AccountingMax auf einen kleinen Wert, damit Stromkreise abfließen, oder stoppen Sie einfach und akzeptieren Sie den Reputationsverlust. |
Sichern Sie /var/lib/tor/keys am Tag des Baus irgendwo außerhalb der Instanz. Der Identitätsschlüssel macht dieses Relay zu diesem Relay; verlieren Sie ihn und Sie beginnen wieder bei Null Konsensgewicht, was acht Tage sind, in denen niemand Sie nutzt. Unsere Position dazu, was wir protokollieren, während Ihr Relay läuft, finden Sie auf der Protokollierungsseite, und sie ist kurz.