Gre: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Grundlegendes= *Das Generic Routing Encapsulation (GRE) ist ein Netzprotokoll, welches dazu dient, andere Protokolle einzukapseln *Man kann so diese in Form…“)
 
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 9: Zeile 9:
 
*Tunnel für Mobilitätsprotokolle wie Mobile IP oder Proxy Mobile IPv6
 
*Tunnel für Mobilitätsprotokolle wie Mobile IP oder Proxy Mobile IPv6
 
*Tunnel für die Übertragung des IPX- oder des AppleTalk-Protokolls
 
*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:
 +
 +
{| class="wikitable" style="text-align:center"
 +
|-
 +
! colspan="4" width="13%"| Bits 0–3
 +
! colspan="9" width="28%"| 4–12
 +
! colspan="3" width="9%"| 13–15
 +
! colspan="16" width="50%"| 16–31
 +
|-
 +
| colspan="1"| C
 +
| colspan="1" |
 +
| colspan="1"| K
 +
| colspan="1"| S
 +
| colspan="9"| Reserved0
 +
| colspan="3"| Version
 +
| colspan="16"| Protocol Type
 +
|-
 +
| colspan="16"| Checksum ''(optional)''
 +
| colspan="16" | Reserved1 ''(optional)''
 +
|-
 +
| colspan="32"| Key ''(optional)''
 +
|-
 +
| colspan="32"| 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.
 +
{{#drawio:gre-1}}
 +
=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=
 +
*https://de.wikipedia.org/w/index.php?title=Generic_Routing_Encapsulation&action=edit

Aktuelle Version vom 8. September 2022, 16:42 Uhr

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