Herzlich Willkommen!
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:
- Auf einem Cloud Server bei Hetzner mit nur IPv6 Adressen
- Ich habe eine KVM bei einem Dedicated Server von Hetzner gehostet
- Dabei hatte der Hetzner Dedicated auch nur IPv6 und habe daraus mehr gemacht
- IPv6 GRE Tunnel über Noez verbunden und für das Wireguard IPv6 Routing benutzt
- Alle diese Verbindungen mit IPv4 Adressen gemischt
- 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:
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.
Bitte geht diese Schritte noch einmal durch:
- Der direkte VPN Server braucht IPv4 sowie mindestens eine IPv6 Adresse als Endpoint
- Die Configs könnt Ihr nach der VPN Server installation mit: wireguard-install.sh erstellen
- Der Wireguard_Manger.sh downloadet die wireguard-install.sh im Anschluss nach der Installation im /root/wireguard-install.sh Verzeichnis
- Vergissert euch das dass zweie Skript folgende Rechte erhält: chmod 777 wireguard-install.sh
- Ausführen mit: ./wireguard-install.sh
2. Methode 1: Die Tables und IP Rules
Wir werden folgendes lernen:
- Wir können mehrere Verschiedene Wireguard Server in einem Client verbinden und aufteilen
- Werden mit IP Rules die IP Adressen ob Lokal oder Statisch zu der jeweiligen Table zuweisen
- Die Tables erstellen und in der Wireguard Client Config zuweisen
- Wir werden IPv6 als Herzstück der VPN Server Verbindungen nutzen
- Werden Wireguard Bridgen in Proxmox
- 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
# 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
2.1 Zusätzliche IPv4 Adressen auf IPv6 Only Verbindungen
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
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
Hier sehen wir nun, dass unsere Wireguard Bridge aktiv ist. Ich werde jetzt also folgendes zeigen:
- Ich Virtualisiere einen LXC Container
- Werde das Netzwerk Setup als Beispiel zeigen
- Werde Speedtests durchführen
Statische IP: 5.230.xxx.xxx => 10.7.0.4 => Bridged auf Server B
(Meine neue Konfiguration – abweichend vom Bild).
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
Fazit:
Mit etwas kreativen Umsetzungen ist auch eine Wireguard Bridge möglich 🙂 Das gute an dieser Routing Methode ist:
- Kein Doppeltes NAT mehr
- Direkt mit dem VPN Server als Bridge verbunden
- Also somit direkte kommunikation innerhalb des Netzes
- 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 🙂
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.
Schreibe einen Kommentar