Uue kiirusega voolu alguseni on jÀÀnud paar pÀeva alates OTUS. Sellega seoses soovime teiega jagada selleteemalise kasuliku materjali tÔlget.

Blogipostituste sari IPv6 pingiprobleemide tÔrkeotsingu nÀpunÀidete ja nippide kohta (ICMPv6 Echo Request/Echo Reply)
Palun arvestage, et ma kasutan Linux (tĂ€psemalt Fedora 31), kuid loodetavasti peaks ping-kĂ€su sĂŒntaks teiste operatsioonisĂŒsteemide puhul olema vĂ€ga sarnane.
Pingige kÔik kanali IPv6 sÔlmed
Esimene ja lihtsaim nÀpunÀide on pingida kÔik lingil olevad IPv6 sÔlmed.
IPv6 kasutab multisaateaadresse igat tĂŒĂŒpi ĂŒks-mitmele suhtluseks. Leviedastuse (vĂ”i leviedastuse) IPv6-aadresse pole. See eristab IPv6 IPv4-st, kus on mitut tĂŒĂŒpi leviaadresse, nĂ€iteks "piiratud leviedastuse" aadress 255.255.255.255 [RFC1122].
Siiski on olemas kĂ”igi sĂ”lmede multisaadete IPv6-aadress, seega kasutame seda lingi kĂ”igi IPv6-sĂ”lmede pingimiseks. ("Edastusaadress" on tegelikult lihtsalt spetsiaalse nimega multisaateaadress, mis on multisaadete rĂŒhm, mis hĂ”lmab kĂ”iki sĂ”lme. Pange tĂ€hele, et nĂ€iteks "grupi" vĂ”i multisaate aadressi bitt on Etherneti leviaadressides lingikihis sisse lĂŒlitatud ).
Kanali kÔigi sÔlmede multiedastuse IPv6 aadress: ff02::1. ff tÀhistab multicast IPv6 aadressi. JÀrgmine 0 on mÀÀramata bittidega lipu osa.
Edasi 2 mÀÀrab multisaaterĂŒhma ala. Erinevalt multisaate IPv4 aadressidest on multisaadete IPv6 aadressidel ulatus. Ulatuse vÀÀrtus nĂ€itab vĂ”rgu osa, mille kaudu on lubatud multisaatepaketti edastada. Kui pakett jĂ”uab kindlaksmÀÀratud ulatuse piirini, tuleb pakett tĂŒhistada, olenemata sellest, kas selle Hop Count vĂ€li on nullist erinev. Muidugi, kui hĂŒpete arv jĂ”uab nullini enne mÀÀratud multisaaterĂŒhma piirini jĂ”udmist, lĂ€htestatakse see ka kohe. Siin on IPv6 multisaate ulatuse tĂ€ielik loend.
LĂ”puks ::1 mÀÀrab kĂ”igi sĂ”lmede multisaadete rĂŒhma.
Aadressi kohta ff02::1 Tuleb mĂ€rkida, et see on mitmetĂ€henduslik. Mitme liidesega IPv6 hostil (nt ruuteril vĂ”i mitme koduga hostil) aadress ff02::1 pole midagi, kus saate mÀÀrata, millisele liidesele ICMPv6 kajapĂ€ringuid saata vĂ”i oodata ICMPv6 kajavastuste saamist, kui need saabuvad. ff02::1 on kehtiv ja seda saab kasutada mis tahes liidestes ja kanalites, mis on ĂŒhendatud mitme liidese sĂ”lmega.
Seega, kui me pingime lingil kÔiki IPv6 sÔlme, peame kuidagi ka utiliidile teatama ping IPv6 jaoks, millist liidest kasutada.
Liideste mÀÀratlemine â kĂ€surea valik
Nagu me juba nĂ€gime, on kĂ”igi sĂ”lmede multiedastusaadress, mida soovime kasutada, â ff02::1 - ei anna teavet selle kohta, millise liidese kaudu saata ja vastu vĂ”tta ICMPv6 kajapĂ€ringu ja kaja vastuse pakette.
Niisiis, kuidas mÀÀrata liidest, mida kasutatakse multisaate aadressiruumi vÔi unicast Link-Local aadressiruumi jaoks?
Esimene ja kÔige ilmsem viis on anda see kasutatava rakenduse parameetrina.
Kasulikkuse pÀrast ping pakume seda valiku kaudu -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 ~]$Seda kÔigi sÔlmede multisaatepingi kasutades saime vastused kuuelt IPv6 sÔlmelt. Vastused tulid Link-Local IPv6 sÔlme aadressidelt, alustades eesliitega fe80::/10.
Et ping ei jĂ€tka ICMPv6 kajapĂ€ringute saatmist lĂ”putult, kuni me selle katkestame, tavaliselt mÀÀrame suvandi -c kaudu saadetavate pakettide arvu. See aga takistab ka pingil mitme ICMPv6 kajapĂ€ringu saatmisel vastu vĂ”tta ja kuvada rohkem kui ĂŒhte ICMPv6 kajavastust. Selle asemel kasutasime suvandit -w, et mÀÀrata, et ping peaks lĂ”ppema 1 sekundi pĂ€rast, olenemata sellest, kui palju ICMPv6 kajataotlusi vĂ”i kajavastuseid saadeti vĂ”i vastu saadeti.
Teine asi, millele tĂ€helepanu pöörata, on (DUP!) vĂ€ljund teisele ja jĂ€rgnevatele vastustele. Need paketid tuvastatakse dubleerivate vastustena, kuna neil on sama ICMP jada vÀÀrtus, mis algselt saadetud ĂŒksikutel ICMPv6 kajapĂ€ringutel. Need ilmuvad seetĂ”ttu, et ICMPv6 multisaate kajapĂ€ring toob kaasa mitu individuaalset unicast vastust. Duplikaatide arv on mĂ€rgitud ka statistika kokkuvĂ”ttes.
Liideste mÀÀratlemine â tsooni ID
Teine viis liidese kasutamiseks on osa IPv6 aadressiparameetrist.
Selle nÀidet nÀeme pingi vÀljundis, kus reageerivate IPv6 hostide aadressidel on ka jÀrelliide %enp3s2, nÀiteks:
64 bytes from fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 time=0.438 msSeda liideste mÀÀramise meetodit kirjeldatakse ametlikult artiklis [RFC4007], "IPv6 mÀÀratletud aadressiarhitektuur". Kuigi neid nimetatakse tavaliselt operatsioonisĂŒsteemi liidesteks, mÀÀratlevad nad tegelikult midagi ĂŒldisemat â "tsooni" vĂ”i "ulatust".
Ăldisemate tsoonide vĂ”i ulatuse tsoonide olemasolu pĂ”hjuseks on see, et nagu mainitud [RFC4007]-s, vĂ”ib IPv6 sĂ”lmel olla mitu erinevat IPv6 liidest, mis on ĂŒhendatud sama kanaliga. Need liidesed on sama tsooni liikmed.
Ăhe operatsioonisĂŒsteemi tsoonis peaks olema vĂ”imalik grupeerida mitu liidest; ma ei tea hetkel, kas see on vĂ”imalik jĂ€rgmistes tsoonides: Linux ja kuidas seda teha.
Sufiksi kasutamine %<zone_id>, saame kÀsurea valiku eemaldada -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-kohaliku aadressi vastused
Sellest kÔiki sÔlme hÔlmavast multisaatepingist saime kokku 6 unikaalset vastust.
Need vastused tulid unicast Link-Local IPv6 hostiaadressidelt. NĂ€iteks siin on esimene vastus:
64 bytes from fe80::2392:6213:a15b:66ff%enp3s2: icmp_seq=1 ttl=64 time=0.106 msUnicast Link-Local IPv6-aadressid on nĂ”utavad kĂ”igis IPv6-toega liidestes [RFC4291], âIP-versiooni 6 aadressiarhitektuurâ. Selle pĂ”hjuseks on asjaolu, et IPv6 sĂ”lmel on alati automaatselt unicast IPv6 aadress, mida ta saab vĂ€hemalt kasutada oma otse ĂŒhendatud linkidel teiste sĂ”lmedega suhtlemiseks. See hĂ”lmab teiste hostide rakendustega suhtlemist Link-Local hostiaadresside kaudu.
See lihtsustab selliste protokollide kavandamist ja rakendamist nagu IPv6 Neighbor Discovery ja OSPFv3. Samuti vĂ”imaldab see hostide lĂ”ppkasutajate rakendustel kanali kaudu suhelda, ilma et oleks vaja kanalil muud toetavat IPv6 infrastruktuuri. Otsesuhtlus ĂŒhendatud IPv6 hostide vahel ei nĂ”ua ĂŒhenduses IPv6 ruuterit ega DHCPv6 serverit.
Link-Local aadressid algavad 10-bitise eesliitega fe80, millele jĂ€rgneb 54 nullbitti ja seejĂ€rel 64-bitine liidese identifikaator (IID). Ălaltoodud esimeses vastuses 2392:6213:a15b:66ff on 64-bitine IID.
Looped Multicast
Vaikimisi tagastatakse multisaatepaketid need saatnud sÔlme sisemiselt. See juhtub nii IPv6 kui ka IPv4 aadresside puhul.
Selle vaikekÀitumise pÔhjuseks on see, et multisaadete pakettide saatmisel vÔib saatvas hostis ja ka kusagil vÔrgus töötada ka kohalik kuulamisrakendus. See kohalik rakendus peab vastu vÔtma ka multisaatepakette.
Meie pingi vÀljundis nÀeme seda multiedastuse kohalikku ahelat:
[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!)
...Esimene ja kiireim vastus (0,106 ms vÔrreldes 0,453 ms-ga) pÀrineb liideses endas konfigureeritud Link-Local aadressist enp3s2.
[mark@opy ~]$ ip addr show dev enp3s2 | grep fe80
inet6 fe80::2392:6213:a15b:66ff/64 scope link noprefixroute
[mark@opy ~]$Utiliit ping pakub vÔimalust parameetri abil kohaliku multisaate tagasiside mahasurumiseks -L. Kui saadame selle lipuga kÔiki sÔlme hÔlmava multisaatepingi, on vastused piiratud kaugsÔlmedega. Me ei saa saatmisliidese Link-Local aadressilt vastust.
[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-kohalikud aadressid
Nagu vÔite arvata, ei anna ka unicast Link-Local aadressid iseenesest piisavalt teavet, et nÀidata, millist liidest nendeni jÔudmiseks kasutada. Nagu kÔigi sÔlmede multisaatepingi puhul, peame ka kÀsurea parameetrina mÀÀrama liidese ping vÔi tsooni ID koos aadressiga Link-Local aadresside pingimisel.
Seekord saame kasutada -csaadetud ja vastuvÔetud pakettide ja vastuste arvu piiramiseks ping, kuna teostame unicast pingi.
[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 ~]$Pingida (kÔiki) teisi IPv6-aadresse?
Selles artiklis nÀgime, kuidas pingida kÔik kanali IPv6 sÔlmed, kasutades kÔigi sÔlmede multiedastuse IPv6 aadressi ff02::1. Samuti nÀgime, kuidas mÀÀrata, millist liidest kasutada kÔigi sÔlmede multiedastuse IPv6 aadressiga, kuna aadress ise ei saa seda teavet anda. Kasutasime kas kÀsurea valikut pingvÔi mÀÀras liidese jÀrelliide abil %<zone_id>.
SeejÀrel Ôppisime tundma unicast Link-Local aadresse, mida kasutatakse kÔigi sÔlmede multisaadete ICMPv6 kajapÀringutele vastamiseks.
Samuti nÀgime, kuidas multisaadete paketid vaikimisi saatvasse sÔlme tagastatakse ja kuidas seda utiliidi jaoks keelata ping.
LĂ”puks pingestasime jĂ€relliidet kasutades ĂŒhe Link-Local aadressi %<zone_id>, kuna ka Link-Locali aadressid ise ei anna teavet vĂ€ljuva liidese kohta.
Kuidas on siis kÔigi teiste sÔlmede pingiga ja nende globaalsete unicast-aadresside (GUA-de) (st nende avaliku aadressi Internetis) vÔi ainulaadsete kohalike unicast-aadresside (ULA) hankimisega? Vaatleme seda jÀrgmises blogipostituses.
See on kÔik.
Lisateavet meie kursuse kohta saate aadressilt.
Allikas: www.habr.com
