Ping all IPv6 Noden op engem Kanal

E puer Deeg bleiwen bis de Start vun engem neie Flux um Taux "Netzwierkingenieur" vun OTUS. An dëser Hisiicht wëlle mir Iech eng Iwwersetzung vun nëtzlecht Material zum Thema deelen.

Ping all IPv6 Noden op engem Kanal

Eng Serie vu Blogposten iwwer Tipps an Tricks fir d'Problembehandlung vun IPv6 Ping Themen (ICMPv6 Echo Request / Echo Reply)

Maacht weg datt ech Linux benotzen (speziell Fedora 31), awer d'Ping Kommando Syntax fir aner Betribssystemer soll hoffentlech ganz ähnlech sinn.

Ping all IPv6 Noden op engem Kanal

Den éischten an einfachsten Tipp ass all IPv6 Noden op de Link ze pingelen.

IPv6 benotzt Multicast Adressen fir all Zorte vu een-zu-vill Kommunikatiounen. Et gi keng Emissioun (oder Emissioun) IPv6 Adressen. Dëst ënnerscheet IPv6 vun IPv4, wou et verschidden Aarte vu Sendungsadressen gëtt, zum Beispill d'"limitéiert Sendung" Adress 255.255.255.255 [RFC1122].

Wéi och ëmmer, et gëtt eng "all-Nodes Multicast" IPv6 Adress, sou datt mir dat benotze fir all IPv6 Noden op de Link ze pingelen. (Eng "Broadcast" Adress ass eigentlech just eng speziell benannt Multicast Adress, déi eng Multicast Grupp ass, déi all Wirbelen enthält. Notéiert datt zum Beispill de "Grupp" oder Multicast Adressbit an Ethernet Broadcast Adressen an der Linkschicht ageschalt ass ).

All-Nodes Multicast IPv6 Adress fir de Kanal: ff02::1. ff bezeechent eng Multicast IPv6 Adress. Déi nächst 0 ass den Deel vum Fändel mat onbestänneg Bits.

weider 2 definéiert d'Gebitt vun enger Multicast Grupp. Am Géigesaz zu Multicast IPv4 Adressen hunn Multicast IPv6 Adressen en Ëmfang. Den Ëmfangwäert weist den Deel vum Netz un, iwwer deen e Multicast-Paket erlaabt ass weidergeleet ze ginn. Wann e Paket d'Grenz vum spezifizéierten Ëmfang erreecht, muss de Paket erofgelooss ginn, egal ob säin Hop Count Feld net null ass. Natierlech, wann den Hopzuel Null erreecht ier Dir déi spezifizéiert Multicast Grupp Grenz erreecht, gëtt se och direkt zréckgesat. Hei ass eng komplett Lëscht vun IPv6 Multicast Ëmfang.

Endlech ::1 spezifizéiert eng All-Nodes Multicast Grupp.

Iwwer d'Adress ff02::1 Et soll feststellen, datt et zweedeiteg ass. Op engem IPv6 Host mat méi Interfaces, wéi e Router oder Multihomed Host, d'Adress ff02::1 et gëtt näischt wou Dir spezifizéiert wéi eng Interface fir ICMPv6 Echo Ufroen ze schécken oder erwaart ICMPv6 Echo Äntwerten ze kréien wann se ukommen. ff02::1 ass valabel a kann op jiddereng vun den Interfaces a Kanäl benotzt ginn, déi un de Multi-Interface Node verbonne sinn.

Also wa mir all IPv6 Noden op engem Link pingelen, musse mir iergendwéi och d'Utility soen ping fir IPv6, wéi eng Interface ze benotzen.

Definéieren Interfaces - Kommando Linn Optioun

Wéi mir scho gesinn hunn, ass d'All-Nodes Multicast Adress déi mir benotze wëllen - ff02::1 - gëtt keng Informatioun iwwer wéi eng Interface fir ICMPv6 Echo Ufro an Echo Äntwert Pakete ze schécken an ze kréien.

Also, wéi spezifizéiere mir den Interface fir de Multicast Adressraum oder Unicast Link-Local Adressraum ze benotzen?

Den éischten an offensichtlechste Wee ass et als Parameter fir d'Applikatioun ze bidden déi mir benotzen.

Fir Utility ping mir bidden et duerch d'Optioun -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 ~]$

Mat dësem All-Nodes Multicast Ping hu mir Äntwerte vu 6 IPv6 Noden kritt. Äntwerte koumen vu Link-Local IPv6 Node Adressen, ugefaange mam Präfix fe80::/10.

datt ping net weider ICMPv6 Echo Ufroen onbestëmmt ze schécken bis mir et ënnerbriechen, mir spezifizéieren normalerweis d'Zuel vun de Pakete fir iwwer d'-c Optioun ze schécken. Wéi och ëmmer, dëst verhënnert och de Ping méi wéi eng ICMPv6 Echo Äntwert ze akzeptéieren an ze weisen wann Dir eng Multicast ICMPv6 Echo Ufro schéckt. Amplaz hu mir d'Optioun -w benotzt fir ze spezifizéieren datt de Ping no 1 Sekonn fäerdeg ass, egal wéi vill ICMPv6 Echo Ufroen oder Echo Äntwerte geschéckt oder kritt goufen.

Eng aner Saach fir opzepassen ass (DUP!) Ausgang op déi zweet a spéider Äntwerten. Dës Pakete ginn als duplizéiert Äntwerten identifizéiert well se deeselwechten ICMP Sequenzwäert hunn wéi déi eenzel ICMPv6 Echo Ufroen déi an der éischter Plaz geschéckt goufen. Si erschéngen well eng ICMPv6 Multicast Echo Ufro zu multiple individuellen Unicast Äntwerte resultéiert. D'Zuel vun den Duplikate gëtt och am Statistikresumé uginn.

Schnëttplazen definéieren - Zone ID

Eng aner Manéier fir en Interface ze benotzen ass als Deel vun engem IPv6 Adressparameter.

Mir kënnen e Beispill vun dësem am Ping-Output gesinn, wou d'Adresse vun de reagéierende IPv6 Hosten och de Suffix hunn %enp3s2, zum Beispill:

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

Dës Method fir Interfaces ze spezifizéieren ass formell beschriwwen an [RFC4007], "IPv6 Definéiert Adressarchitektur." Och wa se normalerweis d'Betriebssystem-Interface genannt ginn, definéieren se tatsächlech eppes méi allgemeng - eng "Zone" oder "Speich".

De Grond fir méi allgemeng Zonen oder Ëmfangzonen ze hunn ass datt, wéi ernimmt an [RFC4007], en IPv6 Node kann e puer verschidden IPv6 Interfaces mat dem selwechte Kanal verbonne sinn. Dës Schnëttplazen sinn Membere vun der selwechter Zone.

Et sollt méiglech sinn, verschidde Interfaces bannent enger Zone ënner dem Betribssystem ze gruppéieren; Momentan weess ech net ob dëst ënner Linux méiglech ass oder wéi et ze maachen.

Benotzt de Suffix %<zone_id>, mir kënnen d'Kommandozeiloptioun ewechhuelen -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-Lokal Adress Äntwerten

Vun dësem All-Nodes Multicast Ping hu mir insgesamt 6 eenzegaarteg Äntwerte kritt.

Dës Äntwerte koumen vun unicast Link-Local IPv6 Hostadressen. Zum Beispill, hei ass déi éischt Äntwert:

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

Unicast Link-Lokal IPv6 Adressen sinn erfuerderlech op all IPv6-aktivéierten Interfaces [RFC4291], "IP Version 6 Adresséierungsarchitektur". De Grond dofir ass datt en IPv6 Node ëmmer automatesch eng unicast IPv6 Adress huet, déi et op d'mannst benotze kann fir mat aneren Noden op sengen direkt verbonne Linken ze kommunizéieren. Dëst beinhalt d'Kommunikatioun mat Uwendungen op anere Hosten iwwer Link-Local Hostadressen.

Dëst vereinfacht den Design an Ëmsetzung vu Protokoller wéi IPv6 Neighbor Discovery an OSPFv3. Et erlaabt och Endverbraucher Uwendungen op Hosten fir iwwer de Kanal ze kommunizéieren ouni eng aner ënnerstëtzend IPv6 Infrastruktur um Kanal ze erfuerderen. Direkt Kommunikatioun tëscht verbonne IPv6 Hosten erfuerdert keen IPv6 Router oder DHCPv6 Server op der Verbindung.

Link-Lokal Adressen starten mat engem 10-Bit Präfix fe80, gefollegt vun 54 Null Bits an dann e 64-Bit Interface Identifizéierer (IID). An der uewen éischter Äntwert 2392:6213:a15b:66ff ass e 64-Bit IID.

Looped Multicast

Par défaut ginn Multicast Päck intern an den Node zréckginn deen se geschéckt huet. Dëst geschitt souwuel fir IPv6 wéi och IPv4 Adresséierung.

De Grond fir dëst Standardverhalen ass datt wann Multicast Päck geschéckt ginn, et kann och eng lauschteren lokal Multicast Applikatioun um Sendende Host selwer lafen, wéi och iergendwou am Netz. Dës lokal Applikatioun muss och Multicast Pakete kréien.

Mir kënnen dës Multicast Lokal Loop an eisem Ping Output gesinn:

[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!)
...

Déi éischt a séierst Äntwert (0,106 ms am Verglach zu 0,453 ms) kënnt vun der Link-Local Adress konfiguréiert op der Interface selwer enp3s2.

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

Utility ping bitt e Wee fir lokal Multicast Feedback mat dem Parameter z'ënnerdrécken -L. Wa mir en All-Nodes Multicast Ping mat dësem Fändel schécken, da sinn d'Äntwerte limitéiert op Fernknoten. Mir kréien keng Äntwert vun der Link-Lokal Adress vun der Sender Interface.

[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-Lokal Adressen

Wéi Dir kéint roden, unicast Link-Local Adressen eleng ginn och net genuch Informatioun fir unzeginn wéi eng Interface ze benotzen fir se z'erreechen. Wéi mat All-Nodes Multicast Ping, musse mir och d'Interface als Kommandozeilparameter spezifizéieren ping oder Zone ID mat Adress wann Link-Lokal Adressen Pinging.

Dës Kéier kënne mir benotzen -cfir d'Zuel vun de Paketen an Äntwerten ze limitéieren déi geschéckt a kritt goufen ping, well mir unicast Ping maachen.

[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 (all) aner IPv6 Adressen?

An dësem Artikel hu mir gesinn wéi Dir all IPv6 Noden op engem Kanal pingt mat enger All-Nodes Multicast IPv6 Adress ff02::1. Mir hunn och gesinn wéi Dir uginn wéi eng Interface mat enger All-Nodes Multicast IPv6 Adress ze benotzen, well d'Adress selwer kann dës Informatioun net ubidden. Mir hunn entweder d'Kommandozeiloptioun benotzt ping, oder spezifizéiert den Interface mam Suffix %<zone_id>.

Duerno hu mir iwwer unicast Link-Local Adressen geléiert, déi Adresse sinn déi benotzt gi fir op All-Nodes Multicast ICMPv6 Echo Ufroen ze reagéieren.

Mir hunn och gesinn wéi Multicast Pakete standardiséiert an de Sendeknuet zréckginn a wéi een dëst fir den Utility auszeschalten ping.

Endlech hu mir eng eenzeg Link-Lokal Adress mam Suffix gepingt %<zone_id>, Zënter Link-Local Adressen selwer ginn och keng Informatioun iwwer déi erausginn Interface.

Also wat iwwer all déi aner Noden ze pingelen an hir global Unicast Adressen (GUAs) ze kréien (dat ass hir ëffentlech Adressen um Internet) oder hir eenzegaarteg lokal Unicast Adressen (ULAs)? Mir wäerten dëst am nächste Blogpost kucken.

Dat ass alles.

Dir kënnt méi iwwer eise Cours gewuer ginn op oppen Dag Notizen.

Source: will.com

Setzt e Commentaire