Арнадағы барлық IPv6 түйіндерін пингтеу

Темп бойынша жаңа ағынның басталуына бірнеше күн қалды «Желі инженері» OTUS компаниясынан. Осыған орай, біз сіздермен тақырып бойынша пайдалы материалдың аудармасымен бөліскіміз келеді.

Арнадағы барлық IPv6 түйіндерін пингтеу

IPv6 пинг мәселелерін шешуге арналған кеңестер мен амалдар бойынша блог жазбаларының сериясы (ICMPv6 жаңғырық сұрауы/жаңғырық жауабы)

Мен Linux жүйесін (әсіресе Fedora 31) пайдаланып жатқанымды ескеріңіз, бірақ басқа операциялық жүйелер үшін пинг пәрменінің синтаксисі өте ұқсас болуы керек деп үміттенемін.

Арнадағы барлық IPv6 түйіндерін пингтеу

Бірінші және қарапайым кеңес - сілтемедегі барлық IPv6 түйіндерін пингтеу.

IPv6 бір-көп байланыстардың барлық түрлері үшін мультикаст мекенжайларын пайдаланады. Таратылатын (немесе таратылатын) IPv6 мекенжайлары жоқ. Бұл IPv6-ны IPv4-тен ажыратады, мұнда таратылатын мекенжайлардың бірнеше түрі бар, мысалы, 255.255.255.255 [RFC1122] «шектелген таратылым» мекенжайы.

Дегенмен, «барлық түйіндердің мультикаст» IPv6 мекенжайы бар, сондықтан біз оны сілтемедегі барлық IPv6 түйіндерін пингтеу үшін қолданамыз. («Хабар тарату» мекенжайы шын мәнінде барлық түйіндерді қамтитын көп тарату тобы болып табылатын арнайы аталған мультикаст мекенжайы болып табылады. Мысалы, «топ» немесе көп тарату мекенжай биті Ethernet тарату мекенжайларында сілтеме деңгейінде қосылғанын ескеріңіз. ).

Арнаға арналған барлық түйіндердің көп тарату IPv6 мекенжайы: ff02::1. ff мультикаст IPv6 мекенжайын білдіреді. Келесі 0 - орнатылмаған биттері бар жалаудың бөлігі.

одан әрі 2 мультикаст тобының аумағын анықтайды. Көп тарату IPv4 мекенжайларынан айырмашылығы, көп тарату IPv6 мекенжайларының қолдану аясы бар. Ауқым мәні мультикаст пакетін қайта жіберуге рұқсат етілген желінің бөлігін көрсетеді. Пакет көрсетілген аумақтың шекарасына жеткенде, оның Hop Count өрісі нөлге тең емес екеніне қарамастан, пакетті тастау керек. Әрине, егер секіру саны көрсетілген мультикаст тобының шекарасына жеткенше нөлге жетсе, ол да бірден қалпына келтіріледі. Мұнда IPv6 мультикаст ауқымының толық тізімі берілген.

Соңында, ::1 барлық түйіндердің көп тарату тобын көрсетеді.

Мекенжай туралы ff02::1 Бұл екіұшты екенін атап өткен жөн. Маршрутизатор немесе көп үйді хост сияқты бірнеше интерфейстері бар IPv6 хостында мекенжай ff02::1 ICMPv6 жаңғырық сұраулары қай интерфейске жіберілетінін көрсететін немесе олар келгенде ICMPv6 жаңғырық жауаптарын алуды күтетін ештеңе жоқ. ff02::1 жарамды және көп интерфейсті түйінге қосылған кез келген интерфейстер мен арналарда пайдалануға болады.

Сондықтан сілтемедегі барлық IPv6 түйіндерін пингтеу кезінде біз утилитаға қандай да бір түрде айтуымыз керек ping IPv6 үшін қай интерфейсті пайдалану керек.

Интерфейстерді анықтау - Пәрмен жолы опциясы

Жоғарыда көргеніміздей, біз пайдаланғымыз келетін барлық түйіндердің мультикаст адресі - ff02::1 - ICMPv6 жаңғырық сұрауын және жаңғырық жауап пакеттерін қай интерфейсті жіберуге және қабылдауға қатысты ешқандай ақпарат бермейді.

Сонымен, мультикаст мекенжай кеңістігі немесе 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 ~]$

Осы барлық түйіндерді мультикаст ping көмегімен біз 6 IPv6 түйінінен жауап алдық. Жауаптар префикстен бастап Link-Local IPv6 түйінінің мекенжайларынан келді fe80::/10.

сол ping ICMPv6 жаңғырық сұрауларын біз оны үзгенше шексіз жіберуді жалғастырмайды, әдетте -c опциясы арқылы жіберілетін пакеттер санын көрсетеміз. Дегенмен, бұл сонымен қатар мультикаст ICMPv6 жаңғырық сұрауын жіберу кезінде пингтің бірден көп ICMPv6 жаңғырық жауабын қабылдауына және көрсетуіне жол бермейді. Оның орнына, қанша ICMPv1 жаңғырық сұраулары немесе жаңғырық жауаптары жіберілген немесе қабылданғанына қарамастан, пинг 6 секундтан кейін аяқталуы керектігін көрсету үшін -w опциясын қолдандық.

Тағы бір назар аударатын нәрсе (DUP!) екінші және кейінгі жауаптар бойынша шығару. Бұл пакеттер қайталанатын жауаптар ретінде анықталған, себебі олар бірінші кезекте жіберілген жеке ICMPv6 жаңғырық сұраулары сияқты бірдей ICMP реттілік мәніне ие. Олар ICMPv6 мультикаст жаңғырық сұрауы бірнеше жеке Unicast жауаптарына әкелетіндіктен пайда болады. Көшірмелердің саны статистикалық қорытындыда да көрсетіледі.

Интерфейстерді анықтау - аймақ идентификаторы

Пайдалануға арналған интерфейсті көрсетудің тағы бір жолы IPv6 мекенжай параметрінің бөлігі ретінде.

Біз мұның мысалын пинг шығысында көре аламыз, мұнда жауап беретін IPv6 хосттарының мекенжайларында да жұрнақ бар. %enp3s2, мысалы:

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

Интерфейстерді көрсетудің бұл әдісі [RFC4007], "IPv6 анықталған мекенжай архитектурасында" ресми түрде сипатталған. Олар әдетте операциялық жүйе интерфейсі деп аталса да, олар шын мәнінде жалпы бір нәрсені анықтайды — «аймақ» немесе «аумақ».

Жалпы аймақтардың немесе аумақ аймақтарының болуының себебі [RFC4007] бөлімінде айтылғандай, IPv6 түйінінде бір арнаға қосылған бірнеше түрлі 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 ~]$

Сілтеме-жергілікті мекенжай жауаптары

Осы барлық түйіндердің мультикаст пингінен біз барлығы 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-Жергілікті IPv6 мекенжайлары барлық IPv6 қосылған интерфейстерде қажет [RFC4291], “IP 6-нұсқа адрестеу архитектурасы”. Мұның себебі IPv6 түйінінде әрқашан автоматты түрде біркастты IPv6 мекенжайы болады, ол кем дегенде тікелей қосылған сілтемелеріндегі басқа түйіндермен байланысу үшін пайдалана алады. Бұған Link-Local хост мекенжайлары арқылы басқа хосттардағы қолданбалармен байланысу кіреді.

Бұл IPv6 Neighbor Discovery және OSPFv3 сияқты хаттамалардың дизайны мен орындалуын жеңілдетеді. Ол сондай-ақ хосттардағы соңғы пайдаланушы қолданбаларына арнада басқа қолдау көрсететін IPv6 инфрақұрылымын қажет етпестен арна арқылы байланысуға мүмкіндік береді. Қосылған IPv6 хосттары арасындағы тікелей байланыс үшін қосылымда IPv6 маршрутизаторы немесе DHCPv6 сервері қажет емес.

Сілтеме-Жергілікті мекенжайлар 10-биттік префикстен басталады fe80, одан кейін 54 нөлдік бит, содан кейін 64 биттік интерфейс идентификаторы (IID). Жоғарыдағы бірінші жауапта 2392:6213:a15b:66ff 64 биттік IID болып табылады.

Ілмектелген мультикаст

Әдепкі бойынша, мультикаст пакеттері оларды жіберген түйінге ішкі қайтарылады. Бұл IPv6 және IPv4 мекенжайлары үшін де орын алады.

Бұл әдепкі әрекеттің себебі мультикаст пакеттері жіберілгенде, жіберуші хосттың өзінде, сондай-ақ желінің бір жерінде жұмыс істейтін тыңдайтын жергілікті мультикаст қолданбасы болуы мүмкін. Бұл жергілікті қолданба мультикаст пакеттерін де қабылдауы керек.

Біз бұл мультикасттық жергілікті циклды пинг шығысында көре аламыз:

[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 мс салыстырғанда 0,453 мс) интерфейстің өзінде конфигурацияланған 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. Егер біз осы жалаушамен барлық түйіндерге мультикаст ping жіберсек, жауаптар қашықтағы түйіндермен шектеледі. Біз жіберуші интерфейстің Сілтеме-Жергілікті мекенжайынан жауап алмаймыз.

[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 сілтемесі-жергілікті мекенжайлар

Сіз болжағандай, Unicast Link-Local мекенжайлары да оларға жету үшін қай интерфейсті пайдалану керектігін көрсету үшін жеткілікті ақпаратты қамтамасыз етпейді. Барлық түйіндердің мультикаст пингіндегі сияқты, интерфейсті пәрмен жолы параметрі ретінде де көрсету керек ping немесе Сілтеме-Жергілікті мекенжайларды пингтеу кезінде мекенжайы бар аймақ идентификаторы.

Бұл уақытты пайдалана аламыз -cжіберілетін және алынған пакеттер мен жауаптардың санын шектеу үшін 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 ~]$

Басқа IPv6 мекенжайларына пинг (барлық) жіберу керек пе?

Бұл мақалада біз арнадағы барлық IPv6 түйіндерін барлық түйіндерді көп тарату IPv6 мекенжайы арқылы қалай пингтеу керектігін көрдік. ff02::1. Сондай-ақ, біз барлық түйінді мультикаст IPv6 мекенжайымен қандай интерфейсті пайдалану керектігін көрсетуді көрдік, себебі мекенжайдың өзі бұл ақпаратты бере алмайды. Біз пәрмен жолы опциясын қолдандық ping, немесе жұрнақ арқылы интерфейсті көрсетті %<zone_id>.

Содан кейін біз Unicast Link-Local мекенжайлары туралы білдік, олар барлық түйіндердің көп тарату ICMPv6 жаңғырық сұрауларына жауап беру үшін пайдаланылатын мекенжайлар.

Сондай-ақ біз мультикаст пакеттерінің әдепкі бойынша жіберу түйініне қалай қайтарылатынын және қызметтік бағдарлама үшін оны қалай өшіру керектігін көрдік. ping.

Соңында біз жұрнақ арқылы бір сілтеме-Жергілікті мекен-жайды пингпен жібердік %<zone_id>, өйткені Сілтеме-Жергілікті мекенжайлардың өзі де шығыс интерфейсі туралы ақпаратты бермейді.

Сонымен, барлық басқа түйіндерді пингтеу және олардың ғаламдық Unicast мекенжайларын (GUA) (яғни, олардың Интернеттегі жалпы мекенжайларын) немесе бірегей жергілікті Unicast мекенжайларын (ULA) алу туралы не деуге болады? Бұл туралы келесі блог жазбасында қарастырамыз.

Мұның бәрі.

Біздің курс туралы толығырақ мына жерден біле аласыз ашық есік күніне ескертулер.

Ақпарат көзі: www.habr.com

пікір қалдыру