I-ping ang tanang IPv6 node sa usa ka channel

Pipila ka adlaw ang nahabilin hangtod sa pagsugod sa usa ka bag-ong dagan sa rate "Inhinyero sa Network" gikan sa OTUS. Niining bahina, gusto namong ipaambit kanimo ang usa ka paghubad sa mapuslanon nga materyal sa hilisgutan.

I-ping ang tanang IPv6 node sa usa ka channel

Usa ka serye sa mga post sa blog sa mga tip ug mga limbong alang sa pag-troubleshoot sa mga isyu sa IPv6 ping (ICMPv6 Echo Request/Echo Reply)

Palihug timan-i nga naggamit ako sa Linux (ilabi na ang Fedora 31), bisan pa ang ping command syntax alang sa ubang mga operating system kinahanglan nga parehas kaayo.

I-ping ang tanang IPv6 node sa usa ka channel

Ang una ug pinakasimple nga tip mao ang pag-ping sa tanang IPv6 node sa link.

Ang IPv6 naggamit ug multicast nga mga adres para sa tanang matang sa usa-sa-daghang komunikasyon. Walay broadcast (o broadcast) IPv6 nga mga adres. Kini nagpalahi sa IPv6 gikan sa IPv4, diin adunay daghang mga matang sa mga adres sa sibya, pananglitan, ang "limitado nga sibya" nga adres 255.255.255.255 [RFC1122].

Bisan pa, adunay usa ka "all-nodes multicast" nga IPv6 nga adres, busa among gamiton kana aron i-ping ang tanan nga mga IPv6 node sa link. (Ang usa ka "broadcast" nga adres sa tinuud usa lamang ka pinasahi nga ginganlan nga multicast nga adres, nga usa ka multicast nga grupo nga naglakip sa tanan nga mga node. Timan-i nga, pananglitan, ang "grupo" o multicast nga address bit gipaandar sa Ethernet broadcast address sa link layer ).

All-nodes multicast IPv6 address alang sa channel: ff02::1. ff nagpasabot ug multicast IPv6 address. Ang sunod nga 0 mao ang bahin sa bandila nga adunay wala mabutang nga mga piraso.

dugang pa 2 naghubit sa lugar sa usa ka multicast nga grupo. Dili sama sa multicast IPv4 adres, multicast IPv6 adres adunay usa ka scope. Ang kantidad sa sakup nagpaila sa bahin sa network diin ang usa ka multicast packet gitugotan nga ipasa. Sa higayon nga ang usa ka pakete makaabot sa utlanan sa espesipikong scope, ang pakete kinahanglang ihulog, bisan pa kon ang iyang Hop Count field kay nonzero. Siyempre, kung ang ihap sa hop moabot sa zero sa dili pa makaabot sa gitakda nga multicast nga utlanan sa grupo, kini usab gi-reset dayon. Ania ang kompletong listahan sa IPv6 multicast scope.

Sa katapusan ::1 nagtino sa usa ka all-nodes nga multicast nga grupo.

Mahitungod sa adres ff02::1 Kinahanglan nga hinumdoman nga kini dili klaro. Sa usa ka IPv6 host nga adunay daghang mga interface, sama sa usa ka router o multihomed host, ang adres ff02::1 walay bisan unsa diin imong matino kung unsang interface ang ipadala sa ICMPv6 echo requests o magdahom nga makadawat sa ICMPv6 echo nga mga tubag inig-abot nila. ff02::1 balido ug mahimong magamit sa bisan unsang mga interface ug mga agianan nga gilakip sa multi-interface node.

Mao nga kung atong i-ping ang tanan nga mga IPv6 node sa usa ka link, kinahanglan naton isulti usab ang utility ping para sa IPv6, nga interface nga gamiton.

Pagtino sa mga Interface - Opsyon sa Command Line

Sa ato nang nakita, ang all-nodes multicast nga adres nga gusto natong gamiton mao ang - ff02::1 - wala maghatag ug bisan unsa nga impormasyon mahitungod sa interface nga ipadala ug makadawat sa ICMPv6 echo request ug echo reply packets.

Busa, unsaon nato pagtino ang interface nga gamiton alang sa multicast address space o unicast Link-Local address space?

Ang una ug labing klaro nga paagi mao ang paghatag niini ingon usa ka parameter sa aplikasyon nga among gigamit.

Alang sa utility ping gihatag namo kini pinaagi sa opsyon -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 ~]$

Gamit kining all-nodes multicast ping, nakadawat mi og mga tubag gikan sa 6 IPv6 nodes. Ang mga tubag gikan sa Link-Local IPv6 node addresses, sugod sa prefix fe80::/10.

nga ping wala magpadayon sa pagpadala sa ICMPv6 echo requests hangtod nga mabalda nato kini, kasagaran atong ipiho ang gidaghanon sa mga packet nga ipadala pinaagi sa -c option. Bisan pa, kini usab nagpugong sa ping sa pagdawat ug pagpakita sa labaw sa usa ka ICMPv6 echo reply sa pagpadala sa usa ka multicast ICMPv6 echo request. Hinunoa, gigamit namo ang -w nga kapilian aron ipiho nga ang ping kinahanglang makompleto human sa 1 segundos, bisag pila ka ICMPv6 echo requests o echo replies ang gipadala o nadawat.

Laing butang nga angay hatagan pagtagad mao ang (DUP!) output sa ikaduha ug sunod nga mga tubag. Kini nga mga packet giila nga doble nga mga tubag tungod kay sila adunay parehas nga ICMP sequence value sama sa indibidwal nga ICMPv6 echo requests nga gipadala sa unang dapit. Nagpakita kini tungod kay ang ICMPv6 multicast echo request nagresulta sa daghang indibidwal nga unicast nga mga tubag. Gipakita usab ang gidaghanon sa mga duplicate sa summary sa estadistika.

Pagtino sa mga Interface - Zone ID

Ang laing paagi sa pagbutyag sa usa ka interface nga gamiton mao ang bahin sa IPv6 address parameter.

Makita nato ang usa ka pananglitan niini sa output sa ping, diin ang mga adres sa pagtubag sa mga host sa IPv6 adunay suffix usab. %enp3s2sama pananglit:

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

Kini nga paagi sa pagtino sa mga interface pormal nga gihulagway sa [RFC4007], "Iv6 Defined Address Architecture." Bisan tuod kini kasagarang gitawag nga operating system interface, kini sa pagkatinuod naghubit sa usa ka butang nga mas kinatibuk-an-usa ka "zone" o "scope."

Ang rason sa pagbaton ug mas daghang general zones o scope zones kay, sama sa gihisgotan sa [RFC4007], ang IPv6 node mahimong adunay daghang lain-laing IPv6 interface nga konektado sa samang channel. Kini nga mga interface mga miyembro sa parehas nga sona.

Mahimong posible ang paggrupo sa daghang mga interface sulod sa usa ka sona ubos sa operating system; Sa pagkakaron wala ko kahibalo kung posible ba kini ubos sa Linux o unsaon pagbuhat niini.

Gamit ang suffix %<zone_id>, mahimo natong tangtangon ang opsyon sa command line -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-Local Address nga mga Tubag

Gikan niining all-nodes multicast ping nakadawat kami og total nga 6 ka talagsaon nga mga tubag.

Kini nga mga tubag gikan sa unicast Link-Local IPv6 host address. Pananglitan, ania ang unang tubag:

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

Ang Unicast Link-Local IPv6 nga mga adres gikinahanglan sa tanang IPv6-enabled interfaces [RFC4291], "IP Version 6 Addressing Architecture". Ang hinungdan niini mao nga ang usa ka IPv6 node kanunay nga awtomatikong adunay usa ka unicast IPv6 nga adres, nga labing menos magamit niini aron makigsulti sa ubang mga node sa direkta nga konektado nga mga link. Naglakip kini sa pagpakigsulti sa mga aplikasyon sa ubang mga host pinaagi sa Link-Local host address.

Gipasimple niini ang disenyo ug pagpatuman sa mga protocol sama sa IPv6 Neighbor Discovery ug OSPFv3. Gitugotan usab niini ang mga aplikasyon sa end-user sa mga host nga makigkomunikar sa channel nga wala kinahanglana ang bisan unsang ubang pagsuporta sa imprastraktura sa IPv6 sa channel. Ang direktang komunikasyon tali sa konektado nga IPv6 host wala magkinahanglan ug IPv6 router o DHCPv6 server sa koneksyon.

Ang Link-Local nga mga adres nagsugod sa usa ka 10-bit prefix fe80, gisundan sa 54 zero bits ug dayon usa ka 64-bit interface identifier (IID). Sa ibabaw sa unang tubag 2392:6213:a15b:66ff usa ka 64-bit nga IID.

Nag-loop nga Multicast

Sa kasagaran, ang mga multicast packet ibalik sa sulod sa node nga nagpadala niini. Kini mahitabo alang sa IPv6 ug IPv4 addressing.

Ang rason alang niining default nga kinaiya mao nga kung ang mga multicast packet gipadala, mahimo usab nga adunay usa ka pagpamati sa lokal nga multicast nga aplikasyon nga nagdagan sa nagpadala nga host mismo, ingon man sa usa ka lugar sa network. Kining lokal nga aplikasyon kinahanglang makadawat usab ug multicast packets.

Atong makita kining multicast local loop sa atong ping output:

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

Ang una ug pinakapaspas nga tubag (0,106 ms kumpara sa 0,453 ms) gikan sa Link-Local nga adres nga gi-configure sa interface mismo enp3s2.

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

Gamit ping naghatag og paagi sa pagsumpo sa lokal nga multicast feedback gamit ang parameter -L. Kung magpadala kami usa ka all-nodes nga multicast ping nga adunay kini nga bandila, nan ang mga tubag limitado sa layo nga mga node. Wala kami makadawat og tubag gikan sa Link-Local nga adres sa nagpadala nga 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 nga mga Address

Sama sa imong pagtag-an, ang unicast Link-Local nga mga adres sa ilang kaugalingon wala usab maghatag igong kasayuran aron ipakita kung unsang interface ang gamiton aron maabot sila. Sama sa all-nodes nga multicast ping, kinahanglan usab natong ipiho ang interface isip parameter sa command line ping o zone ID nga adunay adres kung mag-ping sa Link-Local nga mga adres.

Niining higayona magamit na nato -caron limitahan ang gidaghanon sa mga pakete ug mga tubag nga gipadala ug nadawat ping, tungod kay nagpahigayon kami og unicast ping.

[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 (tanan) uban pang IPv6 nga adres?

Niini nga artikulo, among nakita kung giunsa ang pag-ping sa tanan nga mga IPv6 node sa usa ka channel gamit ang usa ka all-nodes nga multicast IPv6 nga adres ff02::1. Nakita usab namo kung unsaon pagtino kung unsang interface ang gamiton sa usa ka all-nodes multicast IPv6 address, tungod kay ang adres mismo dili makahatag niini nga impormasyon. Gigamit namo ang opsyon sa command line ping, o gipiho ang interface gamit ang suffix %<zone_id>.

Dayon nahibal-an namon ang bahin sa unicast Link-Local nga mga adres, nga mga adres nga gigamit sa pagtubag sa tanan nga mga node nga multicast nga ICMPv6 echo nga mga hangyo.

Nakita usab namo kung giunsa ang mga multicast packet gibalik sa pagpadala nga node pinaagi sa default ug kung giunsa kini pag-disable alang sa utility ping.

Sa katapusan, nag-ping kami sa usa ka Link-Local nga adres gamit ang suffix %<zone_id>, tungod kay ang Link-Local nga mga adres mismo wala usab maghatag impormasyon bahin sa outgoing interface.

Busa unsa man ang mahitungod sa pag-ping sa tanan nga uban nga mga node ug pagkuha sa ilang mga global nga unicast nga mga adres (GUAs) (nga mao, ang ilang mga pampublikong adres sa Internet) o ang ilang talagsaon nga lokal nga unicast nga mga adres (ULAs)? Atong tan-awon kini sa sunod nga blog post.

Mao ra na.

Mahibal-an nimo ang dugang bahin sa among kurso sa mga nota sa bukas nga adlaw.

Source: www.habr.com

Idugang sa usa ka comment