Ping a h-uile nod IPv6 air sianal

Tha beagan làithean air fhàgail gus an tòisich sruth ùr aig an ìre "Innleadair Lìonra" bho OTUS. A thaobh seo, bu mhath leinn eadar-theangachadh de stuthan feumail mun chuspair a cho-roinn riut.

Ping a h-uile nod IPv6 air sianal

Sreath de phuist bhlogaichean air molaidhean agus cleasan airson fuasgladh fhaighinn air cùisean IPv6 ping (ICMPv6 Echo Request / Echo Reply)

Thoir an aire gu bheil mi a’ cleachdadh Linux (gu sònraichte Fedora 31), ach bu chòir gum biodh an co-chòrdadh àithne ping airson siostaman obrachaidh eile glè choltach.

Ping a h-uile nod IPv6 air sianal

Is e a’ chiad rud agus an rud as sìmplidh a bhith a’ ping a h-uile nod IPv6 air a’ cheangal.

Bidh IPv6 a’ cleachdadh seòlaidhean multicast airson a h-uile seòrsa conaltradh aon-gu-mòran. Chan eil seòlaidhean IPv6 craolaidh (no craoladh). Tha seo a’ dèanamh eadar-dhealachadh air IPv6 bho IPv4, far a bheil grunn sheòrsaichean de sheòlaidhean craolaidh, mar eisimpleir, an seòladh “craoladh cuibhrichte” 255.255.255.255 [RFC1122].

Ach, tha seòladh IPv6 “all-nodes multicast” ann, agus mar sin cleachdaidh sinn sin gus ping a h-uile nod IPv6 air a’ cheangal. (Is e dìreach seòladh ioma-chraolaidh ainmichte a th’ ann an seòladh “craolaidh", a tha na bhuidheann ioma-chraolaidh a tha a’ toirt a-steach a h-uile nod. Thoir an aire, mar eisimpleir, gu bheil am “buidheann” no am pìos seòlaidh ioma-chraolaidh air a thionndadh air ann an seòlaidhean craolaidh Ethernet aig an ìre ceangail. ).

Seòladh IPv6 multicast uile-nòtaichean airson an t-seanail: ff02::1. ff a’ comharrachadh seòladh IPv6 multicast. Is e an ath 0 am pàirt den bhratach le pìosan neo-shuidhichte.

barrachd 2 a’ mìneachadh farsaingeachd buidheann multicast. Eu-coltach ri seòlaidhean IPv4 multicast, tha comas aig seòlaidhean IPv6 multicast. Tha luach an raoin a’ comharrachadh a’ phàirt den lìonra air am faodar pasgan ioma-chraolaidh a chuir air adhart. Cho luath ‘s a ruigeas pacaid crìoch an raon ainmichte, feumar am pacaid a leigeil sìos, ge bith a bheil an raon Hop Count aige nonzero. Gu dearbh, ma ruigeas an àireamh hop neoni mus ruig e crìoch buidheann ioma-chraolaidh ainmichte, thèid ath-shuidheachadh sa bhad cuideachd. Seo an liosta iomlan de raon ioma-sheòrsach IPv6.

Mu dheireadh ::1 a’ sònrachadh buidheann multicast uile-nòtaichean.

Mu dheidhinn an t-seòlaidh ff02::1 Bu chòir a thoirt fa-near gu bheil e dà-sheaghach. Air aoigheachd IPv6 le ioma-eadar-aghaidh, leithid router no aoigheachd ioma-sheòrsach, an seòladh ff02::1 chan eil dad ann far an urrainn dhut sònrachadh dè an eadar-aghaidh airson iarrtasan mac-talla ICMPv6 a chuir gu no an dùil freagairtean mac-talla ICMPv6 fhaighinn nuair a ruigeas iad. ff02::1 tha e dligheach agus faodar a chleachdadh air gin de na eadar-aghaidh agus seanalan a tha ceangailte ris an nód ioma-eadar-aghaidh.

Mar sin nuair a chuireas sinn a h-uile nod IPv6 air ceangal, feumaidh sinn dòigh air choireigin innse don ghoireas ping airson IPv6, dè an eadar-aghaidh a chleachdas tu.

A’ mìneachadh eadar-aghaidh - Roghainn Loidhne-àithne

Mar a chunnaic sinn mu thràth, is e an seòladh multicast uile-nòtaichean a tha sinn airson a chleachdadh - ff02::1 - chan eil e a’ toirt seachad fiosrachadh sam bith a thaobh dè an eadar-aghaidh a chuireas agus a gheibh ICMPv6 iarrtas mac-talla agus pacaidean freagairt mac-talla.

Mar sin, ciamar a shònraicheas sinn an eadar-aghaidh a thèid a chleachdadh airson an àite seòlaidh multicast no àite seòlaidh unicast Link-Local?

Is e a’ chiad agus an dòigh as fhollaisiche a thoirt seachad mar pharamadair don tagradh a tha sinn a’ cleachdadh.

Airson goireasachd ping bheir sinn seachad e tron ​​​​roghainn -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 ~]$

A’ cleachdadh a’ phing ioma-sheòrsach seo, fhuair sinn freagairtean bho nodan 6 IPv6. Thàinig freagairtean bho sheòlaidhean nód Link-Local IPv6, a’ tòiseachadh leis an ro-leasachan fe80::/10.

gu bheil ping chan eil e a’ leantainn air adhart a’ cur iarrtasan mac-talla ICMPv6 gu bràth gus an cuir sinn stad air, mar as trice bidh sinn a’ sònrachadh an àireamh de phasganan a chuireas sinn tron ​​roghainn -c. Ach, tha seo cuideachd a’ cur casg air ping bho bhith a’ gabhail ri agus a’ taisbeanadh barrachd air aon fhreagairt mac-talla ICMPv6 nuair a chuireas iad iarrtas mac-talla multicast ICMPv6. An àite sin, chleachd sinn an roghainn -w gus sònrachadh gum bu chòir ping a chrìochnachadh às deidh 1 diog, ge bith cia mheud iarrtas mac-talla ICMPv6 no freagairtean mac-talla a chaidh a chuir no fhaighinn.

Is e rud eile airson aire a thoirt dha (DUP!) toradh air an dàrna freagairt agus an dèidh sin. Tha na pacaidean sin air an comharrachadh mar fhreagairtean dùblaichte leis gu bheil an aon luach sreath ICMP aca ris na h-iarrtasan mac-talla ICMPv6 fa leth a chaidh a chuir sa chiad àite. Tha iad a’ nochdadh leis gu bheil iarrtas mac-talla multicast ICMPv6 a’ leantainn gu grunn fhreagairtean unicast fa leth. Tha an àireamh de dhùblaidhean cuideachd air an comharrachadh ann an geàrr-chunntas nan staitistig.

A’ mìneachadh eadar-aghaidhean - ID sòn

Tha dòigh eile air eadar-aghaidh a nochdadh airson a chleachdadh mar phàirt de pharamadair seòladh IPv6.

Chì sinn eisimpleir de seo anns an toradh ping, far a bheil an iar-leasachan aig seòlaidhean nan luchd-aoigheachd IPv6 freagairteach cuideachd %enp3s2mar eisimpleir:

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

Tha an dòigh seo airson eadar-aghaidh a shònrachadh air a mhìneachadh gu foirmeil ann an [RFC4007], "IPv6 Defined Address Architecture." Ged is e eadar-aghaidh an t-siostaim obrachaidh a chanar riutha mar as trice, bidh iad gu dearbh a’ mìneachadh rudeigin nas fharsainge - “sòn” no “raon.”

Is e an adhbhar airson sònaichean nas fharsainge no sònaichean farsaingeachd a bhith ann, mar a chaidh ainmeachadh ann an [RFC4007], gum faod grunn eadar-aghaidh IPv6 eadar-dhealaichte a bhith aig nód IPv6 ceangailte ris an aon sheanal. Tha na h-eadar-aghaidh sin nam buill den aon raon.

Bu chòir gum biodh e comasach grunn eadar-aghaidh a chuir còmhla taobh a-staigh sòn fon t-siostam obrachaidh; An-dràsta chan eil fios agam a bheil seo comasach fo Linux no ciamar a nì mi e.

A 'cleachdadh an iar-leasachan %<zone_id>, is urrainn dhuinn an roghainn loidhne-àithne a thoirt air falbh -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 ~]$

Ceangal - Freagairtean Seòlaidhean Ionadail

Bhon ping multicast ioma-nòd seo fhuair sinn 6 freagairtean sònraichte gu h-iomlan.

Thàinig na freagairtean sin bho sheòlaidhean aoigheachd unicast Link-Local IPv6. Mar eisimpleir, seo a’ chiad fhreagairt:

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

Tha feum air seòlaidhean Unicast Link-Local IPv6 air a h-uile eadar-aghaidh le comas IPv6 [RFC4291], “IP Version 6 Addressing Architecture”. Is e an adhbhar airson seo gu bheil seòladh IPv6 unicast gu fèin-ghluasadach aig nód IPv6, a dh’ fhaodas e a chleachdadh co-dhiù airson conaltradh le nodan eile air na ceanglaichean ceangailte gu dìreach aige. Tha seo a’ toirt a-steach conaltradh le tagraidhean air luchd-aoigheachd eile tro sheòlaidhean aoigheachd Link-Local.

Tha seo a’ sìmpleachadh dealbhadh agus buileachadh phròtacalan leithid IPv6 Neighbour Discovery agus OSPFv3. Leigidh e cuideachd le tagraidhean cleachdaiche deireannach air luchd-aoigheachd conaltradh thairis air an t-sianal gun a bhith feumach air bun-structar taiceil IPv6 sam bith eile air an t-sianal. Chan fheum conaltradh dìreach eadar luchd-aoigheachd IPv6 ceangailte ri router IPv6 no frithealaiche DHCPv6 air a’ cheangal.

Bidh seòlaidhean Link-Local a’ tòiseachadh le ro-leasachan 10-bit fe80, air a leantainn le 54 pìosan neoni agus an uairsin aithnichear eadar-aghaidh 64-bit (IID). Anns a 'chiad fhreagairt gu h-àrd 2392:6213:a15b:66ff Is e IID 64-bit a th’ ann.

Multicast lùbte

Gu gnàthach, thèid pacaidean multicast a thilleadh a-staigh chun nód a chuir iad. Bidh seo a’ tachairt airson an dà chuid seòladh IPv6 agus IPv4.

Is e an t-adhbhar airson a’ ghiùlan àbhaisteach seo nuair a thèid pacaidean multicast a chuir a-steach, is dòcha gum bi tagradh ioma-chraoladh ionadail ag èisteachd a ’ruith air an aoigh chuir fhèin, a bharrachd air àiteigin air an lìonra. Feumaidh an tagradh ionadail seo pacaidean multicast fhaighinn cuideachd.

Chì sinn an lùb ionadail multicast seo nar toradh 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!)
...

Tha a’ chiad fhreagairt agus as luaithe (0,106 ms an taca ri 0,453 ms) a’ tighinn bhon t-seòladh Link-Local a chaidh a dhealbhadh air an eadar-aghaidh fhèin enp3s2.

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

Goireasach ping a’ toirt seachad dòigh air fios air ais multicast ionadail a chumail fodha a’ cleachdadh am paramadair -L. Ma chuireas sinn ping multicast làn-nòtaichean leis a’ bhratach seo, tha freagairtean cuingealaichte ri nodan iomallach. Chan fhaigh sinn freagairt bhon t-seòladh Link-Local aig an eadar-aghaidh cur.

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

Ceangal ping - seòlaidhean ionadail

Mar a shaoileadh tu, chan eil seòlaidhean unicast Link-Local leotha fhèin cuideachd a’ toirt seachad fiosrachadh gu leòr gus innse dè an eadar-aghaidh a chleachdas tu gus an ruighinn. Coltach ri ping multicast uile-nòtaichean, feumaidh sinn cuideachd an eadar-aghaidh a shònrachadh mar paramadair loidhne-àithne ping no ID sòn le seòladh nuair a bhios tu a’ putadh seòlaidhean Link-Local.

An turas seo is urrainn dhuinn a chleachdadh -cgus an àireamh de phasganan agus fhreagairtean a chuirear agus a gheibhear a chuingealachadh ping, leis gu bheil sinn a’ coileanadh ping unicast.

[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 (a h-uile) seòlaidhean IPv6 eile?

San artaigil seo, chunnaic sinn mar a chuireas tu a h-uile nod IPv6 air sianal a’ cleachdadh seòladh IPv6 ioma-nòtaichean ff02::1. Chunnaic sinn cuideachd mar a shònraicheas sinn dè an eadar-aghaidh a bu chòir a chleachdadh le seòladh IPv6 multicast uile-nòd, leis nach urrainn don t-seòladh fhèin am fiosrachadh seo a thoirt seachad. Chleachd sinn an dàrna cuid an roghainn loidhne-àithne ping, no shònraich e an eadar-aghaidh a’ cleachdadh an iar-leasachan %<zone_id>.

An uairsin dh’ ionnsaich sinn mu sheòlaidhean unicast Link-Local, a tha nan seòlaidhean a thathas a’ cleachdadh gus freagairt a thoirt do dh’ iarrtasan mac-talla multicast ICMPv6.

Chunnaic sinn cuideachd mar a thèid pacaidean multicast a thilleadh chun nód cur gu bunaiteach agus mar a chuireas tu seo à comas airson a’ ghoireas ping.

Mu dheireadh, chuir sinn a-steach aon sheòladh Link-Local a’ cleachdadh an iar-leasachan %<zone_id>, leis nach eil seòlaidhean Link-Local iad fhèin cuideachd a’ toirt seachad fiosrachadh mun eadar-aghaidh a tha a’ dol a-mach.

Mar sin dè mu dheidhinn ping a h-uile nod eile agus na seòlaidhean unicast cruinneil aca (GUAn) fhaighinn (is e sin, na seòlaidhean poblach aca air an eadar-lìn) no na seòlaidhean unicast ionadail sònraichte aca (ULAn)? Bheir sinn sùil air seo san ath phost bhlog.

Tha sin uile.

Gheibh sibh tuilleadh a-mach mun chùrsa againn aig notaichean latha fosgailte.

Source: www.habr.com

Cuir beachd ann