Kanaldakı bütün IPv6 qovşaqlarına ping göndərin

Yeni kurs axınının başlamasına sayılı günlər qalıb. "Şəbəkə Mühəndisi" OTUS-dan. Bununla əlaqədar olaraq, bu mövzuda bəzi faydalı materialın tərcüməsini sizinlə bölüşmək istərdik.

Kanaldakı bütün IPv6 qovşaqlarına ping göndərin

IPv6 ping (ICMPv6 Echo Request/Echo Reply) problemlərini həll etmək üçün məsləhətlər və fəndlər haqqında bir sıra bloq yazıları.

Nəzərə alın ki, mən Linux-dan (xüsusilə Fedora 31) istifadə edirəm, lakin digər əməliyyat sistemləri üçün ping əmri sintaksisi çox oxşar olmalıdır.

Kanaldakı bütün IPv6 qovşaqlarına ping göndərin

İlk və ən sadə məsləhət kanaldakı bütün IPv6 qovşaqlarına ping atmaqdır.

IPv6 bütün növ birdən çox rabitə üçün multicast ünvanlarından istifadə edir. Yayım IPv6 ünvanları yoxdur. Bu, IPv6-nı 255.255.255.255 [RFC1122] kimi "məhdud yayım" ünvanı kimi bir neçə növ yayım ünvanına malik olan IPv4-dən fərqləndirir.

Bununla belə, "bütün qovşaqların multicast" IPv6 ünvanı var, ona görə də biz ondan linkdəki bütün IPv6 qovşaqlarına ping etmək üçün istifadə edəcəyik. ("Yayım" ünvanı əslində sadəcə olaraq bütün qovşaqları özündə birləşdirən multicast qrupu olan xüsusi adlandırılmış multicast ünvandır. Qeyd edək ki, məsələn, "qrup" və ya multicast ünvan biti keçid qatında Ethernet yayım ünvanlarında aktivləşdirilib.)

Kanal üçün bütün qovşaqların multicast IPv6 ünvanı: ff02::1. ff multicast IPv6 ünvanını bildirir. Aşağıdakı 0 bayrağın təyin olunmamış bitləri olan hissəsidir.

Əlavə 2 Multicast qrupunun əhatə dairəsini müəyyən edir. IPv4 multicast ünvanlarından fərqli olaraq, IPv6 multicast ünvanlarının əhatə dairəsi var. Əhatə dairəsi dəyəri şəbəkənin multicast paketinin yönləndirilməsinə icazə verilən hissəsini müəyyən edir. Paket müəyyən edilmiş əhatə dairəsinin sərhədinə çatdıqdan sonra onun Hop Count sahəsinin sıfırdan fərqli olub-olmamasından asılı olmayaraq atılmalıdır. Əlbəttə ki, Hop Count göstərilən multicast qrup sərhədinə çatmazdan əvvəl sıfıra çatarsa, o da dərhal ləğv edilir. Budur IPv6 multicast əhatə dairələrinin tam siyahısı.

Nəhayət, ::1 Bütün qovşaqlardan ibarət multicast qrupunu müəyyən edir.

Ünvan haqqında ff02::1 Qeyd etmək lazımdır ki, birmənalı deyil. Router və ya multihomed host kimi çoxsaylı interfeysləri olan IPv6 node-da ünvan ff02::1 ICMPv6 əks-səda sorğularının hansı interfeysə göndəriləcəyini və ya gələn zaman ICMPv6 əks-səda cavablarının alınacağını müəyyən edəcək heç nə yoxdur. ff02::1 etibarlıdır və multi-interfeys qovşağına qoşulmuş istənilən interfeys və kanallarda istifadə oluna bilər.

Beləliklə, kanaldakı bütün IPv6 qovşaqlarını pingləyərkən, biz də bir şəkildə yardım proqramına bildirməliyik ping IPv6 üçün hansı interfeysdən istifadə etmək lazımdır.

İnterfeyslərin müəyyən edilməsi - Komanda xətti seçimi

Artıq gördüyümüz kimi, istifadə etmək istədiyimiz bütün qovşaqların multicast ünvanıdır ff02::1 — ICMPv6 əks-səda sorğusu və əks-səda cavab paketlərinin hansı interfeysdə göndərilməsi və qəbul edilməsi ilə bağlı heç bir məlumat vermir.

Beləliklə, biz multicast ünvan məkanı və ya unicast Link-Local ünvanları üçün istifadə ediləcək interfeysi necə təyin edə bilərik?

Birinci və ən bariz yol onu istifadə etdiyimiz proqrama parametr kimi təqdim etməkdir.

Kommunal üçün ping opsion vasitəsilə təmin edirik -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 ~]$

Bu bütün qovşaqların multicast pingindən istifadə edərək biz 6 IPv6 qovşağından cavab aldıq. Cavablar prefiksdən başlayaraq node-un Link-Local IPv6 ünvanlarından gəldi fe80::/10.

O ping Pinqin ICMPv6 əks-səda sorğularını biz onu dayandırana qədər qeyri-müəyyən müddətə göndərməyə davam etməsinin qarşısını almaq üçün biz adətən -c seçimindən istifadə edərək göndəriləcək paketlərin sayını təyin edirik. Bununla belə, bu, həmçinin multicast ICMPv6 əks-səda sorğusu göndərərkən ping-in birdən çox ICMPv6 əks-səda cavabını qəbul etməsinə və göstərməsinə mane olur. Bunun əvəzinə, neçə ICMPv6 əks-səda sorğusunun və ya əks-səda cavabının göndərilməsindən və ya qəbulundan asılı olmayaraq, pingin 1 saniyədən sonra dayandırılacağını müəyyən etmək üçün -w seçimindən istifadə etdik.

Diqqət yetirməli başqa bir şey (DUP!) ikinci və sonrakı cavablar üzrə çıxış. Bu paketlər dublikat cavablar kimi müəyyən edilir, çünki onlar əvvəlcə göndərilmiş fərdi ICMPv6 əks-səda sorğuları ilə eyni ICMP ardıcıllıq dəyərinə malikdirlər. Onlar multicast ICMPv6 əks-səda sorğusu çoxsaylı fərdi unicast cavabları ilə nəticələndiyi üçün baş verir. Dublikatların sayı da statistika xülasəsində göstərilir.

Interface Definition - Zona ID

İstifadə üçün interfeysi ifşa etməyin başqa bir yolu IPv6 ünvanı parametrinin bir hissəsidir.

Bunun bir nümunəsini cavab verən IPv6 hostlarının ünvanlarında şəkilçinin olduğu ping çıxışında görə bilərik. %enp3s2, məsələn:

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

İnterfeyslərin dəqiqləşdirilməsinin bu üsulu rəsmi olaraq [RFC4007], "IPv6 Ünvanına Xüsusi Arxitektura" bölməsində təsvir edilmişdir. Ümumiyyətlə əməliyyat sistemi interfeysi adlandırılsa da, onlar əslində daha ümumi bir şey təyin edirlər - "zona" və ya "əhatə dairəsi".

Daha ümumi zonaların və ya əhatə zonalarının olmasının səbəbi, [RFC4007]-də qeyd olunduğu kimi, IPv6 qovşağında eyni keçidə qoşulmuş çoxsaylı müxtəlif IPv6 interfeysləri ola bilər. Bu interfeyslər eyni zonanın üzvləridir.

Əməliyyat sistemi altında bir zona daxilində bir neçə interfeysi qruplaşdırmaq mümkün olmalıdır; Hazırda bunun Linux altında mümkün olub-olmadığını və ya bunu necə edəcəyimi bilmirəm.

şəkilçidən istifadə etməklə %<zone_id>, biz komanda xətti parametrini silə bilərik -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-Yerli Ünvan Cavabları

Bu bütün qovşaqların multicast pingindən cəmi 6 unikal cavab aldıq.

Bu cavablar IPv6 qovşaqlarının unicast Link-Yerli ünvanlarından gəldi. Məsələn, ilk cavab budur:

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

Unicast Link-Yerli IPv6 ünvanları bütün IPv6 effektiv interfeyslərdə tələb olunur [RFC4291], "IP Version 6 Ünvanlama Arxitekturası." Bunun səbəbi, bir IPv6 qovşağının həmişə avtomatik olaraq birbaşa əlaqəli keçidləri üzərindən digər qovşaqlarla əlaqə saxlamaq üçün istifadə edə biləcəyi unicast IPv6 ünvanına malik olmasıdır. Buraya hostların Link-Yerli ünvanları vasitəsilə digər hostlardakı proqramlarla əlaqə daxildir.

Bu, IPv6 Neighbor Discovery və OSPFv3 kimi protokolların işlənib hazırlanmasını və həyata keçirilməsini asanlaşdırır. O, həmçinin hostlardakı son istifadəçi proqramlarına linkdə hər hansı digər IPv6-ya imkan verən infrastruktur tələb etmədən məlumat mübadiləsinə imkan verir. Qoşulmuş IPv6 hostları arasında birbaşa əlaqə IPv6 marşrutlaşdırıcısı və ya DHCPv6 serverini tələb etmir.

Link-Yerli ünvanlar 10 bitlik prefikslə başlayır fe80, ardınca 54 sıfır bit və sonra 64 bitlik interfeys identifikatoru (IID). Yuxarıdakı ilk cavabda, 2392:6213:a15b:66ff — 64 bitlik IID-dir.

Looped Multicast

Varsayılan olaraq, multicast paketləri onları göndərən qovşaqda daxili olaraq qaytarılır. Bu həm IPv6, həm də IPv4 ünvanlanması üçün baş verir.

Bu standart davranışın səbəbi odur ki, multicast paketləri göndərilərkən, həm də göndərən hostun özündə, eləcə də şəbəkənin başqa bir yerində işləyən dinləyən yerli multicast proqramı ola bilər. Bu yerli proqram həmçinin multicast paketləri qəbul etməlidir.

Ping çıxışımızda bu multicast yerli loopu görə bilərik:

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

İlk və ən sürətli cavab (0,453 ms ilə müqayisədə 0,106 ms) interfeysin özündə konfiqurasiya edilmiş Link-Local ünvanından gəlir. enp3s2.

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

Kommunal ping parametrdən istifadə edərək yerli multicast rəyini yatırmaq üçün bir yol təqdim edir -LBu bayraqla bütün qovşaqlara multicast ping göndərsək, cavablar uzaq qovşaqlarla məhdudlaşır. Göndərənin interfeysinin Link-Yerli ünvanından cavab almırıq.

[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-Yerli Ünvanlar

Təxmin etdiyiniz kimi, unicast Link-Local ünvanları onlara çatmaq üçün hansı interfeysdən istifadə edəcəyinizi müəyyən etmək üçün kifayət qədər məlumat vermir. Bütün node multicast ping-də olduğu kimi, biz də interfeysi komanda xətti parametri kimi təyin etməliyik. ping və ya Link-Yerli ünvanları pingləyərkən ünvanı olan zona identifikatoru.

Bu dəfə istifadə edə bilərik -cgöndərilən və qəbul edilən paketlərin və cavabların sayını məhdudlaşdırmaq ping, çünki biz unicast ping həyata keçiririk.

[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 (bütün) digər IPv6 ünvanları?

Bu yazıda biz bütün qovşaqların multicast IPv6 ünvanından istifadə edərək bir kanaldakı bütün IPv6 qovşaqlarının necə ping edilməsini gördük. ff02::1Bütün qovşaqlı multicast IPv6 ünvanı ilə hansı interfeysdən istifadə ediləcəyini necə təyin edəcəyimizi də gördük, çünki ünvanın özü bu məlumatı təmin edə bilməz. Biz ya komanda xətti parametrindən istifadə etdik ping, və ya interfeysi şəkilçi vasitəsilə təyin edin %<zone_id>.

Daha sonra biz bütün qovşaqların multicast ICMPv6 echo sorğularına cavab vermək üçün istifadə olunan ünvanlar olan unicast Link-Local ünvanları haqqında öyrəndik.

Biz həmçinin multicast paketlərin defolt olaraq göndərən hosta necə qaytarıldığını və yardım proqramı üçün bunu necə aradan qaldıracağını gördük. ping.

Nəhayət, şəkilçidən istifadə edərək tək Link-Yerli ünvanı pinglədik %<zone_id>, çünki Link-Yerli ünvanlar özləri də çıxış interfeysi haqqında məlumat vermir.

Bəs bütün digər qovşaqlara ping atmaq və onların qlobal unicast ünvanlarını (GUA) (yəni, İnternetdə ictimaiyyət üçün açıq olan ünvanlarını) və ya unikal yerli unicast ünvanlarını (ULA) əldə etmək haqqında nə demək olar? Bunu növbəti bloq yazımızda işıqlandıracağıq.

Bütün bunlar.

Kursumuz haqqında ətraflı məlumatı buradan əldə edə bilərsiniz açıq qapı günü qeydləri.

Mənbə: www.habr.com

Добавить комментарий