Tunele GRE [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Cisco Networking Academy www.infoacademy.net

5. GRE (Generic Routing Encapsulation) Este un protocol folosit pentru crearea de conexiuni virtuale (VPN-uri), point-to-point, intre, de regula, 2 retele private. Protocolul a fost dezvoltat de Cisco, apoi a fost oferit comunitatii internationale, fiind standardizat in o serie de RFC-uri. Initial, acest protocol a fost proiectat stateless – nu stim la un capat al tunelului virtual de existenta/starea celuilalt capat al tunelului. Extensii ulterioare adaugate permit acest lucru (prin mesaje de keepalive). El permite incapsularea a o mare varietate de protocoale de L3 (ex. IPv4, IPv6, AppleTalk, IPX s.a.) in interiorul altor protocoale de L3 (ex. IPv4, IPv6 s.a). Pachetele vor contine prin urmare 2 headere de retea, headerul “din interior” fiind cel al pachetului original. Un prim avantaj al protocolului GRE fata de alte protocoale de tunelare este posibilitatea incapsularii nu doar a traficului unicast IPv4 ci si a celui multicast, facilitate utila in cazul protocoalelor de routare ce trimit astfel de update-uri). Un al 2-lea avantaj este facilitatea de a incapsula nu doar IPv4 ci si alte protocoale de L3 Non-IP (IPSec nu permite acest lucru). Un al 3-lea avantaj este caracterul sau ubicuu – gasim acest protocol in implementarile nu doar a celor de la Cisco, ci si pe Linux/Unix (comanda ip tunnel …), Windows (tunelele PPTP sunt construite peste incapsularea GRE), sa. Un al 4-lea avantaj este dimensiunea redusa a headerului GRE, overhead care insa nu este fix – in functie de facilitatile pe care ni le dorim de la tunel (secventializare, autentificare, routare dupa sursa) overhead-ul acesta se poate mari (se introduc/populeaza campuri noi in header) Dezavantajul major al prtocolului GRE este ca el nu ofera decat facilitati minimale de autentificarea a celuilalt capat al tunelului (“cu cine vorbesc”), si nu ofera facilitati de criptare a traficului tunelat – acesta se va transmite asa cum l-a generat sursa. Headerul GRE conform cu prima implementare (redata in RFC 1701) este: 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 ┌─┬─┬─┬─┬─┬─────┬─────────┬─────┬───────────────────────────────┐ │C│R│K│S│s│Recur│ Flags │ Ver │ Protocol Type │ ├─┴─┴─┴─┴─┴─────┴─────────┴─────┼───────────────────────────────┤ │ Checksum (optional) │ Offset (optional) │ ├───────────────────────────────┴───────────────────────────────┤ │ Key (optional) │ ├───────────────────────────────────────────────────────────────┤ │ Sequence Number (optional) │ ├───────────────────────────────────────────────────────────────┤ │ Routing (optional) │ └───────────────────────────────────────────────────────────────┘

1

Cisco Networking Academy www.infoacademy.net

Campurile de interes sunt: - Checksum (flag, bitul 0): daca este 1 campul checksum este prezent, altfel acest camp lipseste - key (flag, bitul 2): daca este 1 campul key este prezent in header, altfel acest camp lipseste - Sequence number (flag, bitul 3): daca este 1 atunci campul sequence number este prezent, altfel acesta lipseste - Version (biti 13-15): identifica versiunea GRE si tb sa aiba valoarea 0 - Protocol type: tipul de protocol incapsulat peste GRE (cel din “interiorul” mesajului). Pentru IPv4 acesta are valoarea 0x0800, pt IPv6 are valoarea 0x86DD, samd. - Checksum: daca este prezent, ofera asigurarea integritatii atat a headerului GRE cat si payload-ul acestuia - Key: in principal, este folosita drept metoda (ineficienta) de securitate: fiecare pachet are aceiasi cheie stabilita manual la cele 2 capete ale tunelului (nescalabil). Daca se primeste un mesaj cu o cheie diferita el va fi aruncat. Cheia, ce nu se modifica in timp, se trimite in clar. O a 2-a utilitate, rar folosita, este de a identifica diferitele flow-uri dintr-un acelasi tunel GRE multipoint. - Sequence number: permite identificarea pachetelor ce ajung in alta ordine decat au fost introduse in tunel, caz in care vor fi aruncate – este util in cazul protocoalelor „pasager‟ ce nu permit reordonarea mesajelor (ex: cele bazate pe LLC2) Headerul GRE conform cu implementarea redata in RFC 2784 este: 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 ┌─┬───────────────────────┬─────┬───────────────────────────────┐ │C│ Reserved0 │ Ver │ Protocol Type │ ├─┴───────────────────────┴─────┼───────────────────────────────┤ │ Checksum (optional) │ Reserved1 (optional) │ └───────────────────────────────┴───────────────────────────────┘

In acest RFC ulterior s-a renuntat la headere-le de routare, seq number, key-ing, cat si la bitii de flag corespunzatori – ei sunt inlocuiti cu 0, ceea ce asigura interoperabilitatea cu implementarea 1701 (bitii cu valoarea 0 reprezentau absenta acestor campuri). Daca mesajul este trimis de 2784, acei biti de 0 vor fi interpretati corespunzator de 1701 (certifica absenta campurilor optionale). Daca 1701 trimite mesaje cu acei biti pe 0 atunci 2784 va accepta acel mesaj. In cazul in care 1701 trimite un mesaj cu cel putin 1 bit din bitii respectivi pe 1, 2784 va arunca acel pachet.

2

Cisco Networking Academy www.infoacademy.net

Headerul GRE conform cu implementarea redata in RFC 2890 este: 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 ┌─┬─┬─┬─┬─────────────────┬─────┬───────────────────────────────┐ │C│ │K│S│ Reserved0 │ Ver │ Protocol Type │ ├─┴─┴─┴─┴─────────────────┴─────┼───────────────────────────────┤ │ Checksum (optional) │ Reserved1 (optional) │ ├───────────────────────────────┴───────────────────────────────┤ │ Key (optional) │ ├───────────────────────────────────────────────────────────────┤ │ Sequence Number (optional) │ └───────────────────────────────────────────────────────────────┘

Dupa cum se observa s-a revenit in acest RFC la bitii si headerul de key-ing si de sequence-ing. Versiunile de cod IOS mai noi decat 12.2T implementeaza RFC 2784 si, optional, RFC 2890. GRE este adesea folosit impreuna cu un alt protocol pentru a oferii securitatea traficului in tranzit - in acest rol se foloseste adesea IPSec, sau, uneori, criptare la nivelul L7 OSI.

Configurare pe routerele Cisco in CLI:

R1(config)# int serial 0/0 R1(config-if)# ip address 200.0.0.1 255.255.255.248 R1(config-if)# no shutdown R1(config-if)# exit R1(config)# int tunnel 0  semnificatie locala 3

Cisco Networking Academy www.infoacademy.net

Obligatoriu: R1(config-if)# ip add 172.20.255.253 255.255.255.252  pornim IPv4 pe interfata R1(config-if)# tunnel-source serial 0/0  putem preciza o adresa IPv4, IPv6.. R1(config)-if# tunnel-destination 154.1.2.3  adresa IPv4 publica a celuilalt capat Optional: R1(config-if)# tunnel checksum  cerem verificarea integritatii R1(config-if)# tunnel key 123454321  identica la capatul opus, 32 biti R1(config-if)# tunnel sequence-datagrams  se arunca pkt. daca vin in alta ordine R1(config-if)# tunnel mode gre ip  Default. Se va incapsula IPv4 R1(config-if)# keepalive 2 2  detectam pierderea comunicarii cu celalalt capat al tunelului. Se trimit la 2 sec, holddown 4 sec R1(config-if)# ip ospf 1 area 0 R1(config-if)# exit

 pornim OSPF catre vecin, prin tunel

R1(config)# int fa0/0 R1(config-if)# ip add 172.20.0.254 255.255.255.0 R1(config-if)# no shutdown R1(config-if)# ip ospf 1 area 1 R1(config-if)# exit R1(config)# ip route 0.0.0.0 0.0.0.0 s0/0  ruta default prin Service Provider ----------------------------------------R2(config)# int serial 0/1 R2(config-if)# ip add 154.1.2.3 255.255.255.248 R2(config-if)# no shutdown R2(config-if)# exit R2(config)# int tunnel 3 R2(config-if)# ip add 172.20.255.254 255.255.255.252 R2(config-if)# tunnel-source serial 0/1 R2(config)-if# tunnel-destination 200.0.0.1 R2(config-if)# tunnel checksum R2(config-if)# tunnel key 123454321 R2(config-if)# tunnel sequence-datagrams R2(config-if)# keepalive 2 2 R2(config-if)# ip ospf 1 area 0 R2(config-if)# exit R2(config)# int fa0/1 R2(config-if)# ip add 172.20.1.254 255.255.255.0 R2(config-if)# no shutdown R2(config-if)# ip ospf 1 area 2 4

Cisco Networking Academy www.infoacademy.net

R2(config)# ip route 0.0.0.0 0.0.0.0 s0/1 - Vizualizare: Router# show ip interface brief Router# show interface tunnel 0 Router# show running-config interface tunnel0 Router# show ip route - Depanare: Router# debug tunnel Router# debug interface tunnel

5