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.

Next Post Previous Post