Gre: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 10: Zeile 10:
 
*Tunnel für die Übertragung des IPX- oder des AppleTalk-Protokolls
 
*Tunnel für die Übertragung des IPX- oder des AppleTalk-Protokolls
 
== Header-Aufbau ==
 
== Header-Aufbau ==
Ein GRE-Header ist mindestens 4 Byte groß. Da das GRE-Paket zusätzlich noch in ein IP-Paket eingepackt wird, werden im GRE-Tunnel übertragene Pakete mindestens 24 Byte größer. Dies muss bei der Festlegung der maximalen Paketgröße [[Maximum Transmission Unit|Maximum Transmission Unit (MTU)]] berücksichtigt werden.
+
*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:
 
Ein GRE-Header hat den folgenden Aufbau:
Zeile 29: Zeile 31:
 
| colspan="16"| Protocol Type
 
| colspan="16"| Protocol Type
 
|-
 
|-
| colspan="16"| [[Checksum]] ''(optional)''
+
| colspan="16"| Checksum ''(optional)''
 
| colspan="16" | Reserved1 ''(optional)''
 
| colspan="16" | Reserved1 ''(optional)''
 
|-
 
|-
Zeile 37: Zeile 39:
 
|}
 
|}
  
; ''C'': [[Checksum]] bit; wird auf 1 gesetzt, wenn eine Checksum enthalten ist.
+
; ''C'': Checksum bit; wird auf 1 gesetzt, wenn eine Checksum enthalten ist.
  
 
; ''K'': Key bit; wird auf 1 gesetzt, wenn ein Key vorhanden ist.
 
; ''K'': Key bit; wird auf 1 gesetzt, wenn ein Key vorhanden ist.
Zeile 47: Zeile 49:
 
; ''Version'': GRE Versionsnummer; wird auf 0 gesetzt.
 
; ''Version'': GRE Versionsnummer; wird auf 0 gesetzt.
  
; ''Protocol Type'': Enthält den [[EtherType|ether protocol type]] der übertragenen Nutzlast. (Für [[IPv4]] beträgt der Wert hex 0800.)
+
; ''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.
 
; ''Checksum'': Vorhanden, falls das C-Bit gesetzt ist; enthält die Prüfsumme für den GRE Header und die Nutzlast.
Zeile 57: Zeile 59:
 
; ''Sequence Number'': Vorhanden, falls das S-Bit gesetzt ist; enthält die Sequenznummer des GRE-Paketes.
 
; ''Sequence Number'': Vorhanden, falls das S-Bit gesetzt ist; enthält die Sequenznummer des GRE-Paketes.
  
== Konfiguration ==
 
  
GRE-Tunnel werden in Cisco-Routern als (virtuelle) Interfaces konfiguriert. Im Beispiel die Minimalkonfiguration für einen GRE-Tunnel IPv4 in IPv4:
+
= 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.
interface Tunnel0                      (lokal eindeutige Nummer von 0 bis 2147483647)
+
*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
  ip address 192.168.0.1 255.255.255.0  (innere Tunneladresse)
+
*Diese Adressen entsprechen den Anforderungen des Internetprotokolls.
  tunnel source 10.0.0.1                (äußere lokale Tunneladresse)
 
  tunnel destination 10.0.0.2            (äußere Tunneladresse des Zielrouters)
 
end
 
  
== Adressierung ==
+
= Ü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
  
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.
+
=Links=
 
+
*https://de.wikipedia.org/w/index.php?title=Generic_Routing_Encapsulation&action=edit
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.
 

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