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

Məzənnə ilə yeni axının başlamasına bir neçə gün qalır "Şəbəkə Mühəndisi" OTUS-dan. Bununla əlaqədar olaraq mövzu ilə bağlı 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 problemlərini həll etmək üçün məsləhətlər və fəndlər haqqında bir sıra blog yazıları (ICMPv6 Echo Request/Echo Reply)

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, linkdəki bütün IPv6 qovşaqlarına ping atmaqdır.

IPv6 birdən çox kommunikasiyanın bütün növləri üçün multicast ünvanlarından istifadə edir. Yayım (və ya yayım) IPv6 ünvanları yoxdur. Bu, IPv6-nı IPv4-dən fərqləndirir, burada bir neçə növ yayım ünvanları var, məsələn, “məhdud yayım” ünvanı 255.255.255.255 [RFC1122].

Bununla belə, “bütün qovşaqların çox yayımlı” IPv6 ünvanı var, ona görə də biz bundan 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ə cəmləş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 aktivdir. ).

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

Əlavə 2 multicast qrupunun sahəsini müəyyənləşdirir. Multicast IPv4 ünvanlarından fərqli olaraq, multicast IPv6 ünvanlarının əhatə dairəsi var. Əhatə dairəsi dəyəri şəbəkənin multicast paketinin ötürülməsinə icazə verilən hissəsini göstərir. Paket müəyyən edilmiş əhatə dairəsinin sərhədinə çatdıqdan sonra, Hop Count sahəsinin sıfırdan fərqli olub-olmamasından asılı olmayaraq paket atılmalıdır. Təbii ki, göstərilən multicast qrup sərhədinə çatmazdan əvvəl hop sayı sıfıra çatarsa, o da dərhal sıfırlanır. Budur IPv6 multicast əhatə dairəsinin 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ərə malik IPv6 hostunda ünvan ff02::1 ICMPv6 əks-səda sorğularının hansı interfeysə göndəriləcəyini təyin edə biləcəyiniz və ya gələn zaman ICMPv6 əks-səda cavablarını alacağını gözlədiyiniz heç bir şey 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ə, biz bütün IPv6 qovşaqlarını bir keçiddə pingləyərkən, bir şəkildə yardım proqramına da bildirməliyik ping IPv6 üçün hansı interfeysdən istifadə ediləcək.

İ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ı −-dir ff02::1 - ICMPv6 əks-səda sorğusu və əks-səda cavab paketlərinin hansı interfeysin 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 ünvan məkanı üçün istifadə olunacaq interfeysi necə təyin edək?

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 Link-Local IPv6 node ünvanlarından gəldi fe80::/10.

O ping biz onu kəsənə qədər qeyri-müəyyən müddətə ICMPv6 əks-səda sorğularını göndərməyə davam etmir, biz adətən -c seçimi ilə 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ə, nə qədər ICMPv1 əks-səda sorğusu və ya əks-səda cavabının göndərilməsindən və ya qəbulundan asılı olmayaraq, pingin 6 saniyədən sonra tamamlanacağını müəyyən etmək üçün -w seçimindən istifadə etdik.

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

İnterfeyslərin müəyyənləşdirilməsi - 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 Müəyyən edilmiş Ünvan Arxitekturasında" təsvir edilmişdir. Onlar adətən əməliyyat sistemi interfeysi adlansalar da, ə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 edildiyi kimi, bir IPv6 qovşağında eyni kanala qoşulmuş bir neçə fərqli IPv6 interfeysi 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 seçimini 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şaqlardan ibarət multicast ping-dən cəmi 6 unikal cavab aldıq.

Bu cavablar unicast Link-Local IPv6 host ü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ında”. Bunun səbəbi odur ki, bir IPv6 qovşağı həmişə avtomatik olaraq unicast IPv6 ünvanına malikdir və o, ən azı birbaşa əlaqəli bağlantılarındakı digər qovşaqlarla əlaqə yaratmaq üçün istifadə edə bilər. Buraya Link-Local host ünvanları vasitəsilə digər hostlardakı proqramlarla ünsiyyət daxildir.

Bu, IPv6 Neighbor Discovery və OSPFv3 kimi protokolların dizaynını və tətbiqini asanlaşdırır. O, həmçinin hostlardakı son istifadəçi proqramlarına kanalda hər hansı digər dəstəkləyici IPv6 infrastrukturunu tələb etmədən kanal üzərindən əlaqə saxlamağa imkan verir. Qoşulmuş IPv6 hostları arasında birbaşa əlaqə əlaqədə 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-bit 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 defolt davranışın səbəbi odur ki, multicast paketləri göndərildikdə, həm də göndərən hostun özündə, eləcə də şəbəkənin 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,106 ms ilə müqayisədə 0,453 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 -L. Bu bayraqla bütün qovşaqlara multicast ping göndərsək, cavablar uzaq qovşaqlarla məhdudlaşır. Biz göndərən interfeysin 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ı da onlara çatmaq üçün hansı interfeysdən istifadə ediləcəyini göstərmək üçün kifayət qədər məlumat vermir. Bütün qovşaqların multicast pingində 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şaqlı 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::1. Bü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 seçimindən istifadə etdik ping, və ya şəkilçidən istifadə edərək interfeysi təyin edin %<zone_id>.

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

Biz həmçinin multicast paketlərin defolt olaraq göndərmə qovşağına 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ın özləri də gedən interfeys 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əki ictimai ünvanlarını) və ya unikal yerli unicast ünvanlarını (ULA) əldə etmək haqqında nə demək olar? Növbəti blog yazısında buna baxacağıq.

Bütün bunlar.

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

Mənbə: www.habr.com

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