# QuantenVPN # Das Konzept ## Multihop [Mullvad](https://mullvad.net) bietet ein [Multihop](https://mullvad.net/en/help/multihop-wireguard) Feature, bei welchem der Traffic durch einen weiteren Entry Server geleitet wird. Dabei besteht nur eine VPN Verbindung, nämlich mit dem Exit Server, während der Entry lediglich den Traffic weiterleitet. Das funktioniert, da jeder [Mullvad Server](https://mullvad.net/en/servers) einen eindeutigen "Multihop Port" hat, welcher auf allen Servern gleich ist. So hat bspw. der Server `de-fra-wg-001` den Multihop Port `3053`. Konfiguriert man im Client nun den VPN Endpoint `se-sto-wg-005:3053`, weiß der Server `se-sto-wg-005` dass der Traffic zu `de-fra-wg-001` geleitet werden soll. Wir packen auf dieses Setup noch einen drauf und fügen unseren eigenen Server *Sentinel* als "vor-Entry" ein. Dadurch ergibt sich folgendes Bild: ``` Client --1--> Sentinel --2--> Mullvad Entry --2--> Mullvad Exit --> Internet ``` Mullvad sieht somit zu keinem Zeitpunkt die wahre Client IP und der Mullvad Exit zu keinem Zeitpunkt beides: Traffic und Sentinel IP. ### Eigenes Netz vs Weiterleiten Wir hätten ebenfalls den Traffic einfach weiterleiten können, ähnlich wie es Mullvad implementiert. Das hätte jedoch die folgenden Nachteile gehabt: - Änderungen am Setup (bspw. Mullvad Server wechsel) hätten im Client **und** Sentinel Anpassungen benötigt. Denn der Client benötigt den richtigen (Exit Server) Public Key und Sentinel die richtige IP:Port des Entry Servers. - 1 Client = 1 Mullvad Slot Ein eigenes Wireguard Netz zwischen Client und Sentinel bietet folgende Vorteile: - Einfaches Wechseln der Mullvad Server - Keine Client Anpassung nötig - Kann im Hintergrund passieren ohne dass der Client etwas davon mitbekommt - Eigener DNS Server im VPN Netz - Dieser ist optional. In der Client Config kann ein eigener oder auch der Mullvad DNS Server eingetragen werden. - N Clients auf 1 Mullvad Slot # Die Netze Es stehen die folgenden Netze zur Verfügung.
NetzUDPTCPSubnetMullvad HopsServer Wechsel
AdaNet`60524``8443``10.128.0.0/24`0-
CoddNet`53978``8080``10.192.0.0/24`1 (**Nur DE**)1x/h
HuffNet`57937``80``10.224.0.0/24`21x/Tag
HopperNet`48074``443``10.240.0.0/24`2Min. 1x/h
BadenTunnel`37264``10.248.0.0/24`1Privat

AdaNet hat **kein Mullvad**, sondern einen direkt Exit bei Sentinel!

## Wofür welches Netz
NetzUse CaseBeispiel
AdaNetÖffentliches WLAN absichernOnline Banking
CoddNetHohe Privacy für normale TätigkeitenAllgemeines online browsen
HuffNetHöhere Privacy für zeitlich längere TasksTorrent
HopperNetHöchste Privacy für maximale VerschleierungBecause we can.

Das AdaNet und CoddNet nur für "regulären" Traffic verwenden!

Kommunikation der verbunden Clients untereinander ist blockiert

# Basis für Client Config Es müssen alle Felder der Art `` geändert werden. Die Zeichen `<` und `>` sind zu entfernen. ## Was wird benötigt Allgemeine Informationen (erhaltet ihr von uns): - Sentinel IP - Sentinel Wireguard Public Key - Secret für udp2raw An euch angepasst: - Private Key - Option 1: Ihr generiert eure Keys (Private/Public) und gebt uns den Public Key. - Zum Erstellen von einem Keypair im Terminal: `wg genkey | tee private | wg pubkey > public` - Option 2: Wir generieren die Keys und geben euch den Private Key - Von uns euch zugewiesene Client IP (für jedes Netz eine)

Die MTU muss für udp2raw herunter gesetzt werden. In den unteren Configs auf jeden Fall die MTU lassen und nicht verändern! Das gilt auch für Verbindungen ohne udp2raw

## Wireguard Nativ (UDP) ``` # Client configuration [Interface] Address = DNS = 10.128.0.3 PrivateKey = MTU=1342 # Server configuration [Peer] PublicKey = AllowedIPs = 0.0.0.0/0 Endpoint = : ``` ### Kill Switch Der folgende von Mullvad erstellte Code implementiert einen Kill Switch, welcher verhindert das Traffic am VPN Tunnel vorbei geht. Insbesondere relevant für IPv6! Er kann **auf Linux** der Config hinzugefügt. ``` PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT ``` ## Getunnelt mit TCP Use case: Öffentliche Netzwerke wie bspw. an einer Universität oder in der Bahn blockieren häufig UDP Verkehr. Hierbei wird [udp2raw](https://github.com/wangyu-/udp2raw/releases) verwendet, um einen verschlüsselten Fake TCP Tunnel zwischen dem Client und Server zu erstellen. Über diesen Tunnel wird dann die eigentliche VPN Verbindung aufgebaut. Wir verwenden gängige Ports, wie bspw. 443/HTTPS, um Blockierungen in Firewalls zu umgehen.

Erfodert udp2raw auf dem Client Gerät.

Anleitung für Android Geräte [mit root](https://github.com/wangyu-/udp2raw/wiki/Android-Guide), bzw. Workaround für [ohne root](https://github.com/wangyu-/udp2raw/discussions/497#discussioncomment-7516832). ``` # Client configuration [Interface] Address = DNS = 10.128.0.3 PrivateKey = MTU=1342 # Verhindert dass udp2raw traffic auch über den VPN Tunnel gesendet wird PostUp = ip rule add to lookup main PostDown = ip rule del to lookup main # Start/Stop von udp2raw PreUp = udp2raw -c -l 127.0.0.1:50001 -r : -k "" -a >/var/log/udp2raw.log 2>&1 & PostDown = killall udp2raw || true # Server configuration [Peer] PublicKey = AllowedIPs = 0.0.0.0/0 Endpoint = 127.0.0.1:50001 ``` ### Kill Switch Der folgende von Mullvad erstellte Code implementiert einen Kill Switch, welcher verhindert das Traffic nicht durch den VPN Tunnel geht. Insbesondere relevant für IPv6! Wir haben ihn etwas erweitert um Traffic zu Sentinel zuzulassen, da sonst die udp2raw Verbindung bricht. Er kann **auf Linux** der Config hinzugefügt. ``` PostUp = iptables -I OUTPUT ! -d ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT PreDown = iptables -D OUTPUT ! -d ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT ``` ## Zwischen Netzen wechseln Zum Wechseln der Netze genügt es in der Config die **zugewiesene Client IP**, bzw. die Netzadresse und den **Port** zu ändern. Daten der Netze können der [Tabelle](https://bib.quantentoast.de/books/quantenvpn/page/die-netze) entnommen werden. ## Hinweise zu den Keys Alle Netze verwenden dieselben Keys (Wireguard und udp2raw). Auch euer Public Key wird in allen Netzen hinterlegt. Das bedeutet dass zu Verschiedenen Netzen Verbindungen gleichzeitig genutzt werden können. Wer mehrere Connections möchte, dem empfehlen wir allerdings einfach mehrere Keys zu hinterlegen. Somit bleibt nämlich die Möglichkeit eines einfachen Netzwechsels (durch ändern von zwei Parametern) erhalten. Die Idee ist also so viel Flexibilität wie möglich mit so wenig Informationen (Bsp. Keys) wie nötig. # DNS Unser streng gefilterter DNS (AdGuard) ist erreichbar unter `10.128.0.3`. - Mit den Upstream DNS Servern wird ausschließlich über [DoH](https://en.wikipedia.org/wiki/DNS_over_HTTPS) oder [DoT](https://en.wikipedia.org/wiki/DNS_over_TLS) kommuniziert. - Query Logs sind deaktiviert. - Zum Ändern des DNS die Zeile `DNS = 10.128.0.3` in der Client Config anpassen. - z.B.: `#` davor setzen (auskommentieren) zum deaktivieren - Ändern der IP für eigenen DNS oder einen DNS von Mullvad - Mullvad hat für verschiedene Block-Level dedizierte DNS Server. Siehe [Liste](https://github.com/mullvad/dns-blocklists/tree/main?tab=readme-ov-file#custom-dns-entries-for-use-with-our-vpn-service).

Der DNS ist aus allen drei Netzen erreichbar! Die IP muss **nicht** angepasst werden!

## Blocklisten In keiner bestimmten Reihenfolge. Mehrere Listen mit gleicher Basis-Liste möglich.

Wer mehr Struktur in die Listen bringen möchte ist herzlich dazu eingeladen.

- [AdGuard DNS filter](https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt) - [AdAway Default Blocklist](https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt) - [NoCoin Filter List](https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/hosts.txt) - [Scam Blocklist by DurableNapkin](https://raw.githubusercontent.com/durablenapkin/scamblocklist/master/adguard.txt) - [Spam404](https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt) - [Big List of hacked Malware Websites](https://raw.githubusercontent.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites/master/hosts) - [Peter Lowe's LIst](https://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblockplus&showintro=1&mimetype=plaintext) - [WindowsSpyBlocker](https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt) - [sysctl.org](http://sysctl.org/cameleon/hosts) - [Simple Tracking](https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt) - [Simple Ad](https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt) - [Notrack-malware](https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-malware.txt) - [AmazonFireTV](https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/AmazonFireTV.txt) - [notserious](https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/notserious) - [Phishing-Angriffe](https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/Phishing-Angriffe) - [spam.mails](https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/spam.mails) - [Win10 Telemetry](https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/Win10Telemetry) - [easylist](https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/easylist) - [Samsung](https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/samsung) - [malware](https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/malware) - [fake science](https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/Fake-Science) - [MS Office Telemetry](https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/MS-Office-Telemetry) - [Dandelion Sprout's Anti-Malware](https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareAdGuardHome.txt) - [Easyprivacy](https://v.firebog.net/hosts/Easyprivacy.txt) - [Progent-Ads](https://v.firebog.net/hosts/Prigent-Ads.txt) - [Notrack-Blocklist](https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-blocklist.txt) - [First Party Trackers](https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt) - [Multi Party Trackers](https://hostfiles.frogeye.fr/multiparty-trackers-hosts.txt) - [Ads and Tracking extended](https://www.github.developerdan.com/hosts/lists/ads-and-tracking-extended.txt) - [Android Tracking](https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/android-tracking.txt) - [SmartTV](https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/SmartTV.txt) - [1Hosts (Lite)](https://adguardteam.github.io/HostlistsRegistry/assets/filter_24.txt) - [1Hosts (mini)](https://adguardteam.github.io/HostlistsRegistry/assets/filter_38.txt) - [Dan Pollock's List](https://adguardteam.github.io/HostlistsRegistry/assets/filter_4.txt) - [HaGeZi Personal Black & White](https://adguardteam.github.io/HostlistsRegistry/assets/filter_34.txt) - [The No Tracking Blocklist](https://adguardteam.github.io/HostlistsRegistry/assets/filter_32.txt) - [OISD Blocklist Basic](https://adguardteam.github.io/HostlistsRegistry/assets/filter_5.txt) - [OISD Blocklist Full](https://adguardteam.github.io/HostlistsRegistry/assets/filter_27.txt) - [Steven Black's List](https://adguardteam.github.io/HostlistsRegistry/assets/filter_33.txt) - [Dandelion Sprout's Game Console Ads](https://adguardteam.github.io/HostlistsRegistry/assets/filter_6.txt) - [Perflyst and Dandelion Sprout's Smart-TV Blocklist](https://adguardteam.github.io/HostlistsRegistry/assets/filter_7.txt) - [Phishing URL Blocklist (PhishTank and OpenPhish)](https://adguardteam.github.io/HostlistsRegistry/assets/filter_30.txt) - [Dandelion Sprout's Anti-Malware List](https://adguardteam.github.io/HostlistsRegistry/assets/filter_12.txt) - [Stalkerware Indicators List](https://adguardteam.github.io/HostlistsRegistry/assets/filter_31.txt) - [The Big List of Hacked Malware Web Sites](https://adguardteam.github.io/HostlistsRegistry/assets/filter_9.txt) - [Malicious URL Blocklist (URLHaus)](https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt) - [DDG Android](https://raw.githubusercontent.com/duckduckgo/tracker-blocklists/main/app/android-tds.json) - [HaGeZi's Threat Intelligence Feeds](https://adguardteam.github.io/HostlistsRegistry/assets/filter_44.txt) - [Phishing Army](https://adguardteam.github.io/HostlistsRegistry/assets/filter_18.txt) - [ShadowWhisperer's Malware List](https://adguardteam.github.io/HostlistsRegistry/assets/filter_42.txt) - [Peter Lowe's Blocklist](https://adguardteam.github.io/HostlistsRegistry/assets/filter_3.txt) - [HaGeZi's Pro Blocklist](https://adguardteam.github.io/HostlistsRegistry/assets/filter_48.txt) - [HaGeZi's The World's Most Abused TLDs](https://adguardteam.github.io/HostlistsRegistry/assets/filter_56.txt) - [HaGeZi's Pro++ Blocklist](https://adguardteam.github.io/HostlistsRegistry/assets/filter_51.txt) - [HaGeZi's Ultimate Blocklist](https://adguardteam.github.io/HostlistsRegistry/assets/filter_49.txt) - [DDG Windows](https://raw.githubusercontent.com/duckduckgo/tracker-blocklists/main/web/v5/windows-tds.json) - [DDG iOS](https://raw.githubusercontent.com/duckduckgo/tracker-blocklists/main/web/v5/ios-tds.json) - [Alexa Telemetry](https://raw.githubusercontent.com/nextdns/native-tracking-domains/main/domains/alexa) - [Apple Telemetry](https://raw.githubusercontent.com/nextdns/native-tracking-domains/main/domains/apple) - [Huawei Telemetry](https://raw.githubusercontent.com/nextdns/native-tracking-domains/main/domains/huawei) - [Sonos Telemetry](https://raw.githubusercontent.com/nextdns/native-tracking-domains/main/domains/sonos) - [Windows Telemetry](https://raw.githubusercontent.com/nextdns/native-tracking-domains/main/domains/windows) - [Xiaomi Telemetry](https://raw.githubusercontent.com/nextdns/native-tracking-domains/main/domains/xiaomi) - [Mullvad Tracker List](https://raw.githubusercontent.com/mullvad/dns-blocklists/main/files/tracker) - [frellwits swedish](https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/master/Frellwits-Swedish-Hosts-File.txt) - [AdGuard DNS](https://v.firebog.net/hosts/AdguardDNS.txt) - [Urlhaus (Malware)](https://urlhaus.abuse.ch/downloads/hostfile) # Verbindungs Check - [Mullvad Connection check](https://mullvad.net/en/check)