, , , , , , , , , , , , , ,

Wireguard – In Proxmox als Linux Bridge und Virtualisieren mit Statische IP

Posted by

0
(0)

Herzlich Willkommen!

Screenshot 01 01 2024 21.57.15
Nur IPv6 Verbindungen mit Wireguard, das wird heute das Ziel sein daraus mehr zu machen

Es ist wieder soweit! Ich habe für euch an Praktischen Routing Methoden geforscht für IPv6 oder auch IPv4 🙂 Heute werde ich diese Methoden auf folgendes testen:

  1. Auf einem Cloud Server bei Hetzner mit nur IPv6 Adressen
  2. Ich habe eine KVM bei einem Dedicated Server von Hetzner gehostet
  3. Dabei hatte der Hetzner Dedicated auch nur IPv6 und habe daraus mehr gemacht
  4. IPv6 GRE Tunnel über Noez verbunden und für das Wireguard IPv6 Routing benutzt
  5. Alle diese Verbindungen mit IPv4 Adressen gemischt
  6. Das wird bestimmt spannend also los geht’s 🙂

1. Wir erstellen eine Wireguard Konfig

Damit auch die Clients auf unsere Wireguard Server zugang bekommen, müssen wir die Wireguard Configs generieren. Diese werden zumeist als .conf Dateien generiert und genutzt. Siehe auch:

Wireguard installieren mit Portweiterleitung (LXC)

Ich werde für den ersten Client zwei interne IPv4 Adressen zuweisen: 10.7.0.2/32, 10.7.0.3/32. Für IPv6 als Wireguard Client (Intern Wireguard): fddd:2c4:2c4:2c4::2/128.

Screenshot 01 01 2024 22.05.54
Ich ändere jetzt den Endpoint mit meinen jeweiligen Port auf IPv6
Screenshot 01 01 2024 22.06.58
Jetzt kann ich diese Konfig also meine Only IPv6 Server zuweisen

Bitte geht diese Schritte noch einmal durch:

  1. Der direkte VPN Server braucht IPv4 sowie mindestens eine IPv6 Adresse als Endpoint
  2. Die Configs könnt Ihr nach der VPN Server installation mit: wireguard-install.sh erstellen
  3. Der Wireguard_Manger.sh downloadet die wireguard-install.sh im Anschluss nach der Installation im /root/wireguard-install.sh Verzeichnis
  4. Vergissert euch das dass zweie Skript folgende Rechte erhält: chmod 777 wireguard-install.sh
  5. Ausführen mit: ./wireguard-install.sh

2. Methode 1: Die Tables und IP Rules

Screenshot 01 01 2024 22.24.02
Die einen von den wichtigsten Funktionen des Routings

Wir werden folgendes lernen:

  1. Wir können mehrere Verschiedene Wireguard Server in einem Client verbinden und aufteilen
  2. Werden mit IP Rules die IP Adressen ob Lokal oder Statisch zu der jeweiligen Table zuweisen
  3. Die Tables erstellen und in der Wireguard Client Config zuweisen
  4. Wir werden IPv6 als Herzstück der VPN Server Verbindungen nutzen
  5. Werden Wireguard Bridgen in Proxmox
  6. Sodass wir direkt die Lokalen IPs von Wireguard auf VMs und Containern setzen

Ja auch das Bridgen des VPN Tunnels ist hier soweit möglich. Wir werden selbst die IPs zu z.B vmbr0, vmbr1… routen und aufteilen 🙂

				
					apt-get update
apt-get install curl sudo wireguard resolvconf -y
# Wir installieren die Pakete auf den Client für Linux der sich verbinden möchte
				
			
				
					#Öffnen mit dem Nano Editor eine neue Config: wg0.conf
nano /etc/wireguard/wg0.conf
				
			
Screenshot 01 01 2024 22.39.03
Bitte beachtet bevor Ihr euch verbindet, die wg0 Schittstelle auf Table = 100 zu setzen
				
					# Speichern die Client Konfig vom VPN Server hier und aktivieren für Konfig (wg0) den Autostart via Systemd
sudo systemctl enable wg-quick@wg0
sudo service wg-quick@wg0 start
				
			
Screenshot 01 01 2024 22.41.28
Wie wir nun sehen können, sind beide Server miteinander verbunden

2.1 Zusätzliche IPv4 Adressen auf IPv6 Only Verbindungen

Screenshot 01 01 2024 22.44.45
Wir nutzen bei den VPN Server das IPtables NAT Skript

Ersetzt bitte im Skript wo eure Rootserver Haupt IPv4 rein muss. Die zusätzlichen IPv4 Adressen können wir dann im Anschluss per NAT rüber routen. Neu: Braucht man nur noch auf Server A (Wireguard Server) machen da auf Server B die Wireguard Bridge direkt rüber kommuniziert und IPs bezieht.

				
					# Um die NAT Regeln dauerhaft speichern zu können bitte folgendes Paket nachinstallieren
sudo apt-get install iptables-persistent -y
				
			
				
					# So nutzt man das Skript
#Parameters: [Source IP] [Client VPN IP] [NIC] [VPN Server Port Muss 100% UDP sein] [Add/Del]
#root@VPN-Firmen: ./ipv4.sh 5.230.xxx.xxx 10.7.0.3 eth0 51820 Add
# 10.7.0.2 Erste IPv4 von dem Wireguard Client im IPv4 Lokal Bereich
# Davor 5.230.xxx.xxx meine Statische Öffentliche IPv4 Adresse
# NIC: eth0 oder eurer Haupt Interface vom Server
# Der Wireguard Server Port zumeist: 51829
# Add => Zum anlegen
# Del => Zum entfernen
				
			

2.2 Wireguard Bridge erstellen für Proxmox Virtualisierung

				
					# Bitte die Pakete nachinstallieren sofern nicht vorhanden
sudo apt-get install bridge-utils -y
sudo apt-get install iproute2 -y
				
			
				
					#root@der-routing-tests1:~# ip route
#10.7.0.0/24 dev wg0 proto kernel scope link src 10.7.0.2 
#169.254.169.254 via 172.31.1.1 dev eth0 
#172.31.1.1 dev eth0 scope link 

# Hier zu sehen die Main Table von Linux
				
			
				
					# Wireguard Bridge für Proxmox
auto vmbr0
iface vmbr0 inet static
        address {{WG-Client-IP}}/24
        gateway {{WG-Gateway}}
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        pre-up modprobe wireguard
        post-up ip link set dev vmbr0 up
        pre-up ip route add {{WG-Subnet}}/24 dev wg0 proto kernel scope link src {{WG-Client-IP}} table 100
        pre-up ip rule add from {{WG-Client-IP}} table 100

        post-down wg-quick down wg0
        post-down ip link set dev vmbr0 down
        post-down ip link set dev wg0 nomaster
        post-down ip rule del from {{WG-Client-IP}} table 100
        post-down ip route del {{WG-Subnet}}/24 dev wg0 proto kernel scope link src {{WG-Client-IP}} table 100
				
			
				
					# Meine Einstellungen für mein Internes VPN Subnetz 10.7.0.0/24
auto vmbr0
iface vmbr0 inet static
        address 10.7.0.2/24
        gateway 10.7.0.1
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        pre-up modprobe wireguard
        post-up ip link set dev vmbr0 up
        pre-up ip route add 10.7.0.0/24 dev wg0 proto kernel scope link src 10.7.0.2 table 100
        pre-up ip rule add from 10.7.0.2 table 100

        post-down wg-quick down wg0
        post-down ip link set dev vmbr0 down
        post-down ip link set dev wg0 nomaster
        post-down ip rule del from 10.7.0.2 table 100
        post-down ip route del 10.7.0.0/24 dev wg0 proto kernel scope link src 10.7.0.2 table 100
				
			

!! Wichtig !!

Wenn bei einem Reboot nicht direkt die Linux Bridge geladen wurde so bitte immer bei jedem reboot des Servers dies ausführen und fertig! 🙂

				
					# Solange ausführen manchmal auch zweimal hintereinander dann sollte die Bridge da sein.
sudo service wg-quick@wg0 stop
sudo service wg-quick@wg0 start
sudo service networking restart
				
			
Screenshot 02 01 2024 01.03.27
Jetzt habe ich eine Statische IPv4 Adresse im Only IPv6 WG0 Tunnel geroutet in sogar Bridged Mode

Das ist doch klasse! 🙂 Jetzt habe ich also bei z.B Hetzner meine IPv4 Adressen von extern geroutet. Ich muss erhlich sagen dieses Verfahren ist neu bei mir also über Tester seitens dieser Methode würde ich mich freuen 🙂 Zudem kann man jetzt automatisch logischerweise da es bridged ist direkt in Proxmox los Virtualisieren.

3. Wir virtualisieren mit der Wireguard Bridge

Screenshot 02 01 2024 02.19.49
Hier zu sehen die aktive Wireguard Bridge

Hier sehen wir nun, dass unsere Wireguard Bridge aktiv ist. Ich werde jetzt also folgendes zeigen:

  1. Ich Virtualisiere einen LXC Container
  2. Werde das Netzwerk Setup als Beispiel zeigen
  3. Werde Speedtests durchführen
Screenshot 02 01 2024 02.22.14
10.7.0.3 => Client IP von Wireguard = Gateway, 10.7.0.4 => LXC Container IP (Später etwas abweichend vom Bild)
Screenshot 02 01 2024 02.25.13
Hier route ich jetzt die Statische IPv4 für den LXC Container beim Wireguard Server

Statische IP: 5.230.xxx.xxx => 10.7.0.4 => Bridged auf Server B

(Meine neue Konfiguration – abweichend vom Bild).

Screenshot 02 01 2024 02.28.02
Aktiviert jetzt das Forwarding auf Server B in /etc/sysctl.conf und im Anschluss sysctl -p

Dabei aktivieren wir das IP-Forwarding um somit vom Hosts bezogene Routen im LXC mit nutzen zu können.

				
					# Bei jeder LXC oder neuen VM IP eingeben
ip rule add from 10.7.0.4 table 100
# Oder ab start der extra LXC oder VM IPs
ip rule add from 10.7.0.4/24 table 100
# Dann wird ab Virtualisierungs IPs das restliche mit übernommen
				
			
Screenshot 02 01 2024 02.43.01
Hier sehen wir also das wir mit einer Wireguard Bridge in Proxmox Internet haben mit Statischer IP
Screenshot 02 01 2024 02.47.50
Download Super und Upload könnte man mit folgenden MTUs verbessern: 1420, 1462 – Gerne testen

Fazit:

Mit etwas kreativen Umsetzungen ist auch eine Wireguard Bridge möglich 🙂 Das gute an dieser Routing Methode ist:

  1. Kein Doppeltes NAT mehr
  2. Direkt mit dem VPN Server als Bridge verbunden
  3. Also somit direkte kommunikation innerhalb des Netzes
  4. IPv6 Only Endpoints mit zusätzlich IPv4 Adressen versorgen

Ich bedanke mich fürs lesen des Beitrags und falls Fragen oder Wünsche aufkommen, so gerne mir bescheid geben sei es via Kommentar 🙂

Facebook
Twitter
WhatsApp
Telegram
Email
Reddit

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

7 Antworten

  1. Avatar von Hbase
    Hbase
    1. Avatar von RAW Networks
  2. Avatar von Hbase
    Hbase
    1. Avatar von RAW Networks
  3. Avatar von themmm
    themmm
    1. Avatar von RAW Networks
      1. Avatar von themmm
        themmm

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert