Kanaldagi barcha IPv6 tugunlariga ping yuborish

Kurs bo'yicha yangi oqim boshlanishiga bir necha kun qoldi "Tarmoq muhandisi" OTUSdan. Shu munosabat bilan sizlarga mavzu bo'yicha foydali materialning tarjimasini ulashmoqchimiz.

Kanaldagi barcha IPv6 tugunlariga ping yuborish

IPv6 ping muammolarini hal qilish bo'yicha maslahatlar va fokuslar bo'yicha bir qator blog postlari (ICMPv6 Echo Request/Echo Reply)

E'tibor bering, men Linuxdan (ayniqsa Fedora 31) foydalanmoqdaman, ammo boshqa operatsion tizimlar uchun ping buyrug'i sintaksisi juda o'xshash bo'lishi kerak.

Kanaldagi barcha IPv6 tugunlariga ping yuborish

Birinchi va eng oddiy maslahat - havoladagi barcha IPv6 tugunlariga ping yuborish.

IPv6 barcha turdagi birdan ko'p aloqa uchun multicast manzillardan foydalanadi. Translyatsiya (yoki translyatsiya) IPv6 manzillari mavjud emas. Bu IPv6 ni IPv4 dan ajratib turadi, bu erda bir necha turdagi translyatsiya manzillari mavjud, masalan, "cheklangan eshittirish" manzili 255.255.255.255 [RFC1122].

Biroq, "barcha tugunlar multicast" IPv6 manzili mavjud, shuning uchun biz havoladagi barcha IPv6 tugunlariga ping yuborish uchun foydalanamiz. (“Eshittirish” manzili aslida barcha tugunlarni o‘z ichiga olgan multicast guruhi bo‘lgan maxsus nomlangan ko‘p tarmoqli manzildir. E’tibor bering, masalan, “guruh” yoki multicast manzil biti Ethernet eshittirish manzillarida havola qatlamida yoqilgan. ).

Kanal uchun barcha tugunli multicast IPv6 manzili: ff02::1. ff multicast IPv6 manzilini bildiradi. Keyingi 0 bayroqning o'rnatilmagan bitlari bo'lgan qismidir.

yanada 2 multicast guruhining maydonini belgilaydi. Ko'p tarmoqli IPv4 manzillaridan farqli o'laroq, ko'p tarmoqli IPv6 manzillari qamrovga ega. Scope qiymati tarmoqning multicast paketni yo'naltirishga ruxsat berilgan qismini ko'rsatadi. Paket belgilangan doira chegarasiga yetib borgach, uning Hop Count maydoni nolga teng bo'lishidan qat'i nazar, paketni tashlab yuborish kerak. Albatta, agar ko'p tarmoqli guruh chegarasiga yetmasdan hop soni nolga yetsa, u ham darhol qayta tiklanadi. Bu yerda IPv6 multicast qamrovining to'liq ro'yxati.

Nihoyat, ::1 barcha tugunli multicast guruhini belgilaydi.

Manzil haqida ff02::1 Shuni ta'kidlash kerakki, bu noaniq. Router yoki multihomed host kabi bir nechta interfeysga ega IPv6 xostida manzil ff02::1 ICMPv6 echo so'rovlarini qaysi interfeysga yuborishni belgilashingiz yoki ular kelganida ICMPv6 echo javoblarini olishni kutishingiz mumkin bo'lgan hech narsa yo'q. ff02::1 amal qiladi va ko'p interfeysli tugunga biriktirilgan har qanday interfeys va kanallarda ishlatilishi mumkin.

Shunday qilib, biz havoladagi barcha IPv6 tugunlariga ping yuborganimizda, qandaydir tarzda yordamchi dasturga ham aytishimiz kerak ping IPv6 uchun qaysi interfeysdan foydalanish kerak.

Interfeyslarni aniqlash - Buyruqlar qatori opsiyasi

Yuqorida aytib o'tganimizdek, biz foydalanmoqchi bo'lgan barcha tugunli multicast manzili - ff02::1 - ICMPv6 echo so'rovi va echo javob paketlarini yuborish va qabul qilish uchun qaysi interfeys haqida hech qanday ma'lumot bermaydi.

Shunday qilib, biz multicast manzil maydoni yoki unicast Link-Local manzil maydoni uchun ishlatiladigan interfeysni qanday belgilashimiz mumkin?

Birinchi va eng aniq yo'l - uni biz foydalanayotgan dasturga parametr sifatida taqdim etishdir.

Foydali dastur uchun ping biz uni variant orqali taqdim etamiz -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 ~]$

Ushbu barcha tugunli multicast ping yordamida biz 6 ta IPv6 tugunlaridan javob oldik. Javoblar prefiksdan boshlab Link-Local IPv6 tugun manzillaridan keldi fe80::/10.

ekan ping biz uni to'xtatmagunimizcha ICMPv6 echo so'rovlarini cheksiz muddatga yuborishni davom ettirmaydi, biz odatda -c opsiyasi orqali yuborish uchun paketlar sonini belgilaymiz. Biroq, bu ko'p tarmoqli ICMPv6 echo so'rovini yuborishda pingning bir nechta ICMPv6 aks-sado javobini qabul qilishiga va ko'rsatishiga to'sqinlik qiladi. Buning o'rniga, qancha ICMPv1 echo so'rovlari yoki aks-sado javoblari yuborilgan yoki qabul qilingan bo'lishidan qat'i nazar, ping 6 soniyadan keyin tugashini belgilash uchun -w opsiyasidan foydalandik.

Yana bir narsaga e'tibor berish kerak (DUP!) ikkinchi va keyingi javoblarga chiqish. Ushbu paketlar takroriy javoblar sifatida aniqlanadi, chunki ular birinchi navbatda yuborilgan individual ICMPv6 echo so'rovlari bilan bir xil ICMP ketma-ketlik qiymatiga ega. Ular paydo bo'ladi, chunki ICMPv6 multicast echo so'rovi bir nechta individual unicast javoblarga olib keladi. Dublikatlar soni statistik xulosada ham ko'rsatilgan.

Interfeyslarni aniqlash - zona identifikatori

Foydalanish uchun interfeysni ochishning yana bir usuli IPv6 manzili parametrining bir qismidir.

Bunga misolni ping chiqishida ko'rishimiz mumkin, bu erda javob beruvchi IPv6 xostlarining manzillari ham qo'shimchaga ega. %enp3s2, masalan:

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

Interfeyslarni belgilashning ushbu usuli rasmiy ravishda [RFC4007], "IPv6 aniqlangan manzil arxitekturasi" da tasvirlangan. Ular odatda operatsion tizim interfeysi deb ataladigan bo'lsa-da, ular aslida umumiyroq narsani belgilaydi - "mintaqa" yoki "ko'lam".

Ko'proq umumiy zonalar yoki qamrov zonalariga ega bo'lish sababi, [RFC4007] da aytib o'tilganidek, IPv6 tugunida bir xil kanalga ulangan bir nechta turli IPv6 interfeyslari bo'lishi mumkin. Ushbu interfeyslar bir zonaning a'zolaridir.

Operatsion tizim ostidagi zonada bir nechta interfeyslarni guruhlash imkoniyati bo'lishi kerak; Hozirda bu Linux ostida mumkinmi yoki buni qanday qilishni bilmayman.

Suffiks yordamida %<zone_id>, biz buyruq qatori variantini olib tashlashimiz mumkin -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 ~]$

Havola-Mahalliy manzil javoblari

Ushbu barcha tugunli multicast pingdan biz jami 6 ta noyob javob oldik.

Bu javoblar unicast Link-Local IPv6 xost manzillaridan kelgan. Misol uchun, bu erda birinchi javob:

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

Unicast Link-Local IPv6 manzillari barcha IPv6 yoqilgan interfeyslarda talab qilinadi [RFC4291], “IP 6-versiya manzillar arxitekturasi”. Buning sababi shundaki, IPv6 tugunida har doim avtomatik ravishda unicast IPv6 manzili mavjud bo'lib, u hech bo'lmaganda to'g'ridan-to'g'ri bog'langan havolalaridagi boshqa tugunlar bilan aloqa qilish uchun foydalanishi mumkin. Bunga Link-Local xost manzillari orqali boshqa xostlardagi ilovalar bilan aloqa qilish kiradi.

Bu IPv6 Neighbor Discovery va OSPFv3 kabi protokollarni loyihalash va amalga oshirishni soddalashtiradi. Shuningdek, u xostlardagi oxirgi foydalanuvchi ilovalariga kanalda boshqa qoʻllab-quvvatlovchi IPv6 infratuzilmasini talab qilmasdan kanal orqali muloqot qilish imkonini beradi. Ulangan IPv6 xostlari o'rtasidagi to'g'ridan-to'g'ri aloqa ulanishda IPv6 router yoki DHCPv6 serverini talab qilmaydi.

Bog'lanish-Mahalliy manzillar 10 bitli prefiks bilan boshlanadi fe80, keyin 54 nol bit va keyin 64 bitli interfeys identifikatori (IID). Yuqoridagi birinchi javobda 2392:6213:a15b:66ff 64 bitli IID hisoblanadi.

Looped Multicast

Odatiy bo'lib, multicast paketlar ularni yuborgan tugunga ichki ravishda qaytariladi. Bu IPv6 va IPv4 manzillari uchun ham sodir bo'ladi.

Ushbu standart xatti-harakatning sababi shundaki, multicast paketlar yuborilganda, jo'natuvchi xostning o'zida, shuningdek, tarmoqning biron bir joyida ishlaydigan tinglovchi mahalliy multicast ilovasi ham bo'lishi mumkin. Ushbu mahalliy ilova multicast paketlarni ham qabul qilishi kerak.

Ushbu ko'p tarmoqli mahalliy tsiklni ping chiqishida ko'rishimiz mumkin:

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

Birinchi va eng tezkor javob (0,106 ms ga nisbatan 0,453 ms) interfeysning o'zida sozlangan Link-Local manzilidan keladi. enp3s2.

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

Qulaylik ping parametr yordamida mahalliy multicast fikr-mulohazalarini bostirish usulini taqdim etadi -L. Agar biz ushbu bayroq bilan barcha tugunlarga multicast ping yuborsak, javoblar uzoq tugunlar bilan chegaralanadi. Biz jo'natuvchi interfeysning Link-Mahalliy manzilidan javob olmaymiz.

[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 havolasi - mahalliy manzillar

Siz taxmin qilganingizdek, unicast Link-Local manzillari ham ularga erishish uchun qaysi interfeysdan foydalanishni ko'rsatish uchun etarli ma'lumot bermaydi. Barcha tugunli multicast pingda bo'lgani kabi, interfeysni buyruq qatori parametri sifatida ham ko'rsatishimiz kerak ping yoki bog'lanish-Mahalliy manzillarni pinglashda manzilli zona identifikatori.

Bu vaqtdan foydalanishimiz mumkin -cyuborilgan va qabul qilingan paketlar va javoblar sonini cheklash ping, chunki biz unicast pingni amalga oshirmoqdamiz.

[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 (barcha) boshqa IPv6 manzillari?

Ushbu maqolada biz barcha tugunli multicast IPv6 manzilidan foydalangan holda kanaldagi barcha IPv6 tugunlarini qanday pinglashni ko'rib chiqdik. ff02::1. Shuningdek, biz barcha tugunli multicast IPv6 manzili bilan qaysi interfeysdan foydalanishni qanday belgilashni ko'rdik, chunki manzilning o'zi bu ma'lumotni taqdim eta olmaydi. Biz buyruq qatori variantidan foydalanganmiz ping, yoki qo'shimcha yordamida interfeysni ko'rsatdi %<zone_id>.

Keyin biz unicast Link-Local manzillari haqida bilib oldik, bu manzillar barcha tugunli multicast ICMPv6 echo so'rovlariga javob berish uchun ishlatiladi.

Shuningdek, biz ko'p tarmoqli paketlar sukut bo'yicha jo'natuvchi tugunga qanday qaytarilishini va yordam dasturi uchun buni qanday o'chirishni ko'rdik. ping.

Nihoyat, biz qo'shimcha yordamida bitta bog'lanish-Mahalliy manzilga ping yubordik %<zone_id>, chunki Link-Local manzillarining o'zi ham chiquvchi interfeys haqida ma'lumot bermaydi.

Xo'sh, boshqa barcha tugunlarni ping qilish va ularning global unicast manzillarini (GUA) (ya'ni Internetdagi umumiy manzillarini) yoki noyob mahalliy unicast manzillarini (ULA) olish haqida nima deyish mumkin? Buni keyingi blog postida ko'rib chiqamiz.

Hammasi shu.

Kursimiz haqida ko'proq ma'lumotni quyidagi manzilda olishingiz mumkin ochiq kun eslatmalari.

Manba: www.habr.com

a Izoh qo'shish