නාලිකාවක සියලුම IPv6 නෝඩ් පිං කරන්න

අනුපාතයේ නව ප්රවාහයක් ආරම්භ වන තෙක් දින කිහිපයක් ඉතිරිව ඇත "ජාල ඉංජිනේරු" OTUS වෙතින්. මේ සම්බන්ධයෙන්, මාතෘකාව පිළිබඳ ප්රයෝජනවත් ද්රව්ය පරිවර්තනයක් ඔබ සමඟ බෙදා ගැනීමට අපි කැමැත්තෙමු.

නාලිකාවක සියලුම IPv6 නෝඩ් පිං කරන්න

IPv6 ping ගැටළු නිරාකරණය සඳහා ඉඟි සහ උපක්‍රම පිළිබඳ බ්ලොග් සටහන් මාලාවක් (ICMPv6 Echo Request/Echo පිළිතුර)

මම Linux (විශේෂයෙන් Fedora 31) භාවිතා කරන බව කරුණාවෙන් සලකන්න, කෙසේ වෙතත් අනෙකුත් මෙහෙයුම් පද්ධති සඳහා ping විධාන වාක්‍ය ඛණ්ඩය බොහෝ දුරට සමාන විය යුතුය.

නාලිකාවක සියලුම IPv6 නෝඩ් පිං කරන්න

පළමු සහ සරලම ඉඟිය වන්නේ සබැඳිය මත ඇති සියලුම IPv6 නෝඩ් ping කිරීමයි.

IPv6 සියලු වර්ගවල එක සිට බොහෝ සන්නිවේදනයන් සඳහා බහු විකාශන ලිපින භාවිතා කරයි. විකාශන (හෝ විකාශන) IPv6 ලිපින නොමැත. මෙය IPv6 IPv4 වෙතින් වෙන්කර හඳුනා ගනී, එහිදී විකාශන ලිපින වර්ග කිහිපයක් ඇත, උදාහරණයක් ලෙස, "සීමිත විකාශන" ලිපිනය 255.255.255.255 [RFC1122].

කෙසේ වෙතත්, "සියලු-නෝඩ් බහු විකාශන" IPv6 ලිපිනයක් ඇත, එබැවින් අපි සබැඳිය මත ඇති සියලුම IPv6 නෝඩ් ping කිරීමට එය භාවිතා කරමු. ("විකාශන" ලිපිනයක් යනු සැබවින්ම නම් කරන ලද බහු විකාශන ලිපිනයකි, එය සියලුම නෝඩ් ඇතුළත් බහු විකාශන කණ්ඩායමකි. උදාහරණයක් ලෙස, "සමූහය" හෝ බහු විකාශන ලිපින බිටු සබැඳි ස්ථරයේ ඊතර්නෙට් විකාශන ලිපින තුළ ක්‍රියාත්මක කර ඇති බව සලකන්න. )

නාලිකාව සඳහා සියලුම-නෝඩ් බහු විකාශන IPv6 ලිපිනය: ff02::1. ff බහු විකාශන IPv6 ලිපිනයක් දක්වයි. මීළඟ 0 යනු නොසකසන ලද බිටු සහිත ධජයේ කොටසයි.

තවදුරටත් 2 බහු විකාශන කණ්ඩායමක ප්රදේශය නිර්වචනය කරයි. Multicast IPv4 ලිපින මෙන් නොව, multicast IPv6 ලිපිනවලට විෂය පථයක් ඇත. විෂය පථය අගය මඟින් බහු විකාශන පැකට්ටුවක් ඉදිරියට යැවීමට ඉඩ දී ඇති ජාලයේ කොටස දක්වයි. පැකට්ටුවක් නිශ්චිත විෂය පථයේ සීමාවට ළඟා වූ පසු, එහි Hop Count ක්ෂේත්‍රය ශුන්‍ය නොවන බව නොසලකා, පැකට්ටුව අතහැරිය යුතුය. ඇත්ත වශයෙන්ම, නිශ්චිත බහු විකාශන කණ්ඩායම් සීමාවට ළඟා වීමට පෙර hop ගණන ශුන්‍යයට ළඟා වන්නේ නම්, එය ද වහාම යළි පිහිටුවනු ලැබේ. මෙන්න IPv6 බහු විකාශන විෂය පථයේ සම්පූර්ණ ලැයිස්තුවකි.

අවසාන වශයෙන් ::1 සියලුම නෝඩ් බහු විකාශන කණ්ඩායමක් නියම කරයි.

ලිපිනය ගැන ff02::1 එය අපැහැදිලි බව සැලකිය යුතුය. රවුටරයක් ​​හෝ බහු නිවාස ධාරකයක් වැනි බහු අතුරු මුහුණත් සහිත IPv6 ධාරකයක, ලිපිනය ff02::1 ඔබට ICMPv6 echo ඉල්ලීම් යැවීමට හෝ ICMPv6 echo පිළිතුරු ලැබෙන විට ඒවා ලැබීමට බලාපොරොත්තු වන අතුරු මුහුණත සඳහන් කළ හැකි කිසිවක් නොමැත. ff02::1 වලංගු වන අතර බහු-අතුරුමුහුණත් නෝඩයට අමුණා ඇති ඕනෑම අතුරු මුහුණතක් සහ නාලිකා මත භාවිතා කළ හැක.

එබැවින් අපි සබැඳියක් මත සියලුම IPv6 නෝඩ් ping කරන විට, අපට කෙසේ හෝ උපයෝගීතාව පැවසිය යුතුය ping IPv6 සඳහා, භාවිතා කළ යුතු අතුරු මුහුණත.

අතුරුමුහුණත් අර්ථ දැක්වීම - විධාන රේඛා විකල්පය

අප දැනටමත් දැක ඇති පරිදි, අපට භාවිතා කිරීමට අවශ්‍ය සියලුම-නෝඩ් බහු විකාශන ලිපිනය වන්නේ − වේ ff02::1 - ICMPv6 echo ඉල්ලීම සහ echo පිළිතුරු පැකට් යැවීමට සහ ලබා ගැනීමට කුමන අතුරු මුහුණතද යන්න පිළිබඳ කිසිදු තොරතුරක් සපයන්නේ නැත.

ඉතින්, අපි බහු විකාශන ලිපින අවකාශය හෝ unicast Link-Local ලිපින අවකාශය සඳහා භාවිතා කළ යුතු අතුරු මුහුණත සඳහන් කරන්නේ කෙසේද?

පළමු සහ වඩාත්ම පැහැදිලි මාර්ගය වන්නේ එය අප භාවිතා කරන යෙදුමට පරාමිතියක් ලෙස සැපයීමයි.

උපයෝගීතාව සඳහා ping අපි එය විකල්පය හරහා ලබා දෙන්නෙමු -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 ~]$

මෙම all-nodes multicast ping භාවිතා කරමින්, අපට IPv6 nodes 6කින් ප්‍රතිචාර ලැබුණි. ප්‍රතිචාර පැමිණියේ උපසර්ගයෙන් ඇරඹෙන Link-Local IPv6 නෝඩ් ලිපින වලින් fe80::/10.

බව ping අපි එයට බාධා කරන තුරු ICMPv6 echo ඉල්ලීම් දින නියමයක් නොමැතිව යැවීම දිගටම කරගෙන යන්නේ නැත, අපි සාමාන්‍යයෙන් -c විකල්පය හරහා යැවීමට පැකට් ගණන නියම කරමු. කෙසේ වෙතත්, මෙය බහු විකාශන ICMPv6 echo ඉල්ලීමක් යැවීමේදී ICMPv6 echo පිළිතුරු එකකට වඩා පිළිගැනීමෙන් සහ ප්‍රදර්ශනය කිරීමෙන් වළක්වයි. ඒ වෙනුවට, අපි කොපමණ ICMPv1 echo ඉල්ලීම් හෝ echo පිළිතුරු යැව්වත් හෝ ලැබුනත් තත්පර 6කට පසුව ping සම්පූර්ණ විය යුතු බව සඳහන් කිරීමට -w විකල්පය භාවිත කළා.

අවධානය යොමු කළ යුතු තවත් කරුණක් නම් (DUP!) දෙවන සහ පසුව පිළිතුරු මත ප්රතිදානය. මෙම පැකට් අනුපිටපත් ප්‍රතිචාර ලෙස හඳුනාගෙන ඇත්තේ ඒවාට ප්‍රථමයෙන් යවන ලද තනි ICMPv6 echo ඉල්ලීම්වලට සමාන ICMP අනුක්‍රමික අගයක් ඇති බැවිනි. ඒවා දිස්වන්නේ ICMPv6 බහු විකාශන echo ඉල්ලීමක ප්‍රතිඵලයක් ලෙස තනි තනි තනි ප්‍රතිචාර කිහිපයක් ලැබෙන බැවිනි. සංඛ්‍යාලේඛන සාරාංශයේ අනුපිටපත් ගණන ද දක්වා ඇත.

අතුරුමුහුණත් නිර්වචනය කිරීම - කලාප හැඳුනුම්පත

භාවිතය සඳහා අතුරු මුහුණතක් නිරාවරණය කිරීමට තවත් ක්රමයක් වන්නේ IPv6 ලිපින පරාමිතියක කොටසක් ලෙසය.

ප්‍රතිචාර දක්වන IPv6 ධාරකවල ලිපිනවලට ද උපසර්ගය ඇති ping ප්‍රතිදානයේ මෙයට උදාහරණයක් අපට දැක ගත හැක. %enp3s2උදාහරණයක් ලෙස:

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

මෙම අතුරුමුහුණත් නියම කිරීමේ ක්‍රමය [RFC4007], "IPv6 අර්ථ දක්වන ලද ලිපින ගෘහ නිර්මාණ ශිල්පය" තුළ විධිමත් ලෙස විස්තර කර ඇත. ඒවා සාමාන්‍යයෙන් මෙහෙයුම් පද්ධති අතුරුමුහුණත ලෙස හැඳින්වුවද, ඒවා ඇත්ත වශයෙන්ම වඩා සාමාන්‍ය දෙයක් - "කලාපයක්" හෝ "පථය" ලෙස අර්ථ දක්වයි.

වැඩි සාමාන්‍ය කලාප හෝ විෂය පථ කලාප තිබීමට හේතුව වන්නේ, [RFC4007] හි සඳහන් පරිදි, IPv6 node එකක් එකම නාලිකාවට සම්බන්ධ විවිධ IPv6 අතුරුමුහුණත් කිහිපයක් තිබිය හැකි වීමයි. මෙම අතුරුමුහුණත් එකම කලාපයේ සාමාජිකයින් වේ.

මෙහෙයුම් පද්ධතිය යටතේ කලාපයක් තුළ බහු අතුරු මුහුණත් සමූහගත කිරීමට හැකි විය යුතුය; දැනට මම දන්නේ නෑ මේක Linux යටතේ කරන්න පුලුවන්ද කොහොමද කරන්නේ කියලා.

උපසර්ගය භාවිතා කිරීම %<zone_id>, අපට විධාන රේඛා විකල්පය ඉවත් කළ හැකිය -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 ~]$

සබැඳිය-දේශීය ලිපින ප්‍රතිචාර

මෙම All-nodes multicast ping වෙතින් අපට අද්විතීය ප්‍රතිචාර 6ක් ලැබුණි.

මෙම ප්‍රතිචාර unicast Link-Local IPv6 සත්කාරක ලිපින වලින් පැමිණ ඇත. උදාහරණයක් ලෙස, මෙන්න පළමු පිළිතුර:

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

Unicast Link-Local IPv6 ලිපින සියලුම IPv6-සක්‍රීය අතුරුමුහුණත් මත අවශ්‍ය වේ [RFC4291], "IP අනුවාදය 6 ලිපින ගෘහ නිර්මාණ ශිල්පය". මෙයට හේතුව වන්නේ IPv6 නෝඩයක සෑම විටම ස්වයංක්‍රීයව යුනිකාස්ට් IPv6 ලිපිනයක් තිබීමයි, එය අවම වශයෙන් එහි සෘජු සම්බන්ධිත සබැඳි මත වෙනත් නෝඩ් සමඟ සන්නිවේදනය කිරීමට භාවිතා කළ හැකිය. Link-Local සත්කාරක ලිපින හරහා වෙනත් සත්කාරකවල යෙදුම් සමඟ සන්නිවේදනය කිරීම මෙයට ඇතුළත් වේ.

මෙය IPv6 Neighbour Discovery සහ OSPFv3 වැනි ප්‍රොටෝකෝල සැලසුම් කිරීම සහ ක්‍රියාත්මක කිරීම සරල කරයි. නාලිකාවේ වෙනත් ආධාරක IPv6 යටිතල ව්‍යුහයක් අවශ්‍ය නොවී නාලිකාව හරහා සන්නිවේදනය කිරීමට සත්කාරකවල අවසාන පරිශීලක යෙදුම්වලටද එය ඉඩ දෙයි. සම්බන්ධිත IPv6 ධාරක අතර සෘජු සන්නිවේදනය සඳහා IPv6 රවුටරයක් ​​හෝ DHCPv6 සේවාදායකයක් අවශ්‍ය නොවේ.

සබැඳි-දේශීය ලිපින 10-bit උපසර්ගයකින් ආරම්භ වේ fe80, පසුව බිටු 54 ක් සහ පසුව 64-බිට් අතුරුමුහුණත් හඳුනාගැනීමක් (IID). ඉහත පළමු පිළිතුරේ 2392:6213:a15b:66ff 64-bit IID වේ.

Looped Multicast

පෙරනිමියෙන්, බහු විකාශන පැකට් ඒවා යැවූ නෝඩයට අභ්‍යන්තරව ආපසු ලබා දෙනු ලැබේ. IPv6 සහ IPv4 ලිපින යන දෙකටම මෙය සිදු වේ.

මෙම පෙරනිමි හැසිරීමට හේතුව වන්නේ බහු විකාශන පැකට් යවන විට, යැවීමේ ධාරකයේම මෙන්ම ජාලයේ කොතැනක හෝ ක්‍රියාත්මක වන සවන් දෙන දේශීය බහු විකාශන යෙදුමක් ද තිබිය හැක. මෙම දේශීය යෙදුමට බහු විකාශන පැකට් ද ලැබිය යුතුය.

අපගේ 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!)
...

පළමු සහ වේගවත්ම ප්‍රතිචාරය (0,106 ms ට සාපේක්ෂව 0,453 ms) අතුරු මුහුණතෙහිම වින්‍යාස කර ඇති Link-Local ලිපිනයෙන් පැමිණේ. enp3s2.

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

උපයෝගීතාව ping පරාමිතිය භාවිතයෙන් දේශීය බහු විකාශන ප්‍රතිපෝෂණය යටපත් කිරීමට ක්‍රමයක් සපයයි -L. අපි මෙම ධජය සමඟ සියලුම-නෝඩ් බහු විකාශන පිං එකක් යවන්නේ නම්, ප්‍රතිචාර දුරස්ථ නෝඩ් වලට සීමා වේ. යැවීමේ අතුරු මුහුණතේ Link-Local ලිපිනයෙන් අපට ප්‍රතිචාරයක් නොලැබේ.

[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-දේශීය ලිපින

ඔබ අනුමාන කළ හැකි පරිදි, unicast Link-Local ලිපින තමන් වෙත ළඟා වීමට භාවිතා කළ යුතු අතුරු මුහුණත සඳහන් කිරීමට ප්‍රමාණවත් තොරතුරු සපයන්නේ නැත. All-nodes multicast ping මෙන්ම, අපි විධාන රේඛා පරාමිතියක් ලෙස අතුරු මුහුණත සඳහන් කළ යුතුය. ping හෝ සබැඳි-දේශීය ලිපින පිං කිරීමේදී ලිපිනය සහිත කලාප හැඳුනුම්පත.

මෙම අවස්ථාව අපට භාවිතා කළ හැකිය -cයවන ලද සහ ලැබුණු පැකට් සහ ප්‍රතිචාර ගණන සීමා කිරීමට ping, අපි 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 (සියල්ල) අනෙකුත් IPv6 ලිපින?

මෙම ලිපියෙන්, සියලුම නෝඩ් බහු විකාශන IPv6 ලිපිනයක් භාවිතයෙන් නාලිකාවක සියලුම IPv6 නෝඩ් ping කරන්නේ කෙසේදැයි අපි දුටුවෙමු. ff02::1. සියලුම නෝඩ් බහු විකාශන IPv6 ලිපිනයක් සමඟ කුමන අතුරු මුහුණත භාවිතා කළ යුතුද යන්න සඳහන් කරන්නේ කෙසේදැයි අපි දුටුවෙමු, මන්ද ලිපිනයටම මෙම තොරතුරු සැපයිය නොහැක. අපි විධාන රේඛා විකල්පය භාවිතා කළෙමු ping, හෝ උපසර්ගය භාවිතා කරමින් අතුරු මුහුණත සඳහන් කර ඇත %<zone_id>.

ඉන්පසුව අපි unicast Link-Local ලිපින ගැන ඉගෙන ගත්තෙමු, එනම් all-nodes multicast ICMPv6 echo ඉල්ලීම් වලට ප්‍රතිචාර දැක්වීමට භාවිතා කරන ලිපින වේ.

බහු විකාශන පැකට් පෙරනිමියෙන් යැවීමේ නෝඩයට ආපසු ලබා දෙන ආකාරය සහ උපයෝගීතාව සඳහා මෙය අක්‍රිය කරන්නේ කෙසේදැයි අපි දුටුවෙමු. ping.

අවසාන වශයෙන්, අපි උපසර්ගය භාවිතා කර තනි Link-Local ලිපිනයක් ping කළෙමු %<zone_id>, Link-Local ලිපින ද පිටතට යන අතුරු මුහුණත පිළිබඳ තොරතුරු සපයන්නේ නැති නිසා.

ඉතින් අනෙක් සියලුම නෝඩ් ping කිරීම සහ ඒවායේ ගෝලීය යුනිකාස්ට් ලිපින (GUAs) (එනම් අන්තර්ජාලයේ ඔවුන්ගේ පොදු ලිපින) හෝ ඔවුන්ගේ අනන්‍ය දේශීය unicast ලිපින (ULAs) ලබා ගැනීම ගැන කුමක් කිව හැකිද? අපි මේ ගැන ඊළඟ බ්ලොග් පෝස්ට් එකෙන් බලමු.

එපමණයි.

ඔබට අපගේ පාඨමාලාව ගැන වැඩි විස්තර මෙතැනින් දැනගත හැක විවෘත දින සටහන්.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න