Benutzer-Werkzeuge

Webseiten-Werkzeuge


open:it:vpn

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
open:it:vpn [2024/06/22 10:15] – Externe Bearbeitung 127.0.0.1open:it:vpn [2025/12/12 19:19] (aktuell) – [Linux Client einrichten] k@i
Zeile 1: Zeile 1:
 ====== WireGuard - VPN-Server ====== ====== WireGuard - VPN-Server ======
-Quelle: https://www.howtoforge.de/anleitung/wireguard-vpn-unter-debian-11-installieren/ 
  
-[[https://www.codingblatt.de/wireguard-private-key-gpg-verschluesseln/|Wireguard: Private-Key mit GPG verschlüsselt speichern]]+++++ Quellen: |
  
-===== Server einrichten =====+  * [[https://www.wireguard.com/|Wireguard]] 
 +  * [[https://www.howtoforge.de/anleitung/wireguard-vpn-unter-debian-11-installieren/|Wireguard unter Debian 11]] 
 +  * [[https://www.codingblatt.de/wireguard-private-key-gpg-verschluesseln/|Wireguard: Private-Key mit GPG verschlüsselt speichern]] 
 +  * https://oliver-kaestner.de/posts/anleitung-wireguard-vpn-server-einrichten-internetrouting/ 
 + 
 +++++ 
 +===== 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, ähnlich einem Passwort. Die Datei dient als Speicher für diese Zeichenkette. \\ 
 +</WRAP> 
 +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, wenn z.B. Freigaben erteilt oder entzogen werden müssen. \\ 
 +Eine Kopie der Schlüssel/Keys wird in den im folgenden genannten Verzeichnissen abgelegt. \\ 
 + 
 +**Server-Schlüssel - privat (key)**
   wg genkey | sudo tee /etc/wireguard/server.key   wg genkey | sudo tee /etc/wireguard/server.key
 +Leserechte des privaten Server-Keys auf root begrenzen
 +  sudo chmod 0400 /etc/wireguard/server.key
 +**Server-Schlüssel öffentlich (pub) aus dem privaten Schlüssel generieren**
 +  sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub
  
-  chmod 0400 /etc/wireguard/server.key+**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 /etc/wireguard/clients
  
-  cat /etc/wireguard/server.key | wg pubkey sudo tee /etc/wireguard/server.pub+  sudo wg genkey | tee /etc/wireguard/clients/client1.key
  
-**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** 
-  mkdir -p /etc/wireguard/clients+  sudo cat /etc/wireguard/clients/client1.key | wg pubkey | tee /etc/wireguard/clients/client1.pub
  
-  wg genkey | tee /etc/wireguard/clients/client1.key+**Zur Nutzung werden die Schlüssel wie folgt hinterlegt:**\\
  
-  cat /etc/wireguard/clients/client1.key wg pubkey | tee /etc/wireguard/clients/client1.pub+auf dem Server in der [[#Server-Konfiguration erstellen|Server-Konfiguration]] 
 +  * privater Key des Servers 
 +  * öffentliche Keys aller Clients
  
-Client1 kann auch anders benannt werden z.B. mit dem Namen eines Users oder einer Workstation+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 /etc/wireguard/wg0.conf+  sudo nano /etc/wireguard/wg0.conf
  
   [Interface]   [Interface]
Zeile 37: 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]
-  # Wireguard client public key - client1.pub +  # Client public key - client1.pub 
-  PublicKey = <PUBLIC-KEY-CLIENT_n>+  PublicKey = <PUBLIC-KEY-CLIENT1>
   # clients' VPN IP addresses you allow to connect   # clients' VPN IP addresses you allow to connect
-  # possible to specify subnet ? [10.8.0.0/24] +  AllowedIPs = 10.8.0.2/32
-  AllowedIPs = 10.8.0.2/24+
      
   [Peer]   [Peer]
-  # weitere Clients sind möglich > client public key kmueller.pup +  # weitere Clients - Laptop13.pup 
-  PublicKey = <PUBLIC-KEY-CLIENT_n+  PublicKey = <PUBLIC-KEY-Laptop13
-  AllowedIPs = 10.8.0.2/24+  AllowedIPs = 10.8.0.3/32
  
-ÄNDERN +Muss ein einzelner Peer gelöscht werden:
-  * <PRIVATKEY-SERVER> +
-  * <PUBLIC-KEY-CLIENT_n>+
  
-==== Port-Forwarding ==== +  wg set <interface> peer <key> remove 
-  nano /etc/sysctl.conf+interfache z.B. wg0 \\ 
 + 
 +==== Tunnel, Port-Forwarding ==== 
 +Um den gesamten Traffic über den Tunnel zu leiten (erforderlich für den aktiven Client für Internetdaten, Zugriff auf Remote-Desktops, etc.) ist Port-Forwarding auf dem Server erforderlich. \\ 
 +=== Debian === 
 +  sudo nano /etc/sysctl.conf
 Einfügen in die Datei Einfügen in die Datei
   # Port Forwarding for IPv4   # Port Forwarding for IPv4
Zeile 63: Zeile 94:
  
 Änderungen übernehmen Änderungen übernehmen
-  sysctl -p +  sudo sysctl -p 
-  +=== Ubuntu === 
 +Ist die Netzverwaltung auf dem Server mit Netplan realisiert, siehe: \\ 
 +[[https://netplan.readthedocs.io/en/latest/netplan-yaml/#properties-for-device-type-tunnels|Tunnel mit Netplan]]. \\ 
 +[[https://github.com/canonical/netplan/blob/main/doc/examples.md|Netplan, Github]] \\ 
 +[[https://github.com/canonical/netplan/blob/main/examples/wireguard.yaml|Netplan, Github wireguard.yaml]] \\ 
 ==== Firewall ==== ==== Firewall ====
 siehe [[open:it:net#Firewall|Firewall]] siehe [[open:it:net#Firewall|Firewall]]
  
-  ufw allow OpenSSH+  sudo ufw allow OpenSSH
  
-Internetschnittstelle des Servers ermitteln +# Tunnelendpunkt erreichbar machen 
-  ip route list default+  sudo ufw allow 51820/udp 
 +# Daten aus dem Tunnel annehmen 
 +  sudo ufw allow in on wg0 
 +# Weiterleiten von Internetverkehr 
 +  sudo ufw route allow in on wg0
  
-Ergebnis z.B. default via 162.37.1.1 dev eth0 \\ +  sudo ufw route allow out on wg0
-Hier ist eth0 die Schnittstelle+
  
-WireGuard-Serverkonfiguration +  sudo ufw reload
-  nano /etc/wireguard/wg0.conf +
-Einfügen in Abschnitt Interface +
-  PostUp = ufw route allow in on wg0 out on eth0 +
-  PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE +
-  PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE +
-  PreDown = ufw route delete allow in on wg0 out on eth0 +
-  PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE +
-  PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE+
  
-Port in Firewall öffnen  +==== Wireguard-Server starten ==== 
-  ufw allow 51820/udp+  sudo systemctl start wg-quick@wg0.service 
 +enable = in Zukunft automatisch mit dem System starten 
 +  sudo systemctl enable wg-quick@wg0.service
  
-  ufw reload +  sudo systemctl status wg-quick@wg0.service
- +
-==== WG-Server starten ==== +
-  systemctl start wg-quick@wg0.service +
-enable = mit System starten +
-  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 /etc/wireguard/wg0.conf +  sudo wg
- +
-  wg-quick down /etc/wireguard/wg0.conf+
  
 ===== 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, inhaltsgleich für den Import eines Windowsclients genutzt werden. Die u.a. Kommentare stören den Import nicht+ 
-  sudo nano /etc/wireguard/wg-client1.conf+**Schlüssel generieren**\\ 
 +siehe [[#Schlüssel generieren|Schlüssel generieren]] \\ 
 + 
 +**Konfigurationsdatei erstellen. **\\ 
 +Diese Datei kann auch für den Import mit einem entsprechenden Client-Programm genutzt werden - Windows oder Linux. 
 +<WRAP important> 
 +ACHTUNG: In dieser Datei ist der private Schlüssel enthalten, sie ist daher sicherheitsrelevant und sollte entsprechend behandelt werden. 
 +</WRAP> 
 +  sudo nano /etc/wireguard/client1.conf
  
   [Interface]   [Interface]
   # Define the IP address for the client - must be matched with wg0 on Wireguard Server   # Define the IP address for the client - must be matched with wg0 on Wireguard Server
-  Address = 10.8.0.2/24+  Address = 10.8.0.2/32
   # specific DNS Server   # specific DNS Server
   DNS = 192.168.178.1   DNS = 192.168.178.1
-  # Private key for the client - client1.key+  # Private key for the client
   PrivateKey = <PRIVATKEY-CLIENT1>   PrivateKey = <PRIVATKEY-CLIENT1>
      
Zeile 129: Zeile 161:
   # Sending Keepalive every 25 sec   # Sending Keepalive every 25 sec
   PersistentKeepalive = 25     PersistentKeepalive = 25  
-ÄNDERN:  + 
-  * <PRIVATKEY-CLIENT1> +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.)). \\ 
-  * <PUBLICKEY-SERVER> +Ist die DNS-Adresse des Servers nicht bekannt, kann diese wie folgt abgerufen werden: 
-  * <IP_SERVER>+ 
 +  cat /etc/resolv.conf 
 + 
 +Ist der Server (nur) über eine **IPV6**-Verbindung erreichbar > diese als <IP_SERVER> eintragen. Allerdings muss sie in eckige Klammern gesetzt werden, andernfalls kollidieren die Doppelpunkte bei der Interpretation der Konfiguration. Beispiel: [2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:51820 \\ 
 +Siehe auch [[https://www.andysblog.de/wireguard-und-ipv6-server-bzw-anschluss|Andys Block]] \\
  
 ==== Wireguard starten ==== ==== Wireguard starten ====
-  wg-quick up wg-client1+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 141: 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 154: Zeile 192:
  
 Wireguard beenden (Server und Client) Wireguard beenden (Server und Client)
-  wg-quick down wg-client1+  sudo wg-quick down client1
  
 ===== Windows-Client einrichten ===== ===== Windows-Client einrichten =====
Zeile 160: Zeile 198:
   - [[https://www.wireguard.com/install/|Installationsdatei herunterladen]]   - [[https://www.wireguard.com/install/|Installationsdatei herunterladen]]
   - Installieren   - Installieren
-  - Konfigurationsdatei importieren, siehe [[#Linux Client einrichten]] einrichten +  - Konfigurationsdatei über das installierte Programm importieren, siehe [[#Linux Client einrichten]] einrichten  
 +  - Verbindung aktivieren/deaktivieren
  
  
open/it/vpn.1719044136.txt.gz · Zuletzt geändert: von 127.0.0.1