Noez.de - Community Tutorial: GRE Tunnel

https://www.youtube.com/watch?v=OfLmcKpQom4

Willkommen! :slight_smile:

In diesem Tutorial werden wir den Noez - GRE Tunnel Schritt für Schritt einrichten.

Hier die drei wichtigen Lernschritte die wir hier erklären:

  1. Du lernst wie der Bestellprozess funktioniert.
  2. Wir lernen zudem auch wie wir unseren Externen z.B Proxmox Server, mit dem Noez GRE Tunnel verbinden.
  3. Später werden wir ein sogenanntes Shell/Bash Skript mit unseren Routen schreiben und mit unserer Netzwerk Konfiguration in Linux Verbinden.

Schritt 1. Wir bestellen unseren Noez - GRE Tunnel

Nun, der Noez GRE Tunnel sollte auch wissen können, wo die Route hingeht.
Das Internet basiert momentan auf das IPv4 oder IPv6 Protokoll.
Das könnt Ihr euch so vorstellen das die Computer alle eine eigene Internet IP im Globalen Netzwerk haben.
Jedenfalls kann man auch das neue Protokoll nutzen bei Noez oder noch das ältere IPv4 Protokoll.

Im Bestellprozess tragen wir hier also unseren Externen Server im IP-Format ein. (Dort wo er Primär erreichbar ist).

Wählen im Anschluss dann unsere gewünschten IPv4-Adressen als Paket/Addon aus.
Es gibt jeweils einzelne IPv4-Adressen oder gebündelte im einem Subnetz.
Stellt es euch bei einem Subnetz so vor, dass start ip 5.230.x.1 bis Z.b 5.230.x.13 eine saubere Reihe von IPv4-Adressen zur verfügung gestellt wird.
Somit also nicht random IPv4-Adressen. Das würde nur bei den einzelnen IPv4-Adress Paketen der Fall sein.

Wer aber flexibel sein möchte mietet sich jeweils immer einzelne IPv4-Adressen Addons hinzu wo sich der Preis immer 0,50 Cent aufwärts erhöht pro Addon :slight_smile:

Schritt 2. Wir routen jetzt die FlexIPs zu unseren Ziel-Proxmox Host

Jetzt werde ich hier Beispiel Code einfügen den Ihr für euch gerne zum Verbindungsaufbau nutzen könnt :slight_smile:

Für Routen, Rules & Tables:

# Öffne mit den Nano Editor in Linux eine neue Datei mit den Namen z.B gre_noez.sh
nano /root/gre_noez.sh
#!/bin/bash

# Verbindungsaufbau zum GRE-Tunnel für IPv4
ip tunnel add gre1 mode gre local Dein-Externer-Server remote Noez-GRE-Endpunkt ttl 255
ip addr add Internes Subnet/30 dev gre1
ip link set gre1 up

# Verbindungsaufbau zum GRE-Tunnel für IPv6
ip tunnel add gre1 mode ip6gre local Dein-Externer-Server-IPv6 remote Noez-GRE-Endpunkt-IPv6 ttl 255
ip addr add Internes Subnet/30 dev gre1
ip link set gre1 up

# Hier tragen wir unsere IPv4-FlexIPs zu der Rule ein die auf z.B Table 20 verweist

ip rule add from FlexIP1/32 table 20
ip rule add from FlexIP2/32 table 20
ip rule add from FlexIP3/32 table 20
# ... und z.B bei Subnetzen
# Ein Beispiel für ein Subnetz Addon mit der Größe /28
ip rule add from FlexIP-Subnet1/28 table 20

# Jetzt routen wir für unsere Linux Brücke z.B vmbr0 die entsprechenden FlexIPs
# Tipp: Mit dieser Virtualisieren wir später VMs oder LXC Container

ip route add from FlexIP1/32 dev vmbr0
ip route add from FlexIP1/32 dev vmbr0
ip route add from FlexIP1/32 dev vmbr0

# Und für z.B Subnetze
# Ein Beispiel für ein Subnetz Addon mit der Größe /28
ip route add from FlexIP-Subnet1/28 dev vmbr0

# Jetzt müssen wir auch den IPs sagen wo es wieder an Traffíc zurückgeht
# Setze also auf z.B der Table 20 wo wir mit IP Rule die IPv4-Adressen verwiesen haben, den Gateway
ip route add default via Internes Gateway dev gre1 table 20 onlink

# Jetzt noch die MTU anpassen für Optimalen Internet-Speed
ip link set gre1 mtu 1476
ip link set vmbr0 mtu 1476

# MTU für IPv6
ip link set gre1 mtu 1456
ip link set vmbr0 mtu 1456

Zum Speichern und Schließen der Datei:

  1. STRG+O + Enter => Zum Speichern der gre_noez.sh
  2. STRG+X => Zum Verlassen des Nano Editors
chmod 777 /root/gre_noez.sh

Tipp: Mit einem MTU Rechner könnt Ihr die Optimale MTU für die jeweiligen Protokolle und Faktoren berechnen.

Wichtig: Das Bash/Shell Skript muss auf euren Daten angepasst werden.

Jetzt müssen wir einmal noch das Skript in /etc/network/interfaces hinterlegen mit unserer vmbr0 Brücke:

nano /etc/network/interfaces
# Um FlexIPs zu sparen könnt Ihr einfach ein selbst erstelltes Gateway eintragen in Netzmaske /32
# Nehmen wir immer bei unseren FlexIPs alles mit bis auf den letzten IP-Punkt z.B 5.230.x.1/32
# Einfach immer die .1 nehmen
auto vmbr0
iface vmbr0 inet static
        address 5.230.x.1/32
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        post-up /root/gre_noez.sh

Zum Speichern und Schließen der Datei:

  1. STRG+O + Enter => Zum Speichern /etc/network/interfaces
  2. STRG+X => Zum Verlassen des Nano Editors
# Zum Neustart des gesamten Netzwerkes
service networking restart
# Oder ein Befehl zum Reload um andere bereits existierende VMs oder LXC nicht zu stören im Netzwerk
ifreload -a

Wichtig: Aktiviert bitte das IPv4 oder Optional mit das IPv6 Forwarding im Kernel

nano /etc/sysctl.conf
# Entfernt die #  bei folgenden Parametern
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

Zum Speichern und Schließen der Datei:

  1. STRG+O + Enter => Zum Speichern der /etc/sysctl.conf
  2. STRG+X => Zum Verlassen des Nano Editors

Final: Die Verbindung mit einer VM oder LXC Container testen

1 „Gefällt mir“

du hast echt toll erklärt aber wie weise ich eine ip einer vm zu? ich seh nur anleitungen mit lxc conatiner aber jeder redet davon das es auch mit vm`s gehen soll.

leider funktioniert bei mir nicht die zuweisung einer vm da ich leider nicht mal das gateway gepingt bekomme.

wäre schön wenn man noch was nachreichen könntest.

Mit freundlichen Grüßen,

Wenn unter Proxmox die Firewall aktiviert ist, dann wird jeglicher eingehender Verkehr standardmäßig blockiert. Auch Pings an den Host.

Deshalb die Frage: Ist die Proxmox Firewall für den Host aktiv? Ist sie für die VM aktiv? Ist ICMP über deine Bridge an den Host erlaubt?

Anderer wichtiger Punkt ist die korrekte Angabe der MTU. Wenn die Bridge auf dem Host mittels einer Zeile „mtu 1476“ (ggf. anpassen) angegeben ist, dann adaptieren alle Container automatisch diese Einstellung. Virtuelle Maschinen jedoch nicht. Dort muss bei dem Interface entweder explizit die MTU festgelegt werden. Oder alternativ: auf 1 gesetzt werden (1 ist ein Spezialwert und bedeutet „übernehme von Bridge“).

Hallo,

ich habe da ein Probleme mit einer Windows VM.

Ich kann sie nicht pingen hat aber Verbindung ins Internet.

Und bei einem Speedtest bekomm ich nur 380Mbps Down und 900 up zusammen.

Bei meinem Proxmox Server und meinem Linux CT bekomme ich gut 900 down und 900up zusammen.

Hast du dazu eine Lösung?

Hi,

für mich klingt das sehr stark nach der Windows-Firewall. Zumindest wenn ausgehender Traffic einwandfrei funktioniert. Eingehender aber nicht. Jedoch kenne ich mich auch nicht so gut mit Windows (bzw. Windows Server) aus.

Mir fallen dazu zwei Aspekte ein:

  1. Die Windows-Firewall ist grundsätzlich abhändig von der eingestellten Art des Netzwerkes (Privat, Öffentlich). Für Öffentliche Netzwerke sollte die Firewall standardmäßig restriktiver sein (es sollte aber deswegen jetzt nicht einfach auf privates Netzwerk gewechselt werden!)

  2. Unter „Windows Defender Firewall mit erweiterter Sicherheit“ kann man die Firewall-Regeln anpassen.
    Wenn ich unter „Eingehende Regeln“ reinschaue, dann sehe ich, dass „Datei- und Druckerfreigabe (Echoanforderung - ICMPv4 eingehend)“ standardmäßig bei mir deaktiviert ist. Vielleicht mal (vorsichtig) aktivieren und überprüfen, ob ping dann funktioniert.

Zur Not erstmal davor einlesen. Einen ungeschützen/falsch konfigurierten Server möchte niemand haben.

Hallo,

du hast einen kleinen Fehler in deinem Script oben:

Du schreibst

ip route add from FlexIP1/32 dev vmbr0
ip route add from FlexIP1/32 dev vmbr0
ip route add from FlexIP1/32 dev vmbr0

richtig ist

ip route add FlexIP1/32 dev vmbr0
ip route add FlexIP1/32 dev vmbr0
ip route add FlexIP1/32 dev vmbr0

sonst funktioniert die Anleitung nicht. Im Video ist es richtig :slight_smile:

1 „Gefällt mir“

Hallo, :slight_smile:
Ah, vielen Dank nochmal für die Erläuterung!
Werde ich, wenn ich gleich nochmal Zeit habe, anpassen. :+1:

Kann man die GRE IP´s auch zuhause verwenden oder sind die nur für Server von NOEZ?

Du kannst den GRE-Tunnel sowohl auf IPv4- als auch auf IPv6-Adressen schalten lassen. Wichtig ist, dass eingehender GRE-Tunnel nicht blockiert wird.

Damit läuft der GRE-Tunnel bei jedem öffentlich erreichbaren/gehosteten Server.

Bei einem Heimanschluss könnte das schwierig werden. Es gibt zwar einen Endpunkt, wo du automatisiert deine neue IP hinterlegen kannst. Aber nicht jeder Heim-Router unterstützt GRE.

Die Fritzbox kann GRE-Tunnel nicht terminieren, aber wohl weiterleiten. Zumindest kann man bei Port-Forwarding GRE auswählen. Ausprobiert habe ich es nicht. Vielleicht könnte es klappen, wenn du deinen Heim-Server als exposed host konfigurierst.

Bei DSL-Lite kommt zusätzlich noch dazu, dass die IPv4-Adresse durch den ISP genattet wird. Sollte das dort überhaupt gehen, dann nur über IPv6.