Ghid CCNA
Adresele IPv6 explicate (format, prescurtare, tipuri)
Prima dată când vezi o adresă ca 2001:db8:acad:1::1 pare scrisă în cod secret. Vestea bună: IPv6 are reguli mai puține și mai logice decât pare. Odată ce înțelegi formatul și cele două reguli de prescurtare, restul e vocabular.
În ghidul ăsta afli cum arată o adresă IPv6, cum o scurtezi și cum o scrii la loc întreagă, ce tipuri de adrese există și cum le recunoști după primele cifre, cum se calculează o adresă EUI-64, ce înseamnă SLAAC și DHCPv6 și cum configurezi IPv6 pe un router Cisco. La final ai exerciții cu răspunsuri.
În cursurile CCNA v8 de la Networking Academy, adresarea IPv6 se predă în CCNA 1 · ITN (modulul 11, adresare IPv6, plus modulul 8 pentru Neighbor Discovery), iar configurarea automată a adreselor (SLAAC și DHCPv6) se aprofundează în CCNA 2 · IEN (modulul 9).
De ce avem nevoie de IPv6
IPv4 are 32 de biți, adică aproape 4,3 miliarde de adrese. Pare mult, dar s-au terminat: aproape toate registrele regionale au rămas de mult fără blocuri libere, iar rețelele au supraviețuit cu NAT și adrese private. IPv6 rezolvă problema din rădăcină: are 128 de biți, adică 2^128 adrese, un număr cu 39 de cifre (aproximativ 3,4 × 10^38).
Pe lângă spațiu, IPv6 aduce câteva simplificări:
- fără broadcast: ce făcea broadcast-ul face acum multicast-ul, mult mai țintit;
- configurare automată: un dispozitiv își poate forma singur adresa (SLAAC);
- fără ARP: rolul lui îl preia Neighbor Discovery (NDP), care folosește mesaje ICMPv6;
- antet mai simplu, cu lungime fixă de 40 de octeți.
Cum arată o adresă IPv6
Cei 128 de biți se scriu în hexazecimal, pentru că în binar ar fi imposibil de citit. O cifră hexazecimală (0–9, a–f) reprezintă exact 4 biți, așa că 128 de biți înseamnă 32 de cifre hex. Ele se grupează câte 4, în 8 grupuri separate prin două puncte. Un grup are 16 biți și se numește hextet.
2001:0db8:0000:0000:0000:0c1a:00f0:0005
| | | | | | | |
1 2 3 4 5 6 7 8 ← 8 hextet-uri × 16 biți = 128 de biți
Literele pot fi mari sau mici, dar forma recomandată (RFC 5952) e cu litere mici. Dacă hexazecimalul îți e încă străin, reține doar atât: a=10, b=11, c=12, d=13, e=14, f=15, iar f înseamnă patru biți de 1 (1111).
Regulile de prescurtare
Adresa de mai sus e corectă, dar lungă. Există două reguli care o scurtează, și doar două.
Regula 1: omiți zerourile din față în fiecare hextet
În fiecare grup poți șterge zerourile din stânga. Un grup format numai din zerouri devine un singur 0.
0db8 → db8 0042 → 42 0000 → 0 ff00 → ff00 (rămâne)
Atenție la capcana clasică: zerourile din dreapta nu se șterg niciodată. db80 nu e același lucru cu db8. Dacă ai scrie 2001:db8:: în loc de 2001:db80::, ai schimba adresa.
Regula 2: înlocuiești o singură secvență de grupuri zero cu ::
O secvență continuă de unul sau mai multe grupuri formate doar din zerouri poate fi înlocuită cu ::. Regula importantă: :: apare o singură dată într-o adresă. Când citește adresa, dispozitivul numără grupurile vizibile și completează cu zerouri până la 8. Dacă ar fi două ::, n-ar ști cum să împartă zerourile între ele.
Pentru forma canonică (cea pe care o afișează și echipamentele moderne), RFC 5952 mai adaugă trei recomandări:
- dacă ai mai multe secvențe de zerouri, comprimi cea mai lungă;
- dacă sunt egale ca lungime, comprimi prima (din stânga);
- un singur grup de zerouri rămâne
0, nu se înlocuiește cu::.
Exemple rezolvate
Exemplul 1. 2001:0db8:0000:0000:0000:0c1a:00f0:0005
- Zerourile din față:
2001:db8:0:0:0:c1a:f0:5 - Cele trei grupuri zero consecutive devin
::→2001:db8::c1a:f0:5
Exemplul 2. 2001:0db8:0000:0001:0000:0000:0000:0001
- Zerourile din față:
2001:db8:0:1:0:0:0:1 - Ai două secvențe de zerouri: una de un grup (al 3-lea) și una de trei grupuri (5–7). O comprimi pe cea mai lungă →
2001:db8:0:1::1
Exemplul 3 (egalitate). 2001:0db8:0000:0000:abcd:0000:0000:1234
Două secvențe de câte două grupuri. Le-ai putea comprima pe oricare, iar ambele forme sunt valide, dar forma canonică o alege pe prima: 2001:db8::abcd:0:0:1234.
Exemplul 4. ff02:0000:0000:0000:0000:0000:0000:0001 → ff02::1, iar adresa formată numai din zerouri și un 1 la final devine ::1. Adresa formată numai din zerouri devine ::.
| Forma completă | Forma prescurtată |
|---|---|
| 2001:0db8:0000:0000:0000:0c1a:00f0:0005 | 2001:db8::c1a:f0:5 |
| fe80:0000:0000:0000:0a1b:22ff:fe3c:0d07 | fe80::a1b:22ff:fe3c:d07 |
| 2001:0db8:0000:0001:0001:0001:0001:0001 | 2001:db8:0:1:1:1:1:1 |
| 2001:0db8:acad:0001:0000:0000:0000:0000 | 2001:db8:acad:1:: |
| 0000:0000:0000:0000:0000:0000:0000:0001 | ::1 |
Cum scrii adresa la loc, întreagă
Procesul invers e o numărătoare. Ia 2001:db8:a::12:
- Numeri grupurile vizibile:
2001,db8,a,12→ 4 grupuri. - Lipsesc 8 − 4 = 4 grupuri, care stau în locul lui
::. - Completezi fiecare grup la 4 cifre, cu zerouri în față.
2001:db8:a::12
2001:0db8:000a:0000:0000:0000:0000:0012
Adrese invalide (și de ce)
| Adresa | De ce e greșită |
|---|---|
| 2001:db8::1::5 | :: apare de două ori |
| 2001:db8:0:0:0:0:0:0:1 | 9 grupuri; o adresă are exact 8 |
| 2001:db8:12345::1 | un grup are cel mult 4 cifre hex |
| 2001:db8:g::1 | g nu e cifră hexazecimală |
| 2001:db8:acad:1:0:0:0 | doar 7 grupuri și niciun :: care să completeze |
Prefixul: partea de rețea și partea de interfață
Ca la IPv4, o adresă IPv6 are o parte de rețea și o parte de host, doar că în IPv6 nu se mai folosește masca zecimală, ci doar lungimea prefixului: 2001:db8:acad:1::1/64.
Pentru o subrețea obișnuită (un LAN), prefixul standard e /64:
2001:0db8:acad:0001 : 0000:0000:0000:0001
|---- prefix /64 ---| |- interface ID (64 de biți) -|
- Prefixul de rutare global îl primește organizația de la furnizor (de exemplu un /48).
- ID-ul de subrețea sunt biții dintre prefixul primit și /64. De la /48 la /64 rămân 16 biți, adică 65.536 de subrețele /64. De la un /56 rămân 8 biți, adică 256 de subrețele.
- ID-ul de interfață (Interface ID) sunt ultimii 64 de biți, echivalentul părții de host.
Subnetting-ul în IPv6 e mult mai relaxat decât în IPv4: de obicei nu mai calculezi câte host-uri încap (un /64 are 2^64 adrese), ci doar numeri subrețelele în hextet-ul al patrulea: 2001:db8:acad:1::/64, 2001:db8:acad:2::/64 și așa mai departe, până la 2001:db8:acad:ffff::/64. Pentru IPv4, unde fiecare bit contează, ai ghidul de subnetting pas cu pas.
Nu uita: în IPv6 nu mai scazi 2. Nu există adresă de broadcast, iar adresa formată doar din zerouri în partea de interfață (de exemplu 2001:db8:acad:1::) este anycast-ul rezervat pentru routerele din subrețea (Subnet-Router anycast), deci nu o dai unui host.
Tipurile de adrese IPv6
IPv6 are trei mari categorii: unicast (un singur destinatar), multicast (un grup) și anycast (cel mai apropiat dintre mai mulți care au aceeași adresă). Broadcast nu există.
| Tip | Prefix | Cum o recunoști | La ce folosește |
|---|---|---|---|
| Global unicast (GUA) | 2000::/3 | începe cu 2 sau 3 | adresă publică, rutabilă pe Internet |
| Link-local (LLA) | fe80::/10 | începe cu fe80 până la febf (în practică fe80) | comunicare doar pe legătura locală |
| Unique local (ULA) | fc00::/7 | începe cu fc sau fd (în practică fd) | rețele interne, nerutate pe Internet |
| Multicast | ff00::/8 | începe cu ff | trimitere către un grup |
| Loopback | ::1/128 | exact ::1 |
testarea propriei stive IP |
| Nespecificată | ::/128 | exact :: |
„încă nu am adresă” (sursa unor mesaje la pornire) |
Global unicast (GUA)
Adresele publice ale IPv6, echivalentul adreselor IPv4 publice. Tot ce începe cu cifra hex 2 sau 3 e GUA. Prefixul 2001:db8::/32 e rezervat pentru documentație și exemple, de aceea îl vezi în toate manualele (și în ghidul ăsta): nu va apărea niciodată pe Internet.
Link-local (LLA)
Orice interfață pe care e activ IPv6 își face automat o adresă link-local, chiar dacă nu are GUA. Ea e valabilă doar pe segmentul local: routerele nu trimit mai departe packet-uri (pachete) cu sursa sau destinația link-local. LLA-urile sunt foarte folosite:
- vecinii OSPFv3 vorbesc între ei prin adresele link-local;
- routerul își anunță prezența în rețea de pe adresa sa link-local, iar host-urile o folosesc ca default gateway;
- Neighbor Discovery (echivalentul ARP) le folosește constant.
Pentru că aceeași adresă link-local poate exista pe mai multe interfețe ale unui router, când dai ping către o LLA, routerul îți cere și interfața de ieșire.
Unique local (ULA)
Seamănă cu adresele private din IPv4 (10.0.0.0/8 și celelalte): sunt pentru uz intern și nu se rutează pe Internet. Blocul e fc00::/7, dar în practică se folosește doar jumătatea fd00::/8, cu un identificator generat aleatoriu, ca să nu se suprapună rețelele a două firme care fuzionează.
Multicast
Încep cu ff. Câteva pe care trebuie să le recunoști instant:
| Adresă | Cine o ascultă |
|---|---|
| ff02::1 | toate nodurile de pe legătură (cel mai aproape de un broadcast) |
| ff02::2 | toate routerele de pe legătură |
| ff02::5 și ff02::6 | routerele OSPFv3 (toate / DR și BDR) |
| ff02::1:ffXX:XXXX | solicited-node: se formează din ultimii 24 de biți ai unei adrese unicast |
Adresa solicited-node e motivul pentru care IPv6 nu are nevoie de broadcast. Când un dispozitiv vrea să afle MAC-ul lui 2001:db8:acad:1::1, nu întreabă toată rețeaua, ci trimite întrebarea la ff02::1:ff00:1, pe care o ascultă doar dispozitivele ale căror adrese se termină la fel.
EUI-64: adresa construită din MAC
Un dispozitiv are nevoie de ultimii 64 de biți (ID-ul de interfață). O metodă clasică de a-i obține singur este EUI-64, care pornește de la adresa MAC de 48 de biți. Lipsesc 16 biți, iar rețeta e:
- Împarți MAC-ul în două jumătăți de câte 24 de biți.
- Pui
FFFEla mijloc (cei 16 biți care lipsesc). - Inversezi al șaptelea bit din primul octet (bitul „universal/local”). Dacă e 0 devine 1, dacă e 1 devine 0. În practică, în primul octet adaugi sau scazi 2.
Exemplul 1: MAC 00:1A:2B:3C:4D:5E
1. Împarți: 001A2B | 3C4D5E
2. Inserezi FFFE: 001A2B FFFE 3C4D5E
3. Primul octet: 00 = 00000000
Bitul 7 inversat: 00000010 = 02
Rezultat: 021A:2BFF:FE3C:4D5E
Cu prefixul 2001:db8:acad:1::/64, adresa completă este 2001:db8:acad:1:21a:2bff:fe3c:4d5e, iar adresa link-local formată la fel este fe80::21a:2bff:fe3c:4d5e. (Zeroul din față al lui 021a dispare la prescurtare.)
Exemplul 2: MAC 7A:3B:10:C4:22:9F
1. Împarți: 7A3B10 | C4229F
2. Inserezi FFFE: 7A3B10 FFFE C4229F
3. Primul octet: 7A = 01111010
Bitul 7 inversat: 01111000 = 78
Rezultat: 783B:10FF:FEC4:229F
Aici bitul era 1 și a devenit 0, deci primul octet a scăzut cu 2. Adresa completă cu același prefix: 2001:db8:acad:1:783b:10ff:fec4:229f.
Semnul după care recunoști o adresă EUI-64: ff:fe la mijlocul ID-ului de interfață (xxff:fexx). Routerele Cisco își formează implicit adresele link-local cu EUI-64. Sistemele de operare moderne (Windows, Android, iOS, macOS și multe distribuții Linux) preferă însă un ID de interfață generat aleatoriu (stabil într-o rețea, plus adrese temporare care se schimbă periodic), ca să nu poată fi urmărit un dispozitiv după MAC-ul lui de la o rețea la alta.
Cum își primește un dispozitiv adresa: SLAAC și DHCPv6
În IPv6, routerul trimite periodic (și la cerere) un mesaj Router Advertisement (RA), de tip ICMPv6. Un dispozitiv care tocmai a pornit poate grăbi lucrurile trimițând un Router Solicitation (RS) către toate routerele (ff02::2). RA-ul conține prefixul rețelei, lungimea lui, adresa link-local a routerului (care devine gateway-ul implicit) și câteva steaguri care spun host-ului cum să-și obțină restul. Sunt trei variante:
| Metodă | Adresa vine de la | DNS și alte opțiuni vin de la | Steaguri în RA |
|---|---|---|---|
| SLAAC | host (prefixul din RA + ID de interfață propriu) | RA (opțiunea DNS, dacă e trimisă) | A = 1, O = 0, M = 0 |
| SLAAC + DHCPv6 stateless | host, prin SLAAC | server DHCPv6 | A = 1, O = 1, M = 0 |
| DHCPv6 stateful | server DHCPv6 | server DHCPv6 | M = 1 (de obicei și A = 0) |
Ce trebuie să reții:
- SLAAC (Stateless Address Autoconfiguration): nimeni nu ține evidența adreselor. Host-ul ia prefixul și își adaugă singur ID-ul de interfață (EUI-64 sau aleatoriu).
- Stateless înseamnă că serverul DHCPv6 nu ține minte cine ce adresă are; dă doar informații suplimentare.
- Stateful înseamnă că serverul DHCPv6 alocă adrese și ține evidența lor, ca DHCPv4.
- DHCPv6 nu dă gateway-ul implicit. Gateway-ul vine mereu din RA. E o întrebare preferată la examen.
- Înainte să folosească o adresă nouă, host-ul verifică dacă nu o mai are altcineva: DAD (Duplicate Address Detection), un Neighbor Solicitation trimis către adresa solicited-node a propriei adrese.
Pe un router Cisco, steagurile se schimbă pe interfață: ipv6 nd other-config-flag setează O = 1 (stateless), ipv6 nd managed-config-flag setează M = 1 (stateful), iar ipv6 nd prefix default no-autoconfig oprește SLAAC (A = 0).
IPv6 pe un router Cisco
Implicit, un router Cisco nu rutează IPv6 și nu trimite RA-uri. Le pornești cu o singură comandă globală, apoi adresezi interfețele:
R1(config)# ipv6 unicast-routing
R1(config)# interface GigabitEthernet0/0/0
R1(config-if)# ipv6 address 2001:db8:acad:1::1/64
R1(config-if)# ipv6 address fe80::1 link-local
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# interface GigabitEthernet0/0/1
R1(config-if)# ipv6 address 2001:db8:acad:2::/64 eui-64
R1(config-if)# no shutdown
ipv6 unicast-routingface routerul să ruteze IPv6 și să trimită Router Advertisements; fără ea, host-urile nu primesc prefixul prin SLAAC.ipv6 address fe80::1 link-localînlocuiește adresa link-local generată cu EUI-64 cu una scurtă, ușor de recunoscut. Pe fiecare legătură e suficient să fie unică.eui-64la final îi spune routerului să completeze singur ID-ul de interfață din MAC.ipv6 enableactivează IPv6 și creează doar adresa link-local, fără GUA.
Verificarea:
| Comandă | Ce îți arată |
|---|---|
show ipv6 interface brief |
interfețele, starea lor, adresele link-local și globale |
show ipv6 interface g0/0/0 |
detaliile interfeței, inclusiv grupurile multicast la care s-a înscris |
show ipv6 route |
tabela de rutare IPv6 (C = rețea conectată, L = adresa locală /128) |
show ipv6 neighbors |
vecinii aflați prin Neighbor Discovery (echivalentul tabelei ARP) |
ping 2001:db8:acad:2::10 |
testul de conectivitate, la fel ca la IPv4 |
Comenzile de bază pentru configurarea unui router (hostname, parole, SSH, salvarea configurației) le găsești în fișa cu comenzile Cisco IOS.
Verifică-ți exercițiile: pe site găsești și un tool IPv6 care prescurtează și extinde adrese și calculează EUI-64 pas cu pas. Fă întâi exercițiile pe hârtie, apoi verifică.
Greșeli frecvente
- Folosești
::de două ori. Adresa devine ambiguă, deci invalidă. - Ștergi zerourile din dreapta unui grup.
db80nu poate devenidb8. - Uiți să numeri grupurile la extindere. Numără mereu grupurile vizibile și completează exact până la 8.
- Inversezi alt bit la EUI-64. E al șaptelea bit din stânga al primului octet (valoarea 2), nu primul și nu ultimul.
- Crezi că DHCPv6 dă gateway-ul. Nu; gateway-ul e adresa link-local a routerului, aflată din RA.
- Cauți broadcast-ul. În IPv6 nu există; „toate nodurile” înseamnă multicast
ff02::1. - Uiți
ipv6 unicast-routing. Interfețele au adrese, dar routerul nu rutează IPv6 și host-urile nu primesc prefixul prin SLAAC.
Exerciții
- Prescurtează:
2001:0db8:0000:00a0:0000:0000:0000:0bad - Prescurtează la forma canonică:
fd12:3400:0000:0000:0001:0000:0000:0000 - Scrie întreagă:
2001:db8:acad::f:1 - Care adrese sunt valide? a)
2001:db8::5::1b)fe80::a:b:c:dc)2001:db8:0:1:1:1:1:1 - Ce tip are fiecare adresă? a)
fe80::1b)fd00:ab::1c)ff02::2d)2001:db8:1::5e)::1 - Calculează adresa EUI-64 pentru MAC-ul
D2:1C:44:9A:7B:01și prefixul2001:db8:cafe:5::/64. - Câte subrețele /64 obții dintr-un /48? Dar dintr-un /56?
Răspunsuri
1. Zerourile din față: 2001:db8:0:a0:0:0:0:bad. Secvența cea mai lungă de zerouri e cea de trei grupuri de la final → 2001:db8:0:a0::bad. (Atenție: 00a0 devine a0, nu a.)
2. Fără zerourile din față: fd12:3400:0:0:1:0:0:0. Ai o secvență de două grupuri și una de trei; o comprimi pe cea mai lungă → fd12:3400:0:0:1::. (3400 rămâne așa: zerourile din dreapta nu se șterg.)
3. Grupuri vizibile: 2001, db8, acad, f, 1 = 5. Lipsesc 3 → 2001:0db8:acad:0000:0000:0000:000f:0001.
4. a) invalidă, :: apare de două ori. b) validă. c) validă, toate cele 8 grupuri sunt scrise, iar singurul grup zero rămâne 0.
5. a) link-local. b) unique local (ULA). c) multicast, toate routerele de pe legătură. d) global unicast (din blocul de documentație). e) loopback.
6. D21C44 | 9A7B01 → D21C44 FFFE 9A7B01. Primul octet: D2 = 11010010; bitul 7 e 1 și devine 0 → 11010000 = D0. ID de interfață: D01C:44FF:FE9A:7B01. Adresa: 2001:db8:cafe:5:d01c:44ff:fe9a:7b01.
7. De la /48 la /64 sunt 16 biți → 2^16 = 65.536 de subrețele. De la /56 la /64 sunt 8 biți → 2^8 = 256.
Cum înveți IPv6 fără să-l uiți
- Prescurtează și extinde câteva adrese pe zi până devine reflex. La examen nu ai timp să te gândești la reguli.
- Învață tabelul cu tipuri ca pe niște prefixe de telefon: 2 sau 3 = global, fe80 = link-local, fd = ULA, ff = multicast.
- Fă o dată EUI-64 complet pe hârtie, în binar. După aceea vei vedea „+2 / −2 la primul octet” fără să mai scrii biții.
- Configurează dual-stack într-un laborator: IPv4 și IPv6 pe aceleași interfețe, apoi verifică cu
show ipv6 interface briefșiping. - Leagă IPv6 de modelele pe straturi: IPv6 e la nivelul 3, ICMPv6 la fel. Dacă straturile îți sunt neclare, vezi modelul OSI vs TCP/IP.
Exersează IPv6 în aplicația Routerel
Routerel are un antrenor de subnetting, conversii și IPv6 cu exerciții generate la nesfârșit, plus peste 1.900 de întrebări cu explicații pentru CCNA 1 · ITN, CCNA 2 · IEN și CCNA 3 · CEN. Greșelile revin singure prin repetiție spațiată până le stăpânești, iar simularea de examen cu timp îți arată unde stai. Abonații noi au 7 zile gratuite, cu acces la tot.
Întrebări frecvente
Câți biți are o adresă IPv6?
128 de biți, scriși ca 8 grupuri de câte 4 cifre hexazecimale, separate prin două puncte. Fiecare grup (hextet) are 16 biți.
Care sunt regulile de prescurtare a unei adrese IPv6?
Două: în fiecare grup omiți zerourile din față (0db8 → db8), iar o singură secvență de grupuri formate doar din zerouri o înlocuiești cu ::. Simbolul :: apare o singură dată într-o adresă.
Ce este o adresă link-local în IPv6?
O adresă din fe80::/10 pe care orice interfață cu IPv6 activ o are automat. E valabilă doar pe legătura locală, routerele nu o trimit mai departe și e folosită, printre altele, ca default gateway anunțat de router.
IPv6 are adresă de broadcast?
Nu. În locul broadcast-ului, IPv6 folosește multicast, de exemplu ff02::1 pentru toate nodurile de pe legătură și ff02::2 pentru toate routerele.
Ce este EUI-64?
O metodă prin care un dispozitiv își construiește singur ID-ul de interfață (ultimii 64 de biți) din adresa MAC: împarte MAC-ul în două, pune FFFE la mijloc și inversează al șaptelea bit din primul octet.
Care e diferența dintre SLAAC și DHCPv6?
La SLAAC dispozitivul își formează singur adresa din prefixul anunțat de router. La DHCPv6 stateless adresa vine tot prin SLAAC, dar alte informații (de exemplu DNS) vin de la un server DHCPv6. La DHCPv6 stateful chiar adresa e dată de server. Gateway-ul implicit vine mereu din anunțul routerului (RA). Pentru contextul examenului, vezi și ghidul despre CCNA.
Routerel este o aplicație independentă și nu este afiliată, sponsorizată sau aprobată de Cisco Systems, Inc. Cisco, CCNA, Cisco IOS și Networking Academy sunt mărci înregistrate ale Cisco Systems, Inc.