12.07.2015 Views

Protokol IPv6 ND (Neighbor Discovery)

Protokol IPv6 ND (Neighbor Discovery)

Protokol IPv6 ND (Neighbor Discovery)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Protokol</strong> <strong>IPv6</strong> <strong>ND</strong> (<strong>Neighbor</strong> <strong>Discovery</strong>)a možnosti jeho sledování v Cisco IOS a v různých OS klienských zařízeníVypracovali:Jan Náhlý (nah012)Vašek Pazdur (paz058)


Neighbour <strong>Discovery</strong> je protokol nad <strong>IPv6</strong>, který umožňuje zjišťovat stav počítačů nastejném segmentu. Tento protokol má několik funkcí1. Nahrazuje protokoly ARP/RARP z IPv4 .2. Umožňuje automaticky zjistit adresu sítě a masku na daném segmentu .3. Umožňuje automaticky zjistit, jaké routery se na segmentu nacházejí a kjakým cílovým adresám směrují packety .4. Umožňuje zjistit, když nějaký počítač nedosažitelný.5. Umožňuje automaticky přepnout na používání jiné default gateway.<strong>Neighbor</strong> <strong>Discovery</strong> (dále jen <strong>ND</strong>) a ICMPv6 spolu velice úzce souvisí, jelikož <strong>ND</strong>využívá několik typů ICMP zpráv a to jsou: Router Advertisement, Router Solicitation,<strong>Neighbor</strong> Advertisement, <strong>Neighbor</strong> Solicitation a Redirect.Router Solicitation zprávy jsou nepovinné, zasílá je počítač, když chce najítlokální router. Když chce počítač zjistit, jaké routery se na segmentu nacházejí, pošleRouter Solicitation packet. Všechny routery na to odpoví packetem RouterAdvertisement. Routery zasílají s určitou periodou packety Router Advertisementautomaticky, aby si všechny počítače aktualizovali informace.Typ ICMPv6 zprávy 133Router Advertisement zprávy jsou zasílány pouze routery a obsahují informaceo routeru a také o síti, ve které se nachází.Z packetu počítač snadno získá informace o adrese a masce sítě, o linkové adreserouteru a od adresách/maskách, kam je tento router schopen směrovat.Používá se k autokonfiguraci.Typ ICMPv6 zprávy 134Redirect packet je ekvivalentní ICMP redirect z IPv4. Router může pomocíredirect packetu odesílateli říct, že by měl k danému cíli posílat packety jinou kratšícestou – informuje o lepším next-hop.Ke zjišťování sousedů se používá:<strong>Neighbor</strong> Solicitation zpráva umožňuje zařízením dotazovat se a kontrolovat,jestli daný soused existuje a jestli je dostupný a duplicitu adres.Pokud chce počítač zjistit linkovou adresu jiného počítače na témže segmentu, pošleNeighbour Solicitation packet. Funkčnost je ekvivalentní packetu ARP Request naIPv4. Jako odpověď dostane Neighbour Advertisement, který obsahuje danouadresu.Typ ICMPv6 zprávy 135<strong>Neighbor</strong> Advertisement odpověď na <strong>Neighbor</strong> Solicitation, obdobně jakofunkčnost packetu ARP Response na IPv4. Router může rovněž posílat nevyžádanéNA zprávy k informování o změně linkové adresyTyp ICMPv6 zprávy 136


Schéma zapojení projektuPříkazy ke konfiguraci ipv6 na routech RA, RB a na straně LINUX a WIN 7Konfigurace <strong>IPv6</strong> na routech RA, RBconfigure terminalRA (config)# ipv6 unicast-routingRA (config)# interface f0/0RA (config-if)# no ip addressRA (config-if)# ipv6 address 2001:1::1/64RA (config-if)# no shutdownRA (config-if)# exit//zapnutí ipv6 na routeru//nastavení interface fastEthernet//vypne IPv4 adresu na rozhraní//nastavení <strong>IPv6</strong> adresyKonfigurace <strong>IPv6</strong> na Koncové PC stanici (Linux, Win 7)Na koncové stanici stačí nastavit <strong>IPv6</strong> adresu na rozhraní.LINUXPříkaz pro nastavení <strong>IPv6</strong> adresy je následující:ifconfig eth0 inet6 add 2001:1::3/64WI<strong>ND</strong>ONS 7Nastavení přes grafické rozhraní. Adresa je 2001:1::4/64


Debugging ipv6 <strong>Neighbor</strong> <strong>Discovery</strong> (sledování v Cisco IOS)Je potřeba zapnout debug ipv6 icmp jak na routru RA, tak na routru RB, jelikož icmpzprávy jsou to, co se v ipv6 využívá místo protokolu ARP.RA#debug ipv6 icmpICMP Packet debugging is onRB#debug ipv6 icmpICMP Packet debugging is onNyní se podíváme na sousedy routeru RA následujícím příkazemRA#show ipv6 neigborsRA#Jelikož ještě nedošlo k nalezení sousedů (jak připojených počítačů, tak anisousedního routeru) nedojde tedy k vypsání žádného souseda (zatím nebyl vznesendotaz na MAC adresu k IP adrese).Router můžeme objevit několika způsoby - buď se ohlásí sám, nebo odpoví naRouter solicitation paket. Typicky je Router solicitation posílán zařízeními těsně pobootu, takže má okamžitě k dispozici síťovou konektivitu a nemusí čekat, až routerpošle zprávu sám od sebe.Router, který je korektně zkonfigurován, posílá periodicky Router advertisementzprávy do dané sítě.Pokud router obdrží <strong>Neighbor</strong> solicitation paket, pošle Router advertisement paket.Router advertisement paket posílá router pomocí muticastu pro všechny routery vrámci linky.Naši situaci tedy napravíme např. pingem.RA#ping ipv6 2001:1::5Router A nezná cílovou MAC adresu, pošle tedy ICMPv6 zprávu NSna solicitated-node multicast adresu, která je vypočítána jako funkce vyžádané cílovéadresy.Solicited-node multicast adresa se skládá z prefixu FF02:: 1: FF00: 0 / 104 aposlední 24-bitů této adresy <strong>IPv6</strong> (tedy té, pro kterou chceme solicitation-nodemulticast adresu vypočítat).Například pro <strong>IPv6</strong> adesu FE80::2AA:FF:FE28:9C5A je odpovídající solicited-noteadresa je FF02::1:FF28:9C5A. A pro náš případ to tedy bude FF02::1:FF00:5ICMPv6 zpráva obsahuje – zdrojovou adresu a solicitation-node multicast adresu.Dále v datové část ICMPv6 options zahrnuje i linkovou adresu routeru..RB slyší na tento dotaz, protože naslouchá komunikaci pro solicited-node multicastadresy ipv6 - a to pro všechny unicast adresy, které vlastní.


Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 2001:1::5, timeout is 2 seconds:!!!!!Při komunikaci mezi směrovačem a PC (popř. mezi PC) dochází k zasílání neighborsolicitation a neighbor advertisement.Když se A snaží získat linkovou adresu B, pošle ICMPv6 neighbor solitication paketse zdrojovou adresou obsahující <strong>IPv6</strong> adresu A a cílovou adresou obsahujícísolicited multicast adresu, příslušnou B. ICMP paket dále v datové části (ICMPv6options) zahrnuje linkovou adresu A.Host B odpoví ICMPv6 neighbor advertisement paketem, který v ICMPv6 optionsobsahuje linkovou adresu B.*May 25 09:52:20.331: ICMPv6: Sent N-Solicit, Src=2001:1::2,Dst=FF02::1:FF00:5*May 25 09:52:20.335: ICMPv6: Received N-Advert, Src=2001:1::5,Dst=2001:1::2Teprve až po té můžeme na RB sledovat průběh pingu a zachytit tyto packety.*May 25 09:52:20.335: ICMPv6: Sent echo request, Src=2001:1::2,Dst=2001:1::5*May 25 09:52:20.339: ICMPv6: Received echo reply, Src=2001:1::5,Dst=2001:1::2


Můžeme si to také ověřit tak, že se podíváme do „Joined group address“ sekce, kdemůžeme vidět multicast adresy, pro které tento router naslouchá.A to následujícím příkazem:RB#show ipv6 int f0/0FastEthernet0/0 is up, line protocol is up<strong>IPv6</strong> is enabled, link-local address is FE80::214:A8FF:FE99:48BCNo Virtual link-local address(es):Global unicast address(es):2001:1::1, subnet is 2001:1::/64Joined group address(es):FF02::1FF02::2FF02::1:FF00:1FF02::1:FF00:5FF02::1:FF99:48BCMTU is 1500 bytesICMP error messages limited to one every 100 millisecondsICMP redirects are enabledICMP unreachables are sent<strong>ND</strong> DAD is enabled, number of DAD attempts: 1<strong>ND</strong> reachable time is 30000 milliseconds (using 24073)<strong>ND</strong> advertised reachable time is 0 (unspecified)<strong>ND</strong> advertised retransmit interval is 0 (unspecified)<strong>ND</strong> router advertisements are sent every 200 seconds<strong>ND</strong> router advertisements live for 1800 seconds<strong>ND</strong> advertised default router preference is MediumHosts use stateless autoconfig for addresses.RB odpoví na zprávu, jelikož je adresa 2001:1::5 uvedená v cílové časti paketu.Odpoví icmpv6 zprávou typu 136 neighbor advertisement a přiloží MAC adresu dočásti paketu, která je určena pro tento účel. Poté teprve dochází k zasílání echorequest a echo reply.*May 25 09:52:20.331: ICMPv6: Sent N-Solicit, Src=2001:1::2,Dst=FF02::1:FF00:5*May 25 09:52:20.335: ICMPv6: Received N-Advert, Src=2001:1::5,Dst=2001:1::2Opět se můžeme nyní podívat, kdo je sousedem:RA#show ipv6 neighbors<strong>IPv6</strong> AddressAge Link-layer Addr StateInterface2001:1::5 4 0016.7669.0088 STALEFa0/0FE80::214:A8FF:FE99:48BC4 0016.7669.0088 STALEFa0/0


Tyto jednotlivé záznamy mají určitou životnost a v případě, že je již záznam nemusíbýt aktuální (reach), tak se mu zvýší stáří (age) a stává se tento záznam „vyčpělým“(stale). Age je stáří v minutách.Informace o MAC adresách odpovídajících jednotlivým IP adresám se ukládají docache paměti, kde jsou uloženy do vypršení své platnosti. Není tedy třeba hledatMAC adresu před odesláním každého datagramu – jednou získaná informace sevyužívá opakovaně. V případě nepoužívání této adresy dochází k jejímu stárnutí apřípadně dochází i k odstranění souseda z cache paměti.Odesláním paketu k sousedovi, který je Stale, ho překlasifikuje na delay. To jeoptimalizační část, kdy se dává prostor vyšší vrstvě, aby rozhodla o dostupnostisouseda (např. navázáné TCP spojení ho činí dostupným a není třeba posílatsondy).Pokud do krátkého časového limitu vyšší vrstva nepotvrdí dostupnost souseda,dostane se do stavu Probe, kdy jsou mu odesílány sondy (<strong>Neighbor</strong> UnreachabilityDetection) a další časový limit se čeká na jeho odpovědi. Pokud žádná nedorazí,stává se soused nedostupným, což se projeví odstraněním jeho záznamu z <strong>Neighbor</strong>Cache.Zde je zachycen (tučně znárodněn) výpis, kdy došlo k obnovení platnosti záznamudíky zaslání unicast NS.RB#show ipv6 neighbors<strong>IPv6</strong> AddressAge Link-layer Addr StateInterface2001:1::5 3 0016.7669.01c8 STALE Fa0/0FE80::216:76FF:FE69:1C83 0016.7669.01c8 STALE Fa0/0FE80::650C:19A4:CACF:870E4 0021.70d0.979d STALE Fa0/0RB#*May 25 10:09:47.623: ICMPv6: Received N-Solicit,Src=FE80::650C:19A4:CACF:870E, Dst=FF02::1:FFB4:ADE8*May 25 10:09:47.623: ICMPv6: Sent N-Advert, Src=FE80::21E:BEFF:FEB4:ADE8,Dst=FE80::650C:19A4:CACF:870*May 25 10:09:52.623: ICMPv6: Sent N-Solicit, Src=FE80::21E:BEFF:FEB4:ADE8,Dst=FE80::650C:19A4:CACF:87E*May 25 10:09:52.623: ICMPv6: Received N-Advert,Src=FE80::650C:19A4:CACF:870E, Dst=FE80::21E:BEFF:FEB 8RB#show ipv6 neighbors<strong>IPv6</strong> AddressAge Link-layer Addr StateInterface2001:1::5 3 0016.7669.01c8 STALE Fa0/0FE80::216:76FF:FE69:1C83 0016.7669.01c8 STALE Fa0/0FE80::650C:19A4:CACF:870E0 0021.70d0.979d REACH Fa0/0Vymazat tabulku sousedů můžeme příkazemRA#clear ipv6 neighborRA#clear ipv6 neighbor Ethernet 0/0


V případě že máme stále puštěný debug (RB#debug ipv6 icmp), můžeme sivšimnout, že chodí periodicky zprávy router-advertisement*Apr 23 06:36:04.215: ICMPv6: Sent R-Advert,Src=FE80::215:C6FF:FE84:220, Dst=FF02::1Jak již bylo řečeno výše, tato zpráva slouží k autokonfiguraci.Debugging ipv6 <strong>Neighbor</strong> <strong>Discovery</strong> (sledování na Linuxu)Logika zasílání zpráv je samosebou stejná. Rozdíl je pouze v možnostech sledování.Pro sledování provozu na Linuxovém hostu jsme použili tcpdump a filtrovali jsmeicmpv6 packety.root@cnap-desktop:/home/cnap# tcpdump icmp6komunikace host-hostSnažili jsme se o ping z PC A (2001:1::4) na PC B (2001:1::200)root@cnap-desktop:/home/cnap#ping6 2001:1:20012:05:20.186230 IP6 2001:1::4 > ff02::1:ff00:200: ICMP6, neighborsolicitation, who has 2001:1::200, length 3212:05:20.187206 IP6 2001:1::a08f:3532:13f9:af03 > ff02::1:ff00:4:ICMP6, neighbor solicitation, who has 2001:1::4, length 3212:05:20.187257 IP6 2001:1::4 > 2001:1::a08f:3532:13f9:af03: ICMP6,neighbor advertisement, tgt is 2001:1::4, length 3212:05:20.188247 IP6 2001:1::200 > 2001:1::4: ICMP6, neighboradvertisement, tgt is 2001:1::200, length 3212:05:20.188263 IP6 2001:1::4 > 2001:1::200: ICMP6, echo request,seq 1, length 6412:05:20.189259 IP6 2001:1::200 > 2001:1::4: ICMP6, echo reply, seq1, length 64Opět zde můžeme vidět nejprve dotaz neighbor solicitation na to kdo má ipv6 adresu2001:1::200, odpověď neighbor advertisement a potom teprve začínají chodit echoreqesty a echo reply.A opět zde také můžeme zachytávat periodické router-advertisement12:06:12.645501 IP6 fe80::214:a8ff:fe99:48bc > ip6-allnodes: ICMP6,router advertisement, length 64


Na výpis dostupných sousedů se pak můžeme podívat zadáním příkazuroot@cnap-desktop:/home/cnap# ip -6 neigh showmanuálně můžeme souseda vložit takto:ip -6 neigh add lladdr dev příklad:root@cnap-desktop:/home/cnap# ip -6 neigh add fec0::1 lladdr02:01:02:03:04:05 dev eth0manuálně vymazat takto:ip -6 neigh del lladdr dev příklad:root@cnap-desktop:/home/cnap# ip -6 neigh del fec0::1 lladdr02:01:02:03:04:05 dev eth0vymazat tabulku sousedů můžeme takto:root@cnap-desktop:/home/cnap# ip neigh flush


Debugging ipv6 <strong>Neighbor</strong> <strong>Discovery</strong> (sledování na WIN 7)Pro sledování packetů icmpv6 pro Windows 7 jsme použili Wireshark.V cmd jsme zadali příkaz ping na 2001:1::4C:\Users\nah012# ping 2001:1::4Opět je zde vidět zaslání nejprve icmpv6 zprávy neighbor solicitation z 2001:1::200na 2001:1::4 a odpovědi neighbor advertisement a potom teprve dochází k provedeníecho request a echo reply.Zároveň je zde i dobře zachycen další typ zprávy router unreachable. Tato zpráva jegenerována v případě dostatečně dlouhého zpoždění (neaktivity). Uzel vysílá cílenéNS na PC. Pokud je dosažitelný, přijde odpověď NA. V opačném případě dojdek vyjmutí z cache paměti.


Sousedy si potom můžeme vypsat v příkazovém řádku pomocí následujících příkazů:C:\Users\nah012# netshnetsh>interface ipv6 show neighborsviz. výpis v obrázku níže.Manuálně můžeme souseda přidat takto:netsh> interface ipv6 add neighbors Smazat tabulku sousedů můžeme takto:netsh> interface ipv6 delete neighborsSmazat tabulku sousedů na konkrétním rozhraní můžeme takto:netsh> interface ipv6 delete neighbors Smazat konkrétní záznam můžeme takto:netsh> interface ipv6 delete neighbors


Závěr:Povedlo se nám zachytávat icmpv6 zprávy, které slouží ke komunikaci pro <strong>ND</strong>. Totosledování jsme provedli jak při komunikaci ve směru host-host, tak také přikomunikaci routeru s hostem a naopak.Sledování a debug jsme provedli na stanicích s Linuxem, stanicích s Windows 7 a narouterech.


Použitá literatura[1] www.faqs.org - domov RFCRFC 1885 - Internet Control Message Protocol (ICMPv6) for <strong>IPv6</strong>RFC 2461 - <strong>Neighbor</strong> <strong>Discovery</strong> for <strong>IPv6</strong>[2] www.wikipedia.org ARP – Address Resolution Protocol[3] www.microsoft.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!