Li ser kanalek hemî girêkên IPv6 ping bikin

Çend roj ji destpêkirina herikîna nû ya bi rêjeyê re dimînin "Endezyarê Torê" ji OTUS. Di vî warî de, em dixwazin wergerek materyalên kêrhatî yên li ser mijarê bi we re parve bikin.

Li ser kanalek hemî girêkên IPv6 ping bikin

Rêzikek postên blogê li ser serişte û hîleyên ji bo çareserkirina pirsgirêkên ping IPv6 (ICMPv6 Echo Daxwaza / Bersiva Echo)

Ji kerema xwe not bikin ku ez Linux-ê bikar tînim (bi taybetî Fedora 31), di heman demê de hevoksaziya fermana ping ji bo pergalên xebitandinê yên din divê pir dişibihe.

Li ser kanalek hemî girêkên IPv6 ping bikin

Serişteya yekem û herî hêsan ev e ku meriv hemî girêkên IPv6 li ser girêdanê ping bike.

IPv6 navnîşanên pirzimanî ji bo hemî cûreyên ragihandinê yên yek-bi-gelek bikar tîne. Navnîşanên IPv6 yên weşanê (an weşanê) tune. Ev IPv6 ji IPv4 cuda dike, li wir çend celeb navnîşanên weşanê hene, mînakî, navnîşana "weşana bisînor" 255.255.255.255 [RFC1122].

Lêbelê, navnîşek IPv6 ya "hemû-nodes multicast" heye, ji ber vê yekê em ê wê bikar bînin da ku hemî girêkên IPv6 li ser zencîreyê ping bikin. (Navnîşanek "weşan" bi rastî tenê navnîşanek pirzimanî ye ku bi navê taybetî tête navandin, ku komek pirreng e ku hemî girêk dihewîne. Bala xwe bidinê ku, wek nimûne, bitê navnîşana "kom" an jî pirreng di nav navnîşanên weşana Ethernet de li qata girêdanê tê veguheztin. ).

Navnîşana IPv6-a hemî-nodes ji bo kanalê: ff02::1. ff navnîşanek IPv6-ê ya pirzimanî destnîşan dike. 0-ya paşîn beşek ji ala bi bitsên nesazkirî ye.

berdewam 2 qada komek pirzimanî diyar dike. Berevajî navnîşanên IPv4 multicast, navnîşanên IPv6 yên pirreng xwedan çarçoveyek heye. Nirxa çarçovê beşa torê nîşan dide ku pakêtek multicast destûr tê şandin. Dema ku pakêtek digihîje sînorê qada diyarkirî, pêdivî ye ku pakêt were avêtin, bêyî ku qada wê ya Hop Count ne sifir be. Bê guman, heke hêjmara hopê bigihîje sifirê berî ku bigihîje sînorê koma multicastê ya diyarkirî, ew jî tavilê tê nûve kirin. Li vir navnîşek bêkêmasî ya qada pirzimanî ya IPv6 heye.

Di dawiyê de ::1 grûpek multicast a hemî girêk diyar dike.

Der barê navnîşan de ff02::1 Divê were zanîn ku ew nezelal e. Li ser mêvandarek IPv6 bi pir navber, wek router an mêvandarek pirhomed, navnîşan ff02::1 Tiştek tune ku hûn diyar bikin ka kîjan navbeynkar ji bo şandina daxwazên echo ICMPv6 an jî li hêviya wergirtina bersivên echo ya ICMPv6 gava ku ew digihîjin. ff02::1 derbasdar e û dikare li ser yek ji navgîn û kanalên ku bi girêka pir-navberê ve girêdayî ne were bikar anîn.

Ji ber vê yekê gava ku em hemî girêkên IPv6 li ser zencîreyekê ping dikin, pêdivî ye ku em bi rengekî ji kargêriyê re jî vebêjin ping ji bo IPv6, kîjan navbeynkar bikar bînin.

Diyarkirina Navberan - Vebijarka Hêza Ferman

Wekî ku me berê jî dît, navnîşana pir-girêdan a ku em dixwazin bikar bînin - ye ff02::1 - di derbarê kîjan navbeynê de ji bo şandin û wergirtina daxwaza echo ICMPv6 û pakêtên bersiva echo de ti agahdarî peyda nake.

Ji ber vê yekê, em ê çawa pêwendiya ku ji bo cîhê navnîşana pirzimanî an cîhê navnîşana unicast Link-Local were bikar anîn diyar bikin?

Awayê yekem û herî eşkere ev e ku em wê wekî parameterek ji serîlêdana ku em bikar tînin re peyda bikin.

Ji bo kêrhatî ping em wê bi rêya vebijarkê pêşkêş dikin -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 ~]$

Bi karanîna vê ping-ê ya hemî-girêk pirzimanî, me bersiv ji 6 girêkên IPv6 wergirtin. Bersiv ji navnîşanên girêka Link-Local IPv6 hatin, bi pêşgir dest pê kirin fe80::/10.

ku ping şandina daxwazên echo ICMPv6 bêdawî berdewam nake heya ku em wê qut nekin, em bi gelemperî hejmara pakêtan diyar dikin ku bi vebijarka -c-ê bişînin. Lêbelê, ev di heman demê de nahêle ku ping dema ku daxwaznameyek echo ya pirzimanî dişîne ICMPv6 zêdetirî yek bersivek echo ya ICMPv6 qebûl bike û nîşan bide. Di şûna wê de, me vebijarka -w bikar anî da ku diyar bikin ku ping divê piştî 1 çirkeyê biqede, ferq nake ka çend daxwazên echo ICMPv6 an bersivên echo hatine şandin an wergirtin.

Tiştek din ku meriv bala xwe bide ser ev e (DUP!) li ser bersivên duyemîn û paşê derxe. Van pakêtan wekî bersivên dubare têne nas kirin ji ber ku ew xwedî heman nirxa rêza ICMP-ê ne wekî daxwazên echo-ya ICMPv6 yên ku di rêza yekem de hatine şandin. Ew xuya dikin ji ber ku daxwazek echo ya pirzimanî ya ICMPv6 di gelek bersivên yekgirtî yên kesane de encam dide. Di kurteya îstatîstîkê de hejmara dubareyan jî tê destnîşan kirin.

Diyarkirina Navberan - Nasnameya Zonê

Rêbazek din a eşkerekirina navberek ji bo karanîna wekî beşek pîvanek navnîşana IPv6 ye.

Em dikarin di derana ping-ê de mînakek vê yekê bibînin, ku navnîşanên mêvandarên IPv6 yên bersivdar jî paşgira wan heye. %enp3s2, wek nimûne:

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

Ev rêbaza diyarkirina navberan bi fermî di [RFC4007] de, "Mîmariya Navnîşana Diyarkirî ya IPv6." Her çend ji wan re bi gelemperî navgîniya pergala xebitandinê tê gotin, ew bi rastî tiştek gelemperîtir diyar dikin - "herêm" an "çarçoveyek".

Sedema hebûna bêtir deverên gelemperî an deverên berfireh ev e ku, wekî ku di [RFC4007] de hatî destnîşan kirin, girêkek IPv6 dikare çend navgînên IPv6 yên cihêreng bi heman kanalê ve girêdayî be. Ev navber endamên heman herêmê ne.

Pêdivî ye ku meriv di bin pergala xebitandinê de di nav herêmek de pir navber kom bike; Heya nuha ez nizanim gelo ev di bin Linux-ê de gengaz e an meriv wê çawa bike.

Bikaranîna paşgira %<zone_id>, em dikarin vebijarka rêzika fermanê jê bikin -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 ~]$

Bersivên Navnîşana Girêdanê-Herêmî

Ji vê ping-ê ya hemî-girêk pirzimanî me bi tevahî 6 bersivên bêhempa wergirtin.

Van bersiv ji navnîşanên mêvandar ên unicast Link-Local IPv6 hatin. Ji bo nimûne, li vir bersiva yekem e:

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

Navnîşanên Unicast Link-Local IPv6 li ser hemî navbeynkarên IPv6-çalakkirî [RFC4291], "IP Version 6 Architecture Addressing" hewce ne. Sedema vê yekê ev e ku nodek IPv6 her gav bixweber xwedan navnîşek IPv6 ya yekbûyî ye, ku ew bi kêmanî dikare bikar bîne da ku bi girêkên din re li ser girêdanên xwe yên rasterast ve girêdayî danûstendinê bike. Di vê yekê de bi serîlêdanên li ser mêvandarên din re bi navnîşanên mêvandar ên Link-Local re danûstendina heye.

Ev sêwirandin û pêkanîna protokolên wekî IPv6 Neighbor Discovery û OSPFv3 hêsan dike. Di heman demê de ew rê dide serîlêdanên bikarhênerê dawîn ên li ser mêvandaran ku li ser kanalê ragihînin bêyî ku hewcedariya binesaziya IPv6 ya din a piştgirî li ser kanalê hebe. Têkiliya rasterast di navbera mêvandarên IPv6 yên girêdayî de li ser pêwendiyê routerek IPv6 an serverek DHCPv6 hewce nake.

Navnîşanên Girêdana Herêmî bi pêşgirek 10-bit dest pê dikin fe80, dûv re 54 sifir bit û dûv re jî nasnavek navbeynkariya 64-bit (IID). Di bersiva yekem a jorîn de 2392:6213:a15b:66ff ID-ya 64-bit e.

Looped Multicast

Ji hêla xwerû ve, pakêtên multicast di hundurê de vedigerin girêka ku wan şandiye. Ev hem ji bo navnîşana IPv6 û hem jî IPv4 diqewime.

Sedema vê tevgera xwerû ev e ku dema ku pakêtên pirzimanî têne şandin, dibe ku serîlêdana multicast herêmî ya guhdarîkirî jî li ser mêvandarê şandinê bixwe, û her weha li cîhek li ser torê jî hebe. Divê ev serîlêdana herêmî jî pakêtên pirzimanî werbigire.

Em dikarin vê lûleya herêmî ya pirzimanî di derketina ping-a xwe de bibînin:

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

Bersiva yekem û zûtirîn (0,106 ms li gorî 0,453 ms) ji navnîşana Girêdana Herêmî ya ku li ser navberê bixwe hatî mîheng kirin tê. enp3s2.

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

Utility ping rêyek peyda dike ku bi karanîna parametreyê vegera pirzimanî ya herêmî tepeser bike -L. Ger em bi vê alayê re pingek pir-girêdanek pir-girêk bişînin, wê hingê bersiv bi girêkên dûr ve têne sînorkirin. Em bersivek ji navnîşana Girêdana Herêmî ya pêwendiya şandinê nagirin.

[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-Navnîşanên Herêmî

Wekî ku hûn texmîn dikin, navnîşanên unicast Link-Local bixwe jî agahdariya têr nadin ku destnîşan bikin ka kîjan navbeynkar bikar bînin da ku bigihîjin wan. Mîna ku bi ping-ya pir-girêdanî ya hemî-nodê re, pêdivî ye ku em jî pêvekê wekî pîvanek rêza fermanê diyar bikin ping an jî ID-ya zone bi navnîşan dema ku navnîşanên Girêdanê-Herêmî ping dike.

Vê carê em dikarin bikar bînin -cji bo sînorkirina hejmara pakêt û bersivên şandin û standin ping, ji ber ku em ping unicast pêk tînin.

[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 (hemî) navnîşanên IPv6 yên din?

Di vê gotarê de, me dît ku meriv çawa hemî girêkên IPv6-ê li ser kanalek bi karanîna navnîşek IPv6-ya pir-girêdan a hemî-nodes ping dike. ff02::1. Me her weha dît ku meriv çawa diyar dike ka kîjan navbeynkar bi navnîşek IPv6-a pir-girêdanî ya hemî-nodê re bikar bîne, ji ber ku navnîş bixwe nikare vê agahiyê peyda bike. Me vebijarka rêzika fermanê bikar anî ping, an navbeynkar bi karanîna paşpirtikê diyar kir %<zone_id>.

Dûv re em li ser navnîşanên unicast Link-Local fêr bûn, ku ew navnîşan in ku ji bo bersivdana daxwazên echo-ya ICMPv6-a pir-girêdan têne bikar anîn.

Me her weha dît ku pakêtên pirzimanî çawa ji hêla xwerû ve têne vegerandin girêka şandinê û meriv çawa vê yekê ji bo kargêriyê neçalak dike ping.

Di dawiyê de, me bi karanîna paşgira yek navnîşek Girêdana Herêmî ping kir %<zone_id>, ji ber ku navnîşanên Girêdan-Herêmî bixwe jî di derbarê navbera derketinê de agahdarî nadin.

Ji ber vê yekê li ser hemî girêkên din ping bikin û navnîşanên wan ên gerdûnî yên yekbûyî (GUA) bistînin (ango, navnîşanên wan ên gelemperî li ser Înternetê) an navnîşanên wan ên yekbûyî yên herêmî (ULA)? Em ê di posta blogê ya paşîn de li vê binêrin.

Navê pêger.

Hûn dikarin li ser qursa me bêtir fêr bibin notên roja vekirî.

Source: www.habr.com

Add a comment