Mein Kumpel Ulf hat mir vor einigen Tagen, im Rahmen der beginnenden Proteste und Einschränkung des Internets im Iran, einen Link geschickt, in dem eine Möglichkeit für jeden aufgezeigt wird mit Snowflake Menschen zu helfen, diese Zensur zu umgehen.
Das Schöne ist, dass dies jeder mit seinem Browser tun kann, oder mit seinem eh 24/7 laufendem Raspberry Pi.
Den originalen Beitrag findet ihr bei Kuketz IT-Security. Hier gibt es auch eine detaillierte Erklärung wie Snowflake funktioniert.
Ulf hat in seinem Beitrag die Einrichtung von Snowflake unter DietPi mit Docker aufgezeigt und detailliert beschrieben. Da ich meinen Raspberry Pi mit Ubuntu betreibe, wie viele andere auch, möchte ich die Anleitung daher für Ubuntu hier veröffentlichen.
Snowflake wird hier als Service ausgeführt, wie in Kuketz Blog in den Kommentaren gezeigt wird, allerdings mit kleinen Anpassungen.
Los gehts
Zuerst führt bitte alle ausstehenden Updates für Ubuntu aus:
sudo apt update
sudo apt upgrade
Wenn dies abgeschlossen ist, fangen wir mit den vorbereitenden Konfigurationen zur Einrichtung von Snowflake an.
Für den Betrieb von Snowflake müssen erst mal die Pakete git und golang installiert werden
sudo apt install git
sudo apt install golang
Im Anschluss wird der Quellcode von Snowflake mittels git heruntergeladen
git clone https://git.torproject.org/pluggable-transports/snowflake.git
Im Anschluss wechselt man in das Snowflake Verzeichnis und startet den Build-Vorgang
cd snowflake/proxygo build
Nun ist Snowflake einsatzbereit. Jetzt muss der Service eingerichtet werden.
Hierfür müsst ihr erst mal rausfinden, wie User und Group eures Benutzers lauten. Dafür führt ihr folgendes aus:
sudo nano /etc/passwd
In der folgenden Liste tauchen viele Werte auf, relevant ist aber der Eintrag mit eurem Benutzernamen für den Pi. Bei mir z.B. so:
pi:x:1000:1000:Pi:/home/pi:/bin/bash
Wobei der Benutzer "pi" und die Gruppe "Pi" ist.
Nun erstellt ihr eine Datei für den Service:
sudo nano /etc/systemd/system/snowflake.service
Der folgende Inhalt wird einfach eingefügt ("pi" bitte gegen euren User austauschen im Bereich "ExecStart" und unter User und Group die eben ausgelesenen Daten eintragen):
[Unit]
Description=Snowflake
Wants=network.target
After=syslog.target network-online.target
StartLimitIntervalSec=300
StartLimitBurst=10
[Service]
Type=simple
ExecStart=/home/pi/snowflake/proxy/proxy
Restart=on-failure
RestartSec=5
KillMode=process
User=pi
Group=Pi
[Install]
WantedBy=multi-user.target
Jetzt die Services die neue Datei einlesen:
sudo systemctl daemon-reload
Um den neu angelegten Service nun zu starten und dafür zu sorgen, dass dieser beim Systemstart hochkommt, folgenden Befehl ausführen:
sudo systemctl start snowflake.service
Um zu prüfen, ob der Service läuft, einfach folgenden Befehl ausführen:
sudo systemctl status snowflake.service
Hier wird auch 1x die Stunde der letzte Wert aus dem Log von Snowflake ausgegeben. Das sieht dann ungefähr so aus:
snowflake.service - Snowflake
Loaded: loaded (/etc/systemd/system/snowflake.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2022-09-24 15:50:39 CEST; 1h 24min ago
Main PID: 4843 (proxy)
Tasks: 9 (limit: 4429)
Memory: 14.4M
CPU: 13min 44.196s
CGroup: /system.slice/snowflake.service
└─4843 /home/pi/snowflake/proxy/proxy
Sep 24 15:50:39 pi systemd[1]: Started Snowflake.
Sep 24 16:50:39 pi proxy[4843]: 2022/09/24 14:50:39 In the last 1h0m0s, there were 18 connection>
That's all :-)
Snowflake updaten
Im Prinzip ist das ganz einfach und kann manuell alle paar Tage oder Wochen gemacht werden (wer möchte kann natürlich auch ein Script dafür schreiben / beachtet bitte wieder den Austausch den Benutzernamens "Pi"). Einfach folgende Befehle ausführen:
sudo systemctl stop snowflake.service
cd /home/pi/snowflake/
git pull https://git.torproject.org/pluggable-transports/snowflake.git
cd /home/pi/snowflake/proxy
go build
sudo systemctl start snowflake.service
sudo systemctl status snowflake.service
Damit wird Snowflake auf die aktuelle Version hochgezogen und ihr habt im Anschluss noch den Überblick, ob der Service sauber läuft.
Netzwerktraffic im Blick behalten
Ulf hat es in seinem Blog ja beschrieben. Bei Flatrates kann Snowflake einfach laufen bleiben. Wenn man aber seinen Traffic im Blick behalten möchte, kann man einfach das Tool "vnstat" einsetzen.
Die Installation ist simple:
sudo apt install vnstat
Dann noch vnstat im Hintergrund einrichten und beim Neustart mitstarten lassen:
sudo systemctl enable vnstat<br>sudo systemctl start vnstat
Nach einiger Zeit kann man dann über den Befehl vnstat einfach die Statistiken abrufen. Sollte dann ungefähr so aussehen:
rx / tx / total / estimated
eth0:
2022-09 27.05 MiB / 27.29 MiB / 54.34 MiB / 66.74 MiB
today 27.05 MiB / 27.29 MiB / 54.34 MiB / 84.59 MiB
wlan0:
2022-09 0 B / 0 B / 0 B / --
today 0 B / 0 B / 0 B / --
Über vnstati kann man sich die Statistiken dann auch als kleine PNGs anzeigen lassen:
sudo apt install vnstati
Für einige Beispiele der Datenaufbereitung hier die Manpage.