Ping tout nœuds IPv6 sou yon chanèl

Kèk jou rete jiskaske kòmansman yon nouvo koule nan pousantaj la "Enjenyè rezo" soti nan OTUS. Nan sans sa a, nou ta renmen pataje avèk ou yon tradiksyon nan materyèl itil sou sijè a.

Ping tout nœuds IPv6 sou yon chanèl

Yon seri post blog sou konsèy ak ke trik nouvèl pou depanaj pwoblèm ping IPv6 (ICMPv6 Echo Request/Echo Reply)

Tanpri sonje ke mwen ap itilize Linux (espesyalman Fedora 31), sepandan sentaks kòmand ping pou lòt sistèm operasyon yo ta dwe èspere ke trè menm jan an.

Ping tout nœuds IPv6 sou yon chanèl

Premye ak pi senp konsèy la se ping tout nœuds IPv6 sou lyen an.

IPv6 itilize adrès multidiffusion pou tout kalite kominikasyon youn-a-anpil. Pa gen adrès IPv6 difize (oswa difize). Sa fè distenksyon IPv6 ak IPv4, kote gen plizyè kalite adrès emisyon, pou egzanp, adrès "difizyon limite" 255.255.255.255 [RFC1122].

Sepandan, gen yon "tout-nœuds multicast" adrès IPv6, kidonk nou pral sèvi ak sa a pou fè ping tout nœuds IPv6 sou lyen an. (Yon adrès "difizyon" se aktyèlman jis yon adrès multidiffusion ki rele espesyalman, ki se yon gwoup multidiffusion ki gen ladann tout nœuds. Remake byen ke, pou egzanp, "gwoup la" oswa bit adrès multicast la vire sou nan adrès emisyon Ethernet nan kouch lyen an. ).

Tout-nœuds multicast IPv6 adrès pou kanal la: ff02::1. ff vle di yon adrès IPv6 multicast. 0 kap vini an se yon pati nan drapo a ki gen ti bits unset.

Pli lwen 2 defini zòn nan yon gwoup multicast. Kontrèman ak adrès IPv4 multicast, adrès IPv6 multicast gen yon dimansyon. Valè sijè ki abòde lan endike pati rezo a ki pèmèt yo voye yon pake multidiffusion. Yon fwa yon pake rive nan limit la nan sijè ki abòde ki espesifye, pake a dwe tonbe, kèlkeswa si jaden Hop Count li a pa zewo. Natirèlman, si konte a hop rive nan zewo anvan yo rive nan limit gwoup la espesifye, li se tou imedyatman reset. Isit la se yon lis konplè sou sijè ki abòde IPv6 multicast.

Finalman ::1 espesifye yon gwoup multidiffusion tout-nœuds.

Sou adrès la ff02::1 Li ta dwe remake ke li se Limit. Sou yon lame IPv6 ki gen plizyè interfaces, tankou yon routeur oswa lame multihomed, adrès la ff02::1 pa gen anyen kote ou ka presize ki koòdone pou voye demann eko ICMPv6 oswa espere resevwa repons eko ICMPv6 lè yo rive. ff02::1 se valab epi yo ka itilize sou nenpòt nan entèfas ak chanèl ki tache ak ne nan milti-koòdone.

Se konsa, lè nou ping tout nœuds IPv6 sou yon lyen, nou bezwen yon jan kanmenm tou di sèvis piblik la ping pou IPv6, ki koòdone pou itilize.

Defini entèfas - Opsyon liy kòmand

Kòm nou te deja wè, adrès multidiffusion tout-nœuds nou vle itilize se - ff02::1 - pa bay okenn enfòmasyon konsènan ki koòdone pou voye ak resevwa ICMPv6 demann eko ak pake repons eko.

Se konsa, ki jan nou presize koòdone yo dwe itilize pou espas adrès multicast oswa espas adrès unicast Link-Local?

Premye ak fason ki pi evidan se bay li kòm yon paramèt nan aplikasyon an nou ap itilize.

Pou sèvis piblik ping nou bay li atravè opsyon an -I.

[mark@opy ~]$ ping -w 1 -I enp3s2 ff02::1
ping: Warning: source address might be selected on device other than: enp3s2
PING ff02::1(ff02::1) from :: enp3s2: 56 data bytes
64 bytes from fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 time=0.438 ms
64 bytes from fe80::f31c:ccff:fe26:a6d9%enp3s2: icmp_seq=1 ttl=64 time=0.589 ms (DUP!)
64 bytes from fe80::7e31:f5ff:fe1b:9fdb%enp3s2: icmp_seq=1 ttl=64 time=5.15 ms (DUP!)
64 bytes from fe80::f7f8:15ff:fe6f:be6e%enp3s2: icmp_seq=1 ttl=64 time=58.0 ms (DUP!)
64 bytes from fe80::877d:4ff:fe1a:b881%enp3s2: icmp_seq=1 ttl=64 time=62.3 ms (DUP!)
64 bytes from fe80::877d:4ff:fe1a:ad79%enp3s2: icmp_seq=1 ttl=64 time=62.8 ms (DUP!)
 
--- ff02::1 ping statistics ---
1 packets transmitted, 1 received, +5 duplicates, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.438/31.544/62.786/29.566 ms
[mark@opy ~]$

Sèvi ak ping multidiffusion tout-nœuds sa a, nou te resevwa repons nan men 6 nœuds IPv6. Repons yo te soti nan adrès IPv6 Link-Local yo, kòmanse ak prefiks la fe80::/10.

Sa ping pa kontinye voye demann eko ICMPv6 endefiniman jiskaske nou entèwonp li, anjeneral nou presize kantite pake yo voye atravè opsyon an -c. Sepandan, sa a tou anpeche ping aksepte ak montre plis pase yon repons eko ICMPv6 lè w ap voye yon demann eko ICMPv6 multicast. Olye de sa, nou te itilize opsyon -w pou presize ke ping ta dwe konplete apre 1 segonn, kèlkeswa kantite demann eko ICMPv6 oswa repons eko yo te voye oswa resevwa.

Yon lòt bagay ou dwe peye atansyon a se (DUP!) pwodiksyon sou dezyèm ak repons ki vin apre yo. Yo idantifye pake sa yo kòm repons kopi paske yo gen menm valè sekans ICMP ak demann eko ICMPv6 endividyèl yo te voye an premye. Yo parèt paske yon demann eko multidiffusion ICMPv6 lakòz plizyè repons unicast endividyèl. Kantite kopi yo endike tou nan rezime estatistik la.

Defini Entèfas - ID Zòn

Yon lòt fason pou ekspoze yon koòdone pou itilize se kòm yon pati nan yon paramèt adrès IPv6.

Nou ka wè yon egzanp sa a nan pwodiksyon an ping, kote adrès yo nan lame IPv6 yo reponn tou gen sifiks la. %enp3s2pa egzanp:

64 bytes from fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 time=0.438 ms

Metòd sa a pou espesifye interfaces fòmèlman dekri nan [RFC4007], "IPv6 Defined Address Architecture." Malgre ke yo anjeneral yo rele koòdone sistèm operasyon an, yo aktyèlman defini yon bagay ki pi jeneral-yon "zòn" oswa "dimansyon."

Rezon ki fè yo gen plis zòn jeneral oswa zòn dimansyon se ke, jan mansyone nan [RFC4007], yon ne IPv6 ka gen plizyè koòdone IPv6 diferan ki konekte nan menm kanal la. Entèfas sa yo se manm nan menm zòn.

Li ta dwe posib pou gwoupe plizyè interfaces nan yon zòn anba sistèm operasyon an; Kounye a mwen pa konnen si sa posib anba Linux oswa ki jan fè li.

Sèvi ak sifiks la %<zone_id>, nou ka retire opsyon nan liy lòd -I ping.

[mark@opy ~]$ ping -w 1 ff02::1%enp3s2
PING ff02::1%enp3s2(ff02::1%enp3s2) 56 data bytes
64 bytes from fe80::2392:6213:a15b:66ff%enp3s2: icmp_seq=1 ttl=64 time=0.106 ms
64 bytes from fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 time=0.453 ms (DUP!)
64 bytes from fe80::f31c:ccff:fe26:a6d9%enp3s2: icmp_seq=1 ttl=64 time=0.606 ms (DUP!)
64 bytes from fe80::7e31:f5ff:fe1b:9fdb%enp3s2: icmp_seq=1 ttl=64 time=6.23 ms (DUP!)
64 bytes from fe80::f7f8:15ff:fe6f:be6e%enp3s2: icmp_seq=1 ttl=64 time=157 ms (DUP!)
64 bytes from fe80::877d:4ff:fe1a:ad79%enp3s2: icmp_seq=1 ttl=64 time=159 ms (DUP!)
64 bytes from fe80::877d:4ff:fe1a:b881%enp3s2: icmp_seq=1 ttl=64 time=161 ms (DUP!)
64 bytes from fe80::23d:e8ff:feec:958c%enp3s2: icmp_seq=1 ttl=64 time=179 ms (DUP!)
 
--- ff02::1%enp3s2 ping statistics ---
1 packets transmitted, 1 received, +7 duplicates, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.106/82.858/179.216/81.281 ms
 
[mark@opy ~]$

Link-Repons Adrès Lokal yo

Soti nan ping sa a tout-nœuds multicast nou te resevwa yon total de 6 repons inik.

Repons sa yo soti nan adrès lame IPv6 unicast Link-Local. Pou egzanp, isit la se premye repons lan:

64 bytes from fe80::2392:6213:a15b:66ff%enp3s2: icmp_seq=1 ttl=64 time=0.106 ms

Adrès IPv6 Unicast Link-Local yo obligatwa sou tout koòdone IPv6 ki pèmèt [RFC4291], "IP Version 6 Addressing Architecture". Rezon ki fè la pou sa a se ke yon ne IPv6 toujou otomatikman gen yon adrès IPv6 unicast, ki li ka omwen itilize yo kominike ak lòt nœuds sou lyen dirèkteman konekte li yo. Sa a gen ladan kominike ak aplikasyon sou lòt lame atravè adrès lame Link-Local.

Sa senplifye konsepsyon ak aplikasyon pwotokòl tankou IPv6 Neighbor Discovery ak OSPFv3. Li pèmèt tou aplikasyon pou itilizatè fen yo kominike sou chanèl la san yo pa bezwen okenn lòt enfrastrikti IPv6 sipòte sou kanal la. Kominikasyon dirèk ant lame IPv6 konekte pa mande pou yon routeur IPv6 oswa sèvè DHCPv6 sou koneksyon an.

Adrès Link-Lokal yo kòmanse ak yon prefiks 10-bit fe80, ki te swiv pa 54 zewo Bits ak Lè sa a, yon idantifyan koòdone 64-bit (IID). Nan premye repons ki anwo a 2392:6213:a15b:66ff se yon IID 64-bit.

Loop Multicast

Pa defo, pakè multicast yo retounen entèn nan ne ki voye yo. Sa rive pou tou de IPv6 ak IPv4 adrese.

Rezon ki fè konpòtman default sa a se ke lè yo voye pakè multidiffusion, ka gen tou yon aplikasyon multidiffusion lokal k ap koute kap kouri sou lame ki voye a li menm, osi byen ke yon kote sou rezo a. Aplikasyon lokal sa a dwe resevwa pakè multidiffusion tou.

Nou ka wè bouk lokal multicast sa a nan pwodiksyon ping nou an:

[mark@opy ~]$ ping -w 1 ff02::1%enp3s2
PING ff02::1%enp3s2(ff02::1%enp3s2) 56 data bytes
64 bytes from fe80::2392:6213:a15b:66ff%enp3s2: icmp_seq=1 ttl=64 time=0.106 ms
64 bytes from fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 time=0.453 ms (DUP!)
...

Premye ak pi rapid repons lan (0,106 ms konpare ak 0,453 ms) soti nan adrès Link-Local configuré sou koòdone nan tèt li. enp3s2.

[mark@opy ~]$ ip addr show dev enp3s2 | grep fe80
    inet6 fe80::2392:6213:a15b:66ff/64 scope link noprefixroute 
[mark@opy ~]$

Sèvis piblik ping bay yon fason yo siprime fidbak lokal multicast lè l sèvi avèk paramèt la -L. Si nou voye yon ping multidiffusion tout-nœuds ak drapo sa a, Lè sa a, repons yo limite a nœuds aleka. Nou pa resevwa yon repons nan adrès Link-Local koòdone ki voye a.

[mark@opy ~]$ ping -L -w 1 ff02::1%enp3s2
PING ff02::1%enp3s2(ff02::1%enp3s2) 56 data bytes
64 bytes from fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 time=0.383 ms
 
64 bytes from fe80::f31c:ccff:fe26:a6d9%enp3s2: icmp_seq=1 ttl=64 time=0.467 ms (DUP!)
...

Ping Link-Adrès Lokal yo

Kòm ou ta ka devine, adrès Unicast Link-Local poukont yo tou pa bay ase enfòmasyon pou endike ki koòdone yo sèvi ak yo. Menm jan ak tout-nœuds multicast ping, nou bezwen tou presize koòdone a kòm yon paramèt liy lòd ping oswa ID zòn ak adrès lè w ap fè ping nan adrès Link-Lokal yo.

Fwa sa a nou ka itilize -climite kantite pake ak repons yo voye ak resevwa ping, depi nou ap fè ping unicast.

[mark@opy ~]$ ping -c 1 fe80::f31c:ccff:fe26:a6d9%enp3s2
 
PING fe80::f31c:ccff:fe26:a6d9%enp3s2(fe80::fad1:11ff:feb7:3704%enp3s2) 56 data bytes
64 bytes from fe80::f31c:ccff:fe26:a6d9%enp3s2: icmp_seq=1 ttl=64 time=0.395 ms
 
--- fe80::f31c:ccff:fe26:a6d9%enp3s2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.395/0.395/0.395/0.000 ms
[mark@opy ~]$

Ping (tout) lòt adrès IPv6?

Nan atik sa a, nou te wè ki jan yo ping tout nœuds IPv6 sou yon chanèl lè l sèvi avèk yon adrès IPv6 multidiffusion tout nœuds. ff02::1. Nou te wè tou ki jan yo presize ki koòdone yo itilize ak yon adrès IPv6 multidiffusion tout-nœuds, depi adrès la li menm pa ka bay enfòmasyon sa a. Nou te itilize swa opsyon nan liy lòd ping, oswa espesifye koòdone a lè l sèvi avèk sifiks la %<zone_id>.

Lè sa a, nou te aprann sou Unicast Link-Local adrès, ki se adrès yo itilize pou reponn a tout-nœuds multicast ICMPv6 demann eko.

Nou te wè tou ki jan pake multicast yo retounen nan ne voye a pa default ak ki jan yo enfim sa a pou sèvis piblik la. ping.

Finalman, nou te fè ping yon sèl adrès Link-Lokal lè l sèvi avèk sifiks la %<zone_id>, depi adrès Link-Local tèt yo tou pa bay enfòmasyon sou koòdone sòtan an.

Se konsa, sa ki sou ping tout lòt nœuds yo epi jwenn adrès mondyal unicast yo (GUAs) (ki se, adrès piblik yo sou entènèt la) oswa adrès inik lokal unicast yo (ULAs)? Nou pral gade sa a nan pwochen pòs blog la.

Sa se tout.

Ou ka jwenn plis enfòmasyon sou kou nou an nan nòt jou ouvè.

Sous: www.habr.com

Add nouvo kòmantè