Gre

Aus xinux.net
Zur Navigation springen Zur Suche springen

Grundlegendes

  • Das Generic Routing Encapsulation (GRE) ist ein Netzprotokoll, welches dazu dient, andere Protokolle einzukapseln
  • Man kann so diese in Form eines Tunnels über das Internet Protocol (IP) zu transportieren.
  • GRE setzt – wie UDP und TCP – direkt auf IP auf und verwendet die IP-Protokoll-Nummer 47.

Beispiele für GRE-Anwendungen

  • VPN-Verbindungen für PPTP
  • Aufbau von Tunneln zwischen IPv6-fähigen Netzen über IPv4-Infrastruktur (und vice versa)
  • Tunnel zwischen IPsec-Endstellen, wenn die Benutzung dynamischer Routingprotokolle oder Multicastübertragungen über VPN-Verbindungen benötigt wird
  • Tunnel für Mobilitätsprotokolle wie Mobile IP oder Proxy Mobile IPv6
  • Tunnel für die Übertragung des IPX- oder des AppleTalk-Protokolls

Header-Aufbau

  • Ein GRE-Header ist mindestens 4 Byte groß. Da das GRE-Paket zusätzlich noch in ein IP-Paket eingepackt wird,
  • Diese im GRE-Tunnel übertragene Pakete mindestens 24 Byte werden größer.
  • Dies muss bei der Festlegung der maximalen Paketgröße (MTU) berücksichtigt werden.

Ein GRE-Header hat den folgenden Aufbau:

Bits 0–3 4–12 13–15 16–31
C K S Reserved0 Version Protocol Type
Checksum (optional) Reserved1 (optional)
Key (optional)
Sequence Number (optional)
C
Checksum bit; wird auf 1 gesetzt, wenn eine Checksum enthalten ist.
K
Key bit; wird auf 1 gesetzt, wenn ein Key vorhanden ist.
S
Sequence number bit; wird auf 1 gesetzt, wenn eine Sequenznummer vorhanden ist.
Reserved0
Reservierte Bits; werden auf 0 gesetzt.
Version
GRE Versionsnummer; wird auf 0 gesetzt.
Protocol Type
Enthält den EtherType der übertragenen Nutzlast. (Für IPv4 beträgt der Wert hex 0800.)
Checksum
Vorhanden, falls das C-Bit gesetzt ist; enthält die Prüfsumme für den GRE Header und die Nutzlast.
Reserved1
Vorhanden, falls das C-Bit gesetzt ist; wird auf 0 gesetzt.
Key
Vorhanden, falls das K-Bit gesetzt ist; enthält einen applikationsabhängigen Schlüsselwert.
Sequence Number
Vorhanden, falls das S-Bit gesetzt ist; enthält die Sequenznummer des GRE-Paketes.


Adressierung

  • GRE-Tunnel haben eigene Tunnel-Adressen, die aber nur innerhalb der beteiligten Router genutzt werden.
  • Diese Adressen entsprechen den Anforderungen des einzukapselnden Protokolls und werden am Tunnelinterface konfiguriert.
  • Um Pakete durch den Tunnel hindurch zu transportieren, benötigt der Tunnel zusätzlich äußere Adressen, die im Transportnetz, das die Tunnelendpunkte verbindet, geroutet werden
  • Diese Adressen entsprechen den Anforderungen des Internetprotokolls.

Übertragung

  • Ein zu übertragendes Paket wird am Quellrouter zuerst mit einem GRE-Header versehen.
  • Dann wird das resultierende Paket als Nutzlast in einem neuen Unicast-IP-Paket eingepackt, dessen Quelladresse die lokale äußere Tunneladresse ist.
  • Als Zieladresse wird die äußere Tunneladresse des Zielsystems (in der Regel ein Router) verwendet.
  • Am Zielrouter wird nach dem Empfang des IP-Paketes der GRE-Header entfernt und das Paket ohne GRE-Informationen unter Verwendung der Routing-Tabelle weitergeleitet.

Schaubild

  • Wir haben hier die öffentlichen Ip Adressen 10.82.1.195 und 10.82.1.211
  • Diese sind von aussen erreichbar
  • Wir bilden nun einen Virtuellen GRE Tunnel mit den IPs 172.30.30.1 und 172.30.30.2
  • Diesen fahren wir hoch
  • Am Schluss werden die Routen zu den Lans jeweils gegenüber auf die GRE Tunnel IP gesetzt.

Konfiguration

Manuelles Beispiel auf 2 Linux Rechnern

garlic

  • ip tunnel add gretun mode gre remote 10.82.1.195 local 10.82.1.211 ttl 255
  • ip address add dev gretun 172.30.30.1 peer 172.30.30.2/32
  • ip link set gretun up
  • ip route add 192.168.55.0/24 via 172.30.30.2

hubsi

  • ip tunnel add gretun mode gre remote 10.82.1.211 local 10.82.1.195 ttl 255
  • ip address add dev gretun 172.30.30.2 peer 172.30.30.1/32
  • ip link set gretun up
  • ip route add 192.168.33.0/24 via 172.30.30.1

Links