Wie kann man ein Tor-Relay auf Selbstständigkeit umstellen?
Genauer gesagt, möchte ich demnächst wieder meinen Raspi3 als Tor-Relay einsetzen, so wie ich das schon einmal eingerichtet hatte. Dazu sollen noch V-Server hinzukommen.
Jedoch würde ich gerne mal wissen, wie ich diese Relays Selbstständig laufen lassen kann?
Zb. soll es sich selbstständig Updaten und selbst Starten falls ich es vom Strom entferne oder Server Neugestartet werden. Also Quasi, dass man dieses nur noch mit einem LAN-Kabel und einer Steckdose verbinden muss und sich Zurücklehnen kann. Klar kommen nun einige Kommentare, dass das nicht so schwer ist sich in PuttY oder anderen Programmen Anzumelden und einen Befehl einzugeben, aber es kam leider früher zu einem ziemlich Technischem Desaster. Die Software ließ sich vorher ohne Probleme Aktualisieren. Jedoch passierte eines Tages dies nicht mehr obwohl ich alle Befehle eingeben hatte die ich sonst immer verwendet habe.
2 Antworten
falls ich es vom Strom entferne
Uh, ganz übel. Der Pi will sauber heruntergefahren werden. Ausschalten per Stromausfall führt über kurz oder lang zu Fehlern im Dateisystem.
Du kannst jeden Dienst selbstständig beim Hochfahren des Gerätes per systemd starten. Dazu braucht es eine Unit-Datei.
cat /lib/systemd/system/tor.service
# This service is actually a systemd target,
# but we are using a service since targets cannot be reloaded.
[Unit]
Description=Anonymizing overlay network for TCP (multi-instance-master)
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecReload=/bin/true
[Install]
WantedBy=multi-user.target
Ich würde vermuten, dass diese Datei bereits existiert. Anschließend:
systemctl daemon-reload
systemctl enable tor
So sollte Tor beim Systemstart automatisch gestartet werden. Für andere Dienste (keine Ahnung, was der V-Server sein soll) geht das analog. In der Regel werden die nötigen Units direkt mitinstalliert. In der Regel werden sie auch bei der Installation aktiviert. Wenn Du mehrere Tor-Instanzen parallel laufen lassen möchtest, geht das auch. Dazu legst Du ein Verzeichnis an:
mkdir /etc/tor/instances
In dieses Verzeichnis kommt dann für jede Instanz ein weiteres Verzeichnis:
ls /etc/tor/instances
instance1 instance2 instance3
Der Name der Verzeichnisse ist egal, da kannst Du auch etwas Beschreibenderes nehmen. In jedes dieser Verzeichnisse kommt nun die entsprechende torrc rein.
Dann schreibst Du eine Unit-Datei:
nano /etc/systemd/system/tor@.service
[Unit]
Description=Anonymizing overlay network for TCP (instance %i)
After=network.target nss-lookup.target
PartOf=tor.service
ReloadPropagatedFrom=tor.service
[Service]
Type=notify
NotifyAccess=all
PIDFile=/run/tor-instances/%i/tor.pid
PermissionsStartOnly=yes
ExecStartPre=/usr/bin/install -Z -m 02755 -o _tor-%i -g _tor-%i -d /run/tor-instances/%i
ExecStartPre=/bin/sed -e 's/@@NAME@@/%i/g; w /run/tor-instances/%i.defaults' /usr/share/tor/tor-service-defaults-torrc-instances
ExecStartPre=/usr/bin/tor --defaults-torrc /run/tor-instances/%i.defaults -f /etc/tor/instances/%i/torrc --verify-config
ExecStart=/usr/bin/tor --defaults-torrc /run/tor-instances/%i.defaults -f /etc/tor/instances/%i/torrc
ExecReload=/bin/kill -HUP ${MAINPID}
KillSignal=SIGINT
TimeoutStartSec=300
TimeoutStopSec=60
Restart=on-failure
LimitNOFILE=65536
# Hardening
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
ProtectHome=yes
ProtectSystem=full
ReadOnlyDirectories=/
# We would really like to restrict the next item to [..]/%i but we can't,
# as systemd does not support that yet. See also #781730.
ReadWriteDirectories=-/var/lib/tor-instances
ReadWriteDirectories=-/run
ReadWriteDirectories=-//media/hdd/var/log/tor-hs
CapabilityBoundingSet=CAP_SETUID CAP_SETGID CAP_NET_BIND_SERVICE CAP_DAC_READ_SEARCH
[Install]
WantedBy=multi-user.target
Anschließend:
systemctl daemon-reload
systemctl enable tor@instance1
systemctl enable tor@instance2
Für automatische Updates hilft:
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
Dann noch eine Konfigurationsdatei:
nano etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "14";
Die erste Zeile bestimmt die Häufigkeit für apt update, 1 bedeutet: jeden Tag. 7 wäre einmal die Woche. Die zweite Zeile ist sinngemäß dasselbe für apt-upgrade
Die letzte Zeile besagt, dass alle 14 Tage nicht mehr benötigte Paketdateien aus dem apt-Cache gelöscht werden.
Die weitere Konfiguration steht in der Datei
/etc/apt/apt.conf.d/50unattended-upgrades
Dort ist festgelegt, dass nur Sicherheitsupdates automatisch installiert werden. Über die möglichen Optionen informiert die Man-Page.
und einen Befehl einzugeben, aber es kam leider früher zu einem ziemlich Technischem Desaster. Die Software ließ sich vorher ohne Probleme Aktualisieren. Jedoch passierte eines Tages dies nicht mehr obwohl ich alle Befehle eingeben hatte die ich sonst immer verwendet habe.
Das klingt so, als würdest Du nicht vollständig verstehen, was Du da machst. Ob es dann eine gute Idee ist, einen öffentlichen Server selbst zu betreiben, sei mal dahingestellt.
Dein Relay kannst du als Service laufen lassen. Dort kannst du auch festlegen, dass er sich automatisch neu starten soll, falls ein Fehler auftritt.
Die Updates könntest du jeden Tag mit einem Cronjob machen. Jedoch halte ich dies nicht für empfehlenswert. Geschieht beim automatischen Update nämlich ein Fehler, merkst du dies gar nicht.
Das kannst du schon machen, eventuell ist es dann aber schon zu spät und du hast dann mehr Aufwand, das System wieder hinzubiegen.
Naja also Früher oder Später würde ich dies schon merken, weil ich auch gerne meine Eigenen Relays über der Torwebseite beobachte. Zb. Bandbreite und wichtigkeit. Das hab ich sonst auch gerne gemacht. Sollte es Offline Sein, dann würde ich das definitiv Merken.