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/08/01 09:05] – [Linux Client einrichten] k@iopen:it:vpn [2025/12/12 19:19] (aktuell) – [Linux Client einrichten] k@i
Zeile 3: Zeile 3:
 ++++ Quellen: | ++++ Quellen: |
  
 +  * [[https://www.wireguard.com/|Wireguard]]
   * [[https://www.howtoforge.de/anleitung/wireguard-vpn-unter-debian-11-installieren/|Wireguard unter Debian 11]]   * [[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://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 einrichten =====+===== 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 40: 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]
   # 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
   AllowedIPs = 10.8.0.2/32   AllowedIPs = 10.8.0.2/32
      
   [Peer]   [Peer]
-  # weitere Clients - kmueller.pup +  # weitere Clients - Laptop13.pup 
-  PublicKey = <PUBLIC-KEY-CLIENT_n>+  PublicKey = <PUBLIC-KEY-Laptop13>
   AllowedIPs = 10.8.0.3/32   AllowedIPs = 10.8.0.3/32
  
-ÄNDERN +Muss ein einzelner Peer gelöscht werden:
-  * <PRIVATKEY-SERVER> +
-  * <PUBLIC-KEY-CLIENT_n>+
  
-zu AllowedIPs: mit 1 Peer hat die Grundeinstellung /24 geklappt, bei mehreren musste das umgestellt werden auf /32.+  wg set <interface> peer <key> remove 
 +interfache z.B. wg0 \\
  
-==== Port-Forwarding ==== +==== Tunnel, Port-Forwarding ==== 
-  nano /etc/sysctl.conf+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 67: 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
  
 # Tunnelendpunkt erreichbar machen # Tunnelendpunkt erreichbar machen
Zeile 83: Zeile 115:
   sudo ufw route allow out on wg0   sudo ufw route allow out on wg0
  
-  ufw reload+  sudo ufw reload
  
-==== WG-Server starten ==== +==== Wireguard-Server starten ==== 
-  systemctl start wg-quick@wg0.service +  sudo systemctl start wg-quick@wg0.service 
-enable = mit System starten +enable = in Zukunft automatisch mit dem System starten 
-  systemctl enable wg-quick@wg0.service+  sudo systemctl enable wg-quick@wg0.service
  
-  systemctl status wg-quick@wg0.service+  sudo 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/32   Address = 10.8.0.2/32
-  # specific DNS Server (Server-side)+  # specific DNS Server
   DNS = 192.168.178.1   DNS = 192.168.178.1
   # Private key for the client   # Private key for the client
Zeile 123: 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 135: 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 148: 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 154: 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.1722495959.txt.gz · Zuletzt geändert: von k@i