Wireguard in 2023/V

Mit Mullvad komfortabel im Internet unterwegs

Egg, 18. Mai 2024: Wer öfter auf Reisen ist, kennt die Problematik. Je nach Standort (Land) sind gewisse Dienste nicht mehr verfügbar, weil sogenannte GEO-Blocker (geographische Sperren) aktiviert sind. Mit AVMultimedia 2023/V steht neu Wireguard zur Verfügung. Im Zusammenspiel mit Mullvad ein ideales Gespann, um schnell und unkompliziert überall auf der Welt anonym und länderspezifisch im Internet surfen zu können. Einleitend sei gesagt, diese Anleitung erfordert AVMultimedia 2024/V der neuen Generation. Die aktuellen ArchivistaBox-Systeme enthalten diese Funktionalität derzeit (noch) nicht.

Was ist Wireguard und was ist Mullvad?

Ein privates Netzwerk (VPN) verändert (nach aussen) die eigene genutzte Rechneradresse. Unter Linux existieren dafür Dienste wie OpenVPN oder Wireguard. Letzterer Dienst bietet sich insbesondere daher an, weil Wireguard deutlich schneller arbeitet als dies bei OpenVPN der Fall ist. Eine VPN-Verbindung wird vom aktuellen Rechner zu einem entfernten Rechner aufgebaut. Dies kann ein eigener Server/Rechner sein, auf dem ein Zugriff erfolgen soll.

Neben dem “privaten” Einsatz gibt es kommerzielle VPN-Dienste, welche es ermöglichen, das Internet über den VPN-Dienst zu nutzen. Diese VPN-Anbieter stellen üblicherweise viele Hunderte oder gar Tausende von Rechnern zur Verfügung, über die das Surfen im Netz möglich ist. Dies ist z.B. dann sinnvoll, wenn z.B. in Österreich die Seite des Schweizer Fernsehen (srf.ch) aufgerufen wird, um über PlaySRF Filme anzusehen. Diese können nur abgerufen werden, wenn der Aufruf aus einem Server der Schweiz erfolgt. Und genau hier setzen VPN-Dienste ein. Über den VPN-Anbieter kann “vorgegaukelt” werden, der eigene Rechner stünde in der Schweiz (bzw. jedes andere beliebige Land), auch wenn der eigene Rechner sich aktuell im Ausland befindet.

Bekannte VPN-Dienste sind protonvpn.com, mullvad.net oder nordvpn.com. Um die auf der gesamten Welt verteilten Server dieser Dienste nutzen zu können, fallen Gebühren von ca. 3 bis 10 Franken pro Monat an. Bei den bisherigen AVMultimedia- und ArchivistaBox-Systemen konnte ProtonVPN genutzt werden. Leider ist es seit geraumer Zeit nicht mehr möglich, protonvpn-cli zu nutzen. Aus diesem Grunde musste eine Alternative gesucht werden.

Mullvad beinhaltet ein sehr einfaches Nutzer-Konzept. Zu Beginn wird eine sechzehnstellige Nummer generiert. Über diese Nummer erfolgen sämtliche Aktivitäten. Pro Monat fallen jeweils 5 Euro Nutzungsgebühren für fünf Geräte an. Über die generierte Nummer ist der Dienst “freizuschalten”, d.h. das Konto muss “aufgeladen” werden. Akzeptiert werden Bargeld, Überweisungen, Krypto und Kreditkarten. Nach der Aktivierung stehen die Dienste für den freigeschalteten Zeitraum zur Verfügung.

Clients gibt es für viele Betriebssysteme wie iOS, Android, Windows, Mac und Linux. Die Linux-Unterstützung allerdings wird nur aktuelle Ubuntu-, Debian- und Fedora-Versionen gewährt. Alle anderen, d.h. auch AVMultimedia (Devuan) können Mullvad über OpenVPN und/oder Wireguard nutzen. Wie eingangs erwähnt arbeitet Wireguard deutlich schneller als dies bei OpenVPN der Fall ist. Daher wird nachfolgend Mullvad im Zusammenspiel mit Wireguard vorgestellt.

Einrichten von Mullvad mit AVMultimedia 2024/V

Nachfolgend wird der Prozess beschrieben, um Mullvad auf AVMultimedia einzurichten. Es wird dabei erwartet, dass ein lokaler Zugriff auf einer AVMultimedia-Installation besteht.

Hinweis: Die nachfolgenden Ausführungen gehen davon aus, dass eine 16-stellige ID mit Guthaben besteht. Falls keine solche ID besteht, kann diese https://mullvad.net/de/account/create erstellt werden. Nach dem (einmaligen) Erstellen der ID ist diese mit Guthaben aufzuladen und sicher aufzubewahren. Ohne die 16-stellige ID lässt sich Mullvad nicht nutzen. Dies wäre/ist umso “dramatischer”, sollte ein höheres Guthaben auf die ID aktiviert worden sein. Ohne die ID ist das entsprechende Guthaben “verloren”.

Nach der Anmeldung mit der 16-stelligen-Nummer bei mullvad.net ist 1. der Menupunkt ‘Wireguard-Konfiguration’ aufzurufen.

Dort ist der 2. Button/Knopf ‘Schlüssel generieren’ zu klicken. Unter ‘Wireguard-Schlüssel’ findet sich danach ein Eintrag. Zwingend ist bei ‘Ein Land auswählen’ ein Eintrag zu aktivieren. Empfohlen wird 3. die Option ‘Alle Länder’. Damit können sämtliche Mullvad-Server genutzt werden.

Ganz unten auf der Seite ist 4. der Button/Knopf ‘Zip-Archiv herunterladen’ zu klicken. Es wird nun die Datei ‘mullvad_wireguard_linux_all_all.zip’ in den Ordner ‘/home/archivista/data’ heruntergeladen. Jetzt kann das Dienstprogramm für Mullvad gestartet werden:

Über das Dienstprogramm kann der gewünschte Mullvad-Server einfach ausgewählt werden:

Das gewünschte Land kann mit Eingabe der ersten Buchstaben direkt ausgewählt werden (z.B. ch). Mit Klick auf ‘Ausführen’ und einer Kontrollabfrage kann der gewünschte Standort aktiviert werden. Soll Mullvad nicht mehr “arbeiten”, kann dies mit der Option ‘AUS’ bewerkstelligt werden.

Einfach, oder? Ganz so einfach war es leider nicht. Ehe ein Weiterlesen erfolgt, sei hier angefügt, der nachfolgende Abschnitt ist für jene bestimmt, welche am technischen Hintergrund interessiert sind. Alle übrigen dürfen direkt zum übernächsten Abschnitt “springen”.

Darum ist das Mullvad-Tool für AVMultimedia entstanden

Leider gestaltete sich der Weg zur Integration von Mullvad nicht ganz so einfach. Zunächst wurde versucht, dass orginäre Mullvad-Linux-Package zum Laufen zu bringen. Als Debian-Package ist es auf Devuan durchaus installierbar. Leider scheitert die Installation, weil hardcodiert die folgenden Aufrufe in /var/lib/dpkg/info/mullvad-vpn.postinst in der Bash-Datei eingetragen sind:

systemctl enable "/usr/lib/systemd/system/mullvad-daemon.service"
systemctl start mullvad-daemon.service || echo "Failed to start mullvad-daemon.service"
systemctl enable "/usr/lib/systemd/system/mullvad-early-boot-blocking.service"

Der Mullvad-Deamon kann aber auch manuell gestartet werden. Dies erfolgt mit:

/usr/bin/mullvad-daemon -v

Nun wird der Dienst zwar gestartet, aber leider wird wiederum “hartcodiert” das Betriebssystem abgefragt, und dabei scheitert der Mullvad-Dienst:

[ERROR] Error: Failed to reset firewall policy
Caused by: Error while processing an incoming netlink message
Caused by: Operation not supported (os error 95)

Eine Anfrage beim Support von Mullvad fühte einzig dazu, dass explizit jegwelcher Support für andere Linux-Systeme ausgeschlossen wurde. Nun denn, so wurde ein Tool für AVMultimedia entwickelt. Das Programm dürfte unter sämtlichen Linux-Systemen laufen. Für diejenigen, welche an der Technologie interessiert sind, hier der Code:

#!/usr/bin/perl
use strict;
my $tit="AVMultimedia";
$tit="ArchivistaBox" if -e "/etc/mysql";
my $servers=`ls -1 /etc/wireguard/*.conf`;
$servers =~ s/(\.conf)//g;
my $msg_ok="Proceed";
my $msg_ok2="OK";
my $msg_cancel="Cancel";
my $msg_mullvad="Choose VPN-Server";
my $msg_none="OFF";
my $msg_err="Please first create wireguard conf for mullvad at mullvad.net";
my $lang=`cat /proc/cmdline | grep 'lang.en'`;
if ("$lang" eq "") {
  $msg_ok="Ausführen";
  $msg_cancel="Abbrechen";
  $msg_mullvad="VPN-Server wählen";
  $msg_none="AUS";
  $msg_err="Bitte auf mullvad.net Wireguard-Konfiguration erstellen";
}
my $files=`ls -1 /home/archivista/data/mullvad_wireguard_linux_*.zip`;
my @files = split(/\n/,$files);
my $file = $files[0];
my $pwire = "/etc/wireguard";
system("unzip -d $pwire -o \"$file\"") if -e "$file" && -d "$pwire";
my $current=`ls -1 /etc/wireguard/*.conf 2>/dev/null`;
if ($current eq "") {
  my $err="yad --window-icon=\"input-keyboard\" \\\n".
    "--width=400 --title=\"$tit\" \\\n".
    "--window-icon=\"\" --text=\"$msg_err\" \\\n".
    "--borders=10 --button=\"$msg_ok2\":0";
  system($err);
  exit 0;
}
$current =~ s/(\.conf)//g;
$current =~ s/(\/etc\/wireguard\/)//g;
my @servers = split(/\n/,$current);
my $server = "";
my $mullconf = "/etc/mullvad.conf";
$server = `cat $mullconf` if -e $mullconf;
chomp $server;
my $out = "$server $msg_none";
$out = $msg_none if $server eq "";
foreach my $key (@servers) {
  chomp $key;
  next if $key eq $server;
  $out .= " $key";
}
my $cmd = "yad --window-icon=\"input-keyboard\" \\\n".
  "--width=320 --height=480 --title=\"$tit\" \\\n".
  "--borders=10 --seperator --regex-search --search-column=1 \\\n".
  "--column=\"$msg_mullvad\" --list= $out \\\n".
  "--button=\"$msg_cancel\":1 --button=\"$msg_ok\":0";
my $res=`$cmd`;
if ($res ne "") {
  $res =~ s/\n//g;
  $res =~ s/\|//g;
  my $res1="yad --window-icon=\"input-keyboard\" \\\n".
    "--width=400 --title=\"$tit\" \\\n".
    "--window-icon=\"\" --text=\"$msg_mullvad: $res?\" \\\n".
    "--borders=10 --button=\"$msg_cancel\":1 --button=\"$msg_ok\":0";
  my $ret=system($res1);
  if ($ret==0) {
    if ($res eq $msg_none) {
      system("wg-quick down $server");
      system("rm -f $mullconf") if -e $mullconf;
    } else {
      if ($server ne $msg_none && $server ne "") {
        system("wg-quick down $server")
      }
      system("wg-quick up $res");
      system("echo -n \"$res\" >$mullconf");
    }
  }
}

Der aktuelle Code umfasst unter 80 Zeilen und ca. 2600 Bytes. Das Programm dürfte sich mit Ausnahme des Ortes, wo die initiale Mullvad-Wireguard-Konfiguration “gesucht” wird, beliebig auf jedem Linux-Betriebssystem einsetzen lassen. Dies im Unterschied zum offiziellen Mullvad-Linux-Package. Es benötigt auf der Festplatte satte 130 MByte und ist nur auf einigen wenigen Linux-Distributionen (bzw. auch dort nur für bestimmte Versionen) verfügbar und lauffähig.

An dieser Stelle darf gerne die Frage aufgeworfen werden, warum nur Linux-Code mittlerweile derart an bestimmte Distributionen gebunden programmiert wird. Es wäre sehr einfach, Programme so zu schreiben, dass sie universell lauffähig blieben, nur eben, wo kein Wille ist, ist auch kein Weg. Und wo ein Wille ist, da gibt es einen Weg. Dies einfach mal als Anmerkung.

USB-Tethering und MullvadApp, wenn es mal nicht “funkt”

Eine Einschränkung ergibt sich bei obigem Verfahren allerdings. Mit Mullvad (auch mit anderen Diensten wie ProtonVPN oder NordVPN) lässt sich nicht gänzlich verbergen, dass eine Nutzung über ein VPN-Netz erfolgt. Gewisse Dienste (z.B. orf.at) prüfen dies und verweigern allfällig die Nutzung.

Sofern dies der Fall ist, lassen sich diese Dienste trotzdem nutzen, indem das Smartphone “dazwischen” geschaltet wird. Der entsprechende Dienst nennt sich USB-Tethering (nur bei Android oder, LineageOS oder /e/). Dabei ist das Smartphone über ein USB-Kabel an den Rechner anzuschliessen. Nun kann USB-Tethering aktiviert werden:

  

Nach dem Aktivieren von USB-Tethering kann der Standort in der Mullvad-App geändert werden (siehe obenstehend). Jetzt lässt sich der VPN-Dienst in AVMultimedia über das Netzwerk-Tool (Windows-Taste, dann ‘Netzwerk-Tool’ aufrufen):

Hinweis: Nur wenn USB-Tethering aktiviert ist, lässt sich das Smartphone über USB nutzen. Falls nicht, ist entweder das Smartphone gar nicht über USB angeschlossen oder das USB-Kabel ist nicht für die Nutzung mit dem Smartphone geeignet.

Sofern auf dem Smartphone alles im “grünen” Bereich ist (USB-Tethering aktiviert und Standort in Mullvad eingestellt), kann die Nutzung des so gesicherten Netzwerkes in AVMultimedia aktiviert werden. Dazu ist über die Windows-Taste (Systemmenü) das Netzwerk-Tool aufzurufen und dort USB zu aktivieren. Dabei ist einmalig das root-Passwort einzugeben:

Mit dem Klicken auf den Button ‘Ausführen’ erfolgt die Nutzung des Internets komplett über das Smartphone. Und so eingerichtet, lässt sich dann z.B. auch orf.at dazu “überreden”, die entsprechenden Inhalte abzuspielen.

Bleibt die Frage zu klären, warum es sich trotzdem lohnt, Mullvad direkt über AVMultimedia zu nutzen? Erstens erfordert das Einrichten über USB-Tethering mehr Aufwand bzw. zwingend ein angehängtes Smartphone und zweitens ist der Umweg über das Smartphone in aller Regel deutlich langsamer. In den allermeisten Fällen kann Mullvad direkt über AVMultimedia bzw. das Wireguard-Protokoll erfolgen.

Fazit: Flexibel und mit Privacy im Internet unterwegs

Die hier vorgestellte Lösung mit Wireguard arbeitet ab Version 2024/V der neuen Generation (avmultimedia_2024.iso). Die Anleitung funktioniert aber gerne auch auf sämtlichen Linux-Rechnern. Im Unterschied zum GUI-Tool von Mullad, das nur für gewisse Debian-, Ubuntu- und Fedora-Versionen funktioniert, dürfte die hier vorgestellte Lösung sehr universell sein, sofern Wireguard verfügbar ist.

Einmal aufgespielt, ist das Arbeiten mit Mullvad recht einfach. AVMultimedia 2024/V stellt beim ordentlichen Herunterfahren bzw. Hochfahren auch sicher, dass Konfigurationsdateien für die Mullvad-Server erhalten bleiben.

Als positiver Nebeneffekt beim Arbeiten mit Mullvad resultiert, dass die aufgerufenen Server die öffentliche IP-Adresse des genutzten Rechners nie erfahren werden. Damit ist ein gutes Mass an Privacy erreicht. Bei internen Tests zeigte sich ferner ein flottes Tempo. In diesem Sinne scheint der Obolus von monatlich 5 Euro recht angemessen. Zumal Mullvad monatlich erneuert werden kann.

P.S: Das Update auf 2023/V beinhaltet ebenfalls eine aktualisierte Version von Freetube und behebt bei der ArchivistaBox gemeldete Fehler (z.B. Passwörter mit Sonderzeichen).