Ping բոլոր IPv6 հանգույցները ալիքում

Մի քանի օր է մնացել մինչև նոր հոսքի մեկնարկը փոխարժեքով «Ցանցային ինժեներ» OTUS-ից: Այս կապակցությամբ մենք ցանկանում ենք ձեզ հետ կիսվել թեմայի վերաբերյալ օգտակար նյութերի թարգմանությամբ:

Ping բոլոր IPv6 հանգույցները ալիքում

Բլոգային գրառումների մի շարք խորհուրդների և հնարքների վերաբերյալ IPv6 պինգի խնդիրների վերացման համար (ICMPv6 Echo Request/Echo Reply)

Խնդրում ենք նկատի ունենալ, որ ես օգտագործում եմ Linux (մասնավորապես Fedora 31), սակայն այլ օպերացիոն համակարգերի համար ping հրամանի շարահյուսությունը, հուսանք, պետք է շատ նման լինի:

Ping բոլոր IPv6 հանգույցները ալիքում

Առաջին և ամենապարզ խորհուրդը հղման վրա գտնվող բոլոր IPv6 հանգույցների ping-ն է:

IPv6-ն օգտագործում է բազմակի հեռարձակման հասցեներ բոլոր տեսակի մեկից շատ հաղորդակցությունների համար: Հեռարձակման (կամ հեռարձակման) IPv6 հասցեներ չկան: Սա տարբերում է IPv6-ը IPv4-ից, որտեղ կան հեռարձակման մի քանի տեսակի հասցեներ, օրինակ՝ «սահմանափակ հեռարձակման» հասցեն 255.255.255.255 [RFC1122]:

Այնուամենայնիվ, կա «all-nodes multicast» IPv6 հասցե, այնպես որ մենք այն կօգտագործենք հղման վրա գտնվող բոլոր IPv6 հանգույցները Ping-ի համար: («Հեռարձակման» հասցեն իրականում պարզապես հատուկ անվանումով բազմահեռարձակման հասցե է, որը բազմաֆունկցիոնալ խումբ է, որը ներառում է բոլոր հանգույցները: Նկատի ունեցեք, որ, օրինակ, «խմբային» կամ բազմահաղորդման հասցեի բիթը միացված է 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 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 ~]$

Օգտագործելով այս բոլոր հանգույցների բազմաֆունկցիոնալ պինգը, մենք պատասխաններ ստացանք 6 IPv6 հանգույցներից: Պատասխանները ստացան Link-Local IPv6 հանգույցի հասցեներից՝ սկսած նախածանցից fe80::/10.

Որ ping չի շարունակում անորոշ ժամանակով ուղարկել ICMPv6 echo հարցումներ, քանի դեռ չենք ընդհատել այն, մենք սովորաբար նշում ենք փաթեթների քանակը, որոնք ուղարկվելու են -c տարբերակի միջոցով: Այնուամենայնիվ, սա նաև թույլ չի տալիս, որ ping-ը ընդունի և ցուցադրի մեկից ավելի ICMPv6 արձագանքների պատասխաններ, երբ ուղարկում է ICMPv6 echo-ի բազմաբնույթ հարցում: Փոխարենը, մենք օգտագործեցինք -w տարբերակը՝ նշելու, որ ping-ը պետք է ավարտվի 1 վայրկյանից հետո, անկախ նրանից, թե քանի ICMPv6 արձագանքի հարցում կամ արձագանք է ուղարկվել կամ ստացվել:

Մեկ այլ բան, որին պետք է ուշադրություն դարձնել, այն է (DUP!) ելք երկրորդ և հաջորդ պատասխանների վրա: Այս փաթեթները նույնականացվում են որպես կրկնօրինակ պատասխաններ, քանի որ դրանք ունեն նույն ICMP հաջորդականության արժեքը, ինչ ICMPv6 արձագանքների անհատական ​​հարցումները, որոնք ուղարկվել են առաջին հերթին: Դրանք հայտնվում են, քանի որ ICMPv6 բազմահաղորդակցական արձագանքի հարցումը հանգեցնում է բազմաթիվ անհատական ​​unicast պատասխանների: Վիճակագրության ամփոփագրում նշված է նաև կրկնօրինակների քանակը։

Ինտերֆեյսների սահմանում - Zone ID

Օգտագործման համար ինտերֆեյսի ցուցադրման մեկ այլ միջոց է որպես IPv6 հասցեի պարամետրի մաս:

Դրա օրինակը մենք կարող ենք տեսնել ping-ի ելքում, որտեղ պատասխանող 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-Local IPv6 հասցեները պահանջվում են բոլոր IPv6 ինտերֆեյսներում [RFC4291], «IP տարբերակ 6 հասցեների ճարտարապետություն»: Սրա պատճառն այն է, որ IPv6 հանգույցը միշտ ինքնաբերաբար ունի unicast IPv6 հասցե, որն առնվազն կարող է օգտագործել այլ հանգույցների հետ իր ուղղակիորեն կապված հղումներով հաղորդակցվելու համար: Սա ներառում է կապը այլ հոսթների հավելվածների հետ Link-Local հոսթի հասցեների միջոցով:

Սա հեշտացնում է այնպիսի արձանագրությունների նախագծումն ու իրականացումը, ինչպիսիք են IPv6 Neighbor Discovery-ը և OSPFv3-ը: Այն նաև թույլ է տալիս վերջնական օգտատերերի հավելվածներին հոսթինգի վրա հաղորդակցվել ալիքի միջոցով՝ չպահանջելով որևէ այլ օժանդակող IPv6 ենթակառուցվածք ալիքում: Միացված IPv6 հոսթերների միջև ուղղակի կապը չի պահանջում IPv6 երթուղիչ կամ DHCPv6 սերվեր կապի վրա:

Link-Local հասցեները սկսվում են 10-բիթանոց նախածանցով fe80, որին հաջորդում է 54 զրոյական բիթ, ապա 64-բիթանոց ինտերֆեյսի նույնացուցիչ (IID): Վերոնշյալ առաջին պատասխանում 2392:6213:a15b:66ff 64-բիթանոց IID է:

Looped Multicast

Լռելյայնորեն, multicast փաթեթները ներսից վերադարձվում են այն հանգույցին, որն ուղարկել է դրանք: Սա տեղի է ունենում ինչպես IPv6, այնպես էլ IPv4 հասցեավորման դեպքում:

Այս լռելյայն վարքագծի պատճառն այն է, որ երբ ուղարկվում են բազմահաղորդակցական փաթեթներ, կարող է նաև լինել լսող տեղական multicast հավելված, որն աշխատում է հենց ուղարկող հոսթի վրա, ինչպես նաև ինչ-որ տեղ ցանցում: Այս տեղական հավելվածը պետք է նաև ստանա բազմաֆունկցիոնալ փաթեթներ:

Մենք կարող ենք տեսնել այս բազմաբնույթ տեղական հանգույցը մեր 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 հասցեներն ինքնին նույնպես չեն տրամադրում բավարար տեղեկատվություն՝ ցույց տալու համար, թե որ միջերեսն օգտագործել իրենց հասնելու համար: Ինչպես բոլոր հանգույցների բազմահաղորդակցման պինգում, մենք նույնպես պետք է նշենք ինտերֆեյսը որպես հրամանի տողի պարամետր ping կամ գոտի ID՝ հասցեով՝ Link-Local հասցեները ձայնագրելիս:

Այս անգամ մենք կարող ենք օգտագործել -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 հասցեն: ff02::1. Մենք նաև տեսանք, թե ինչպես կարելի է նշել, թե որ ինտերֆեյսն օգտագործել բոլոր հանգույցների բազմաբնույթ IPv6 հասցեի հետ, քանի որ հասցեն ինքնին չի կարող տրամադրել այս տեղեկատվությունը: Մենք օգտագործեցինք կամ հրամանի տող տարբերակը ping, կամ նշել է միջերեսը՝ օգտագործելով վերջածանցը %<zone_id>.

Այնուհետև մենք իմացանք unicast Link-Local հասցեների մասին, որոնք հասցեներ են, որոնք օգտագործվում են պատասխանելու բոլոր հանգույցների բազմաբնույթ ICMPv6 արձագանքման հարցումներին:

Մենք նաև տեսանք, թե ինչպես են բազմաֆունկցիոնալ փաթեթները լռելյայն վերադարձվում ուղարկող հանգույց և ինչպես անջատել դա կոմունալ ծառայության համար ping.

Ի վերջո, մենք ping ենք արել մեկ Link-Local հասցե՝ օգտագործելով վերջածանցը %<zone_id>, քանի որ Link-Local հասցեներն իրենք նույնպես տեղեկատվություն չեն տրամադրում ելքային ինտերֆեյսի մասին։

Ուրեմն, ի՞նչ կասեք բոլոր մյուս հանգույցների մասին ping-ի մասին և ստանալ նրանց գլոբալ unicast հասցեները (GUAs) (այսինքն, նրանց հանրային հասցեները ինտերնետում) կամ նրանց եզակի տեղական unicast հասցեները (ULA): Մենք դրան կանդրադառնանք բլոգի հաջորդ գրառման մեջ:

Դա բոլորն են:

Դուք կարող եք ավելին իմանալ մեր դասընթացի մասին այստեղ բաց օրվա նշումներ.

Source: www.habr.com

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