Gre: Unterschied zwischen den Versionen
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
