Da WireGuard zukünftiger Kern Linux 5.6. Ich beschloss, herauszufinden, wie ich dieses VPN am besten in mein System integrieren kann. .
Ausrüstung
- Raspberry Pi 3 mit LTE-Modul und öffentlicher IP. Es wird einen VPN-Server geben (im Folgenden wird er so genannt). Kantenwanderer)
- Telefon eingeschaltet Android, die für die gesamte Kommunikation ein VPN nutzen müssen.
- Notizbuch Linux, die VPN nur innerhalb des Netzwerks verwenden sollten.
Jedes Gerät, das eine Verbindung zu einem VPN herstellt, muss sich mit jedem anderen Gerät verbinden können. Beispielsweise sollte ein Telefon eine Verbindung zu einem Webserver auf einem Laptop herstellen können, wenn beide Geräte Teil eines VPN-Netzwerks sind. Wenn die Einrichtung einfach genug ist, können Sie darüber nachdenken, eine Verbindung zu einem VPN und einem Desktop (über Ethernet) herzustellen.
Angesichts der Tatsache, dass kabelgebundene und kabellose Verbindungen mit der Zeit immer weniger sicher werden (, и ), überlege ich ernsthaft, ob ich verwenden soll. WireGuard für alle meine Geräte, unabhängig davon, in welcher Umgebung sie laufen.
Softwareinstallation
WireGuard bietet für die meisten Verteilungen Linux, Windows и macOSAnträge für Android iOS- und iOS-Geräte werden über App Stores vertrieben.
Ich habe die neueste Fedora-Version. Linux 31, und vor der Installation war ich zu faul, das Handbuch zu lesen. Ich habe die Pakete einfach so gefunden. wireguard-tools, installierte sie und konnte dann nicht herausfinden, warum nichts funktionierte. Weitere Untersuchungen ergaben, dass ich das Paket nicht installiert hatte wireguard-dkms (mit einem Netzwerktreiber) und es befand sich nicht im Repository meiner Distribution.
Wenn ich die Anleitung gelesen hätte, hätte ich die richtigen Schritte unternommen:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Ich habe die Raspbian Buster-Distribution auf meinem Raspberry Pi installiert, es gibt bereits ein Paket wireguard, es installieren:
$ sudo apt install wireguardAm Telefon Android Ich habe die Anwendung installiert. aus dem offiziellen Katalog des Google App Store.
Schlüssel installieren
Zur Authentifizierung von Knoten Wireguard Verwendet ein einfaches Verfahren mit privaten und öffentlichen Schlüsseln zur Authentifizierung von VPN-Knoten. VPN-Schlüssel können Sie ganz einfach mit folgendem Befehl generieren:
$ wg genkey | tee wg-laptop-private.key | wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key | wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key | wg pubkey > wg-mobile-public.keyDadurch erhalten wir drei Schlüsselpaare (sechs Dateien). Wir werden nicht auf Dateien in Konfigurationen verweisen, sondern den Inhalt hierher kopieren: Jeder Schlüssel ist eine Zeile in Base64.
Erstellen einer Konfigurationsdatei für einen VPN-Server (Raspberry Pi)
Die Konfiguration ist recht einfach, ich habe folgende Datei erstellt /etc/wireguard/wg0.conf:
[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE
[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32
[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32Ein paar Anmerkungen:
- An den entsprechenden Stellen müssen Sie die Zeilen aus den Dateien mit den Schlüsseln einfügen
- Mein VPN verwendet den internen Bereich
10.200.200.0/24 - Für Mannschaften
PostUp/PostDownIch habe eine externe Netzwerkschnittstelle wwan0, Sie haben möglicherweise eine andere (zum Beispiel eth0)
Das VPN-Netzwerk lässt sich ganz einfach mit dem folgenden Befehl aufrufen:
$ sudo wg-quick up wg0 Ein kleines Detail: Als DNS-Server habe ich verwendet dnsmasq mit der Netzwerkschnittstelle verbunden br0, ich habe auch Geräte hinzugefügt wg0 zur Liste der erlaubten Geräte hinzufügen. In dnsmasq geschieht dies durch das Hinzufügen einer neuen Zeile mit der Netzwerkschnittstelle zur Konfigurationsdatei /etc/dnsmasq.confzum Beispiel:
interface=br0
interface=wg0Außerdem habe ich eine iptable-Regel hinzugefügt, um Datenverkehr zum überwachenden UDP-Port (51280) zuzulassen:
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTDa nun alles funktioniert, können wir den automatischen Start des VPN-Tunnels registrieren:
$ sudo systemctl enable wg-quick@wg0.serviceKonfiguration des Laptop-Clients
Erstellen Sie auf dem Laptop eine Konfigurationsdatei /etc/wireguard/wg0.conf mit den gleichen Einstellungen:
[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820Notes:
- Anstelle von Edgewalker müssen Sie eine öffentliche IP oder einen VPN-Serverhost angeben
- Indem man es einstellt
AllowedIPsauf10.200.200.0/24, wir nutzen das VPN nur für den Zugriff auf das interne Netzwerk. Der Datenverkehr zu allen anderen IP-Adressen/Servern erfolgt weiterhin über „normale“ offene Kanäle. Dabei wird auch der vorkonfigurierte DNS-Server auf dem Laptop genutzt.
Für den Test und den automatischen Start verwenden wir dieselben Befehle wg-quick и systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceEinrichtung des Clients für Android-Telefon
Für telefon Android Wir erstellen eine sehr ähnliche Konfigurationsdatei (nennen wir sie mobile.conf):
[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820 Im Gegensatz zur Laptop-Konfiguration muss das Telefon unseren VPN-Server als DNS-Server verwenden (string DNS) sowie den gesamten Datenverkehr durch den VPN-Tunnel leiten (AllowedIPs = 0.0.0.0/0).
Anstatt die Datei auf Ihr Mobilgerät zu kopieren, können Sie sie in einen QR-Code umwandeln:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confDer QR-Code wird als ASCII-Code in der Konsole ausgegeben. Er kann mit der App gescannt werden. Android VPN und die automatische Konfiguration des VPN-Tunnels.
Abschluss
Einstellung WireGuard einfach magisch im Vergleich zu OpenVPN.
Source: habr.com
