open:it:vpn
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| open:it:vpn [2024/08/01 12:11] – [WireGuard - VPN-Server] k@i | open:it:vpn [2025/12/12 19:19] (aktuell) – [Linux Client einrichten] k@i | ||
|---|---|---|---|
| Zeile 6: | Zeile 6: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| + | * https:// | ||
| ++++ | ++++ | ||
| - | ===== Server | + | ===== Server-Installation |
| sudo apt update | sudo apt update | ||
| sudo apt install wireguard | sudo apt install wireguard | ||
| - | Am einfachsten alles als root \\ | + | ===== Schlüssel generieren ===== |
| - | **Server-Schlüssel** - privat (key) und öffentlich (pub) generieren | + | <WRAP important> |
| + | Für den Server und für jeden Client wird je ein privater und ein daran gebundener öffentlicher Schlüssel generiert. Für die Funktionalität dürfen sie weder vertauscht noch verändert werden. \\ | ||
| + | Der jeweils private Schlüssel (Server und Clients) ist sicherheitsrelevant und sollte entsprechend behandelt werden. \\ | ||
| + | Schlüssel bedeutet hier: eine lange Zeichenkette, | ||
| + | </ | ||
| + | Die Schlüsseldateien können beliebig benannt werden. Z.B. Username, PC-Name eines Laptops, etc. \\ | ||
| + | Eine eindeutige Bezeichnung hilft die Schlüssel zu identifizieren, | ||
| + | Eine Kopie der Schlüssel/ | ||
| + | |||
| + | **Server-Schlüssel - privat (key)** | ||
| wg genkey | sudo tee / | wg genkey | sudo tee / | ||
| + | Leserechte des privaten Server-Keys auf root begrenzen | ||
| + | sudo chmod 0400 / | ||
| + | **Server-Schlüssel öffentlich (pub) aus dem privaten Schlüssel generieren** | ||
| + | sudo cat / | ||
| - | chmod 0400 / | + | **Client-Schlüssel - privat (key)** \\ |
| + | Werden die Client-Schlüssel auf dem Server generiert, dann sollten diese in das Unterverzeichnis Clients gelegt werden. In diesem Fall muss der geheime private Schlüssel zum Client transferiert werden.\\ | ||
| + | Besser ist es daher, die Client-Schlüssel auf dem Client-System zu erstellen und nur den öffentlichen Schlüssel zum Server zu transferieren. \\ | ||
| + | sudo mkdir -p / | ||
| - | | + | |
| - | **Client-Schlüssel** - privat (key) und öffentlich (pub) generieren (auf dem Server durchführen) | + | **Client-Schlüssel öffentlich (pub) aus dem privaten Schlüssel generieren** |
| - | | + | |
| - | wg genkey | tee / | + | **Zur Nutzung werden die Schlüssel wie folgt hinterlegt: |
| - | cat / | + | auf dem Server in der [[# |
| + | * privater Key des Servers | ||
| + | * öffentliche Keys aller Clients | ||
| - | Client1 kann auch anders benannt werden | + | auf jedem Client in der [[#Linux Client einrichten|Client-Konfiguration]] |
| + | * privater Key des Clients | ||
| + | * öffentlicher Key des Servers | ||
| + | |||
| + | ===== Server einrichten ===== | ||
| ==== Server-Konfiguration erstellen ==== | ==== Server-Konfiguration erstellen ==== | ||
| - | nano / | + | |
| [Interface] | [Interface] | ||
| Zeile 41: | Zeile 64: | ||
| # Ensure any changes will be saved to the Wireguard config file | # Ensure any changes will be saved to the Wireguard config file | ||
| SaveConfig = true | SaveConfig = true | ||
| + | PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
| + | PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE | ||
| | | ||
| [Peer] | [Peer] | ||
| Zeile 49: | Zeile 74: | ||
| | | ||
| [Peer] | [Peer] | ||
| - | # weitere Clients - kmueller.pup | + | # weitere Clients - Laptop13.pup |
| - | PublicKey = < | + | PublicKey = < |
| AllowedIPs = 10.8.0.3/32 | AllowedIPs = 10.8.0.3/32 | ||
| - | zu AllowedIPs: mit 1 Peer hat die Grundeinstellung /24 geklappt, bei mehreren musste das umgestellt | + | Muss ein einzelner |
| - | ==== Port-Forwarding ==== | + | wg set < |
| - | nano / | + | interfache z.B. wg0 \\ |
| + | |||
| + | ==== Tunnel, | ||
| + | Um den gesamten Traffic über den Tunnel zu leiten (erforderlich für den aktiven Client für Internetdaten, | ||
| + | === Debian | ||
| + | | ||
| Einfügen in die Datei | Einfügen in die Datei | ||
| # Port Forwarding for IPv4 | # Port Forwarding for IPv4 | ||
| Zeile 64: | Zeile 94: | ||
| Änderungen übernehmen | Änderungen übernehmen | ||
| - | sysctl -p | + | |
| - | + | === Ubuntu === | |
| + | Ist die Netzverwaltung auf dem Server mit Netplan realisiert, siehe: \\ | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | [[https:// | ||
| ==== Firewall ==== | ==== Firewall ==== | ||
| siehe [[open: | siehe [[open: | ||
| - | ufw allow OpenSSH | + | |
| # Tunnelendpunkt erreichbar machen | # Tunnelendpunkt erreichbar machen | ||
| Zeile 80: | Zeile 115: | ||
| sudo ufw route allow out on wg0 | sudo ufw route allow out on wg0 | ||
| - | ufw reload | + | |
| - | ==== WG-Server starten ==== | + | ==== Wireguard-Server starten ==== |
| - | systemctl start wg-quick@wg0.service | + | |
| - | enable = mit System starten | + | enable = in Zukunft automatisch |
| - | systemctl enable wg-quick@wg0.service | + | |
| - | systemctl status wg-quick@wg0.service | + | |
| Schnittstelle wg0 überprüfen | Schnittstelle wg0 überprüfen | ||
| ip a show wg0 | ip a show wg0 | ||
| - | WG-Server starten und stoppen | + | Verbindungsinformationen anzeigen |
| - | wg-quick up / | + | |
| - | + | ||
| - | wg-quick down / | + | |
| ===== Linux Client einrichten ===== | ===== Linux Client einrichten ===== | ||
| sudo apt install wireguard-tools | sudo apt install wireguard-tools | ||
| - | Konfigurationsdatei erstellen. Diese Datei kann, z.B. als clint1.conf, | + | |
| - | sudo nano / | + | **Schlüssel generieren**\\ |
| + | siehe [[# | ||
| + | |||
| + | **Konfigurationsdatei erstellen. | ||
| + | Diese Datei kann auch für den Import | ||
| + | <WRAP important> | ||
| + | ACHTUNG: In dieser Datei ist der private Schlüssel enthalten, sie ist daher sicherheitsrelevant und sollte entsprechend behandelt werden. | ||
| + | </ | ||
| + | sudo nano / | ||
| [Interface] | [Interface] | ||
| Zeile 121: | Zeile 162: | ||
| PersistentKeepalive = 25 | PersistentKeepalive = 25 | ||
| - | Unter DNS ist die IP-Adresse für den Internetzugang auf dem Server einzutragen. Da sämtliche Internetdaten durch den Tunnel geleitet werden, benötigt der Client die Route auf dem Server. | + | Unter DNS ist die IP-Adresse für den Internetzugang auf dem Server einzutragen. Da sämtliche Internetdaten durch den Tunnel geleitet werden, benötigt der Client die Route auf dem Server, wenn er parallel eine Internetverbindung nutzen möchte((Webseiten aufrufen, E-Mail abrufen, etc.)). \\ |
| + | Ist die DNS-Adresse des Servers nicht bekannt, kann diese wie folgt abgerufen werden: | ||
| + | |||
| + | cat / | ||
| + | |||
| + | Ist der Server (nur) über eine **IPV6**-Verbindung erreichbar > diese als < | ||
| + | Siehe auch [[https:// | ||
| ==== Wireguard starten ==== | ==== Wireguard starten ==== | ||
| - | | + | Hier wird die Verwaltung über die Konsole beschrieben. Wird das Linux-System über eine GUI betrieben, ist es auch möglich, die o.a. client1.conf-Datei über die Netzwerk-Verwaltung zu importieren. |
| + | |||
| + | sudo wg-quick up client1 | ||
| Evtl. installieren bei Fehlermeldung beim Start VPN | Evtl. installieren bei Fehlermeldung beim Start VPN | ||
| Zeile 130: | Zeile 179: | ||
| Schnittstelle prüfen | Schnittstelle prüfen | ||
| - | ip a show wg-client1 | + | ip a show client1 |
| Verbindung anzeigen >> einmal auf dem Client und einmal auf dem Server | Verbindung anzeigen >> einmal auf dem Client und einmal auf dem Server | ||
| Zeile 143: | Zeile 192: | ||
| Wireguard beenden (Server und Client) | Wireguard beenden (Server und Client) | ||
| - | wg-quick down wg-client1 | + | |
| ===== Windows-Client einrichten ===== | ===== Windows-Client einrichten ===== | ||
| Zeile 149: | Zeile 198: | ||
| - [[https:// | - [[https:// | ||
| - Installieren | - Installieren | ||
| - | - Konfigurationsdatei importieren, | + | - Konfigurationsdatei |
| + | - Verbindung aktivieren/ | ||
open/it/vpn.1722507069.txt.gz · Zuletzt geändert: von k@i
