IPv6 kÔigi sÔlmede pingimine kanalil

Uue kursuse alguseni on jÀÀnud vaid mĂ”ned pĂ€evad „VĂ”rguharu” OTUSest. Sellega seoses soovime jagada teiega tĂ”lget kasulikest materjalidest selle teema kohta.

IPv6 kÔigi sÔlmede pingimine kanalil

Seeria blogiartiklitest, mis kÀsitleb IPv6 pingimise (ICMPv6 Echo Request/Echo Reply) tÔrkeotsingu nÀpunÀiteid ja soovitusi.

Pange tĂ€hele, et kasutan Linuxit (eriti Fedora 31), kuid ping kĂ€skude sĂŒntaks teistes operatsioonisĂŒsteemides peaks olema vĂ€ga sarnane.

IPv6 kÔigi sÔlmede pingimine kanalil

Esimene ja kÔige lihtsam soovitus on pingida kÔiki IPv6 sÔlme kanalil.

IPv6 kasutab kĂ”ikide â€žĂŒhe palve” suhtluste jaoks multifunktsionaalse adresse. IPv6-l puuduvad ĂŒlekandeaadressid. See eristab IPv6-d IPv4-st, kus on mitmeid ĂŒlekandeaadresse, nĂ€iteks „piiratud ĂŒlekanne” aadress 255.255.255.255 [RFC1122].

Kuid on olemas „kĂ”ikide sĂ”lmede multifunktsionaalne” (ĂŒldine multifunktsionaalne) IPv6 aadress, seega kasutame seda kanalil kĂ”igi IPv6 sĂ”lmede pingimiseks. („Ülekande” aadress on tegelikult lihtsalt eraldi nimetatud multifunktsionaalne aadress, mis on rĂŒhmitus kĂ”igi sĂ”lmedega. Pange tĂ€hele, et nĂ€iteks rĂŒhma vĂ”i multifunktsionaalse aadressi bitti sisaldatakse Etherneti ĂŒlekandes aadressides kanali tasemel).

KÔikide sÔlmede multifunktsionaalne IPv6 aadress kanalile: ff02::1. ff tÀhistab multifunktsionaalset IPv6 aadressi. JÀrgmine 0 on mitteaktiivsete bittide mÀrk.

Edasi 2 mÀÀrab multifunktsionaalse grupi ala. Erinevalt IPv4 multifunktsionaalsetest aadressidest on IPv6 multifunktsionaalsed aadressid ulatusega. UlatusvÀÀrtus nĂ€itab, millises osas vĂ”rku on lubatud multifunktsionaalse paketi edastamine. Kui pakett saavutab mÀÀratud ulatuse piiri, peab pakett olema tagastatud, hoolimata sellest, kas selle ĂŒlemineku loend (Hop Count) on null. Loomulikult, kui ĂŒlemineku loend jĂ”uab nulli enne mÀÀratud ulatuse piiri, tagastatakse see koheselt. Siin on IPv6 multifunktsionaalsete ulatuste tĂ€ielik loetelu.

LÔpuks ::1 mÀÀratleb kÔikide sÔlmede multifunktsionaalse grupi.

Aadressist ff02::1 tuleb mĂ€rkida, et see on mitmetĂ€henduslik. IPv6 sĂ”lm, millel on mitu liidest, nagu marsruuter vĂ”i mitmesugune host, jagab seda aadressi. ff02::1 ei ole midagi, kus saaks mĂ€rkida, millisele liidesele ICMPv6 eho-pĂ€ringud saata vĂ”i oodata ICMPv6 eho-vastuseid, kui need saabuvad. ff02::1 on kehtiv ja vĂ”ib kasutada igasugustel liidestel ja kanalitel, mis on ĂŒhendatud mitme liidesega sĂ”lmega.

SeetÔttu, kui me pingime kÔik IPv6 sÔlmed kanalil, peame ka kuidagi teatama utiliidile ping millist liidest IPv6 jaoks kasutada.

Liideste mÀÀramine on kÀskluse rida parameeter.

Nagu juba nĂ€gime, multicast aadress, mida soovime kasutada — ff02::1 — ei anna mingit teavet selle kohta, millisele liidesele eho-pĂ€ringu ja eho-vastuse pakette saata ja vastu vĂ”tta.

Kuidas me siis mÀÀrame liidese, mida kasutada multikast aadressiruumi vÔi unikaalse Link-Local aadressi jaoks?

Esimene ja kÔige ilmsem viis on edastada see parameetrina rakendusele, mida me kasutame.

KĂ€skluse jaoks ping edastame selle valikuna -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 ~]$

Selle all-nodes multicast pingi abil saime vastuseid 6 IPv6 sÔlmelt. Vastused tulid sÔlme Link-Local IPv6 aadressidelt, mis algavad prefiksiga fe80::/10.

Et ping ei edastanud pidevalt ICMPv6 eho-pĂ€ringuid seni, kuni me ei katkestanud, me tavaliselt mÀÀrame saadetavate pakettide arvu -c valiku kaudu. Kuid see ei luba pingil ka nĂ€idata rohkem kui ĂŒhte ICMPv6 eho-vastust, kui saadetakse multikast eho-pĂ€ring ICMPv6. Selle asemel kasutasime valikut -w, et mÀÀrata, et ping peaks lĂ”ppema 1 sekundi pĂ€rast, sĂ”ltumata sellest, kui palju eho-pĂ€ringuid vĂ”i eho-vastuseid ICMPv6 on saadetud vĂ”i saadud.

Veel ĂŒks asi, millele tĂ€helepanu pöörata, on (DUP!) tulemus teisel ja jĂ€rgnevatel vastustel. Need paketid identifitseeritakse kui vastuse duplikaadid, kuna nad omavad sama ICMP jĂ€rjestuse vÀÀrtust nagu eraldi ICMPv6 helikutsed, mis saadeti esmalt. Need ilmnevad, kuna multikast ICMPv6 helikutsed toovad kaasa mitmeid individuaalseid unikaalseid vastuseid. Duplikaatide arv on samuti nĂ€idatud statistika kokkuvĂ”ttes.

Liideste mÀÀratlemine — Zone ID

Veel ĂŒks viis liidese pakkumiseks kasutamiseks on osa IPv6 aadressi parameetrist.

Saame seda nÀha ping'i vÀljundis, kus vastavate IPv6 sÔlmede aadressidel on samuti sufiks. %enp3s2, nÀiteks:

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

See viis liideste mÀÀratlemiseks on ametlikult kirjeldatud [RFC4007], „IPv6 mÀÀratud aadresside arhitektuur“. Kuigi neid nimetatakse tavaliselt operatsioonisĂŒsteemi liidesees, mÀÀratlevad nad tegelikult midagi ĂŒldisemat — „ala“ vĂ”i „ulatus“.

Üldiste vĂ”i ulatuslike alade olemasolu pĂ”hjus on see, et nagu [RFC4007] mainib, vĂ”ib IPv6 sĂ”lm olla ĂŒhendatud mitme erineva IPv6 liidese kaudu sama kanali kaudu. Need liidesed kuuluvad ĂŒhe ala hulka.

Tuleb olla vĂ”imalik rĂŒhmitada mitu liidest sama operatsioonisĂŒsteemi alusel; praegu ei tea ma, kas see on Linuxis vĂ”imalik ja kuidas seda teha.

Kasutades sufiksi %, saame eemaldada kÀsurea parameetri -I ping.

[mark@opy ~]$ ping -w 1 ff02::1%enp3s2
PING ff02::1%enp3s2(ff02::1%enp3s2) 56 data bytes
64 baitit from fe80::2392:6213:a15b:66ff%enp3s2: icmp_seq=1 ttl=64 time=0.106 ms
64 baitit from fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 time=0.453 ms (DUP!)
64 baitit from fe80::f31c:ccff:fe26:a6d9%enp3s2: icmp_seq=1 ttl=64 time=0.606 ms (DUP!)
64 baitit from fe80::7e31:f5ff:fe1b:9fdb%enp3s2: icmp_seq=1 ttl=64 time=6.23 ms (DUP!)
64 baitit from fe80::f7f8:15ff:fe6f:be6e%enp3s2: icmp_seq=1 ttl=64 time=157 ms (DUP!)
64 baitit from fe80::877d:4ff:fe1a:ad79%enp3s2: icmp_seq=1 ttl=64 time=159 ms (DUP!)
64 baitit from fe80::877d:4ff:fe1a:b881%enp3s2: icmp_seq=1 ttl=64 time=161 ms (DUP!)
64 baitit from fe80::23d:e8ff:feec:958c%enp3s2: icmp_seq=1 ttl=64 time=179 ms (DUP!)
 
--- ff02::1%enp3s2 ping statistics ---
1 paketti edastati, 1 saadud, +7 duplikaati, 0% pakettide kadu, aeg 0ms
rtt min/avg/max/mdev = 0.106/82.858/179.216/81.281 ms
 
[mark@opy ~]$

Link-Local aadresside vastused

Sellest all-nodes multikasti pingist saime kokku 6 unikaalset vastust.

Need vastused tulid IPv6 sÔlmede unikaalsetelt Link-Local aadressidelt. NÀiteks, siit on esimene vastus:

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

UniCast Link-Local IPv6-aadresse on vajalikud kĂ”igis IPv6-tugevatel liidestel [RFC4291], "IP versiooni 6 aadresside arhitektuur". Selle pĂ”hjuseks on see, et IPv6 sĂ”lm on alati automaatselt mÀÀratud uni-cast IPv6-aadress, mida ta saab kasutada vĂ€hemalt otse ĂŒhendatud kanalite kaudu teiste sĂ”lmede suhtlemiseks. See hĂ”lmab sidepidamist teiste hostide rakendustega Link-Local hostide aadresside kaudu.

See lihtsustab protokollide, nagu IPv6 Neighbor Discovery ja OSPFv3, arendamist ja rakendamist. See vĂ”imaldab ka lĂ”ppkasutaja rakendustel hostides andmeid vahetada kanalil, ilma et oleks vaja mistahes muud IPv6 tugevat infrastruktuuri. Otse ĂŒhendatud IPv6 hostide vahel ei ole vajalik IPv6 ruuter vĂ”i DHCPv6 server ĂŒhenduses.

Link-Local aadressid algavad 10-bitisest prefiksist fe80, millele jĂ€rgneb 54 nullbitti, ja seejĂ€rel 64-bitine liidese identifikaator (IID). Ülaltoodud esimeses vastuses 2392:6213:a15b:66ff — see on 64-bitine IID.

TsĂŒkliline Multicast

Vaikimisi saadetakse multikaastpaketid tagasi sisemiselt sÔlmele, kes need saadab. See toimub nii IPv6 kui ka IPv4 aadresside puhul.

Selle vaikimisi kÀitumise pÔhjuseks on see, et multikaastpakette saadetuna vÔib samaaegselt töötada kuulav kohaliku multikaasti rakendus, mis töötab saatval hostil, samuti kuskil vÔrgus. See kohalik rakendus peab samuti saama multikaastpakette.

Saame nĂ€ha seda multikaastilist lokaalset tsĂŒklit meie ping vĂ€ljastuses:

[mark@opy ~]$ ping -w 1 ff02::1%enp3s2
PING ff02::1%enp3s2(ff02::1%enp3s2) 56 andmebaidi
64 baiti fe80::2392:6213:a15b:66ff%enp3s2: icmp_seq=1 ttl=64 aeg=0.106 ms
64 baiti fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 aeg=0.453 ms (KORD!)
...

Esimene ja kÔige kiirem vastus (0,106 ms vÔrreldes 0,453 ms) tuleb Link-Local aadressilt, mis on seadistatud liidesel 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 viisi multikaast-allika kohaliku tagasiside summutamiseks parameetri kaudu -L. Kui saadame ping all-nodes multikaasti selle lipuga, siis vastused piirduvad eemalolevate sÔlmedega. Me ei saa vastust Link-Local aadressilt, mis kuulub saatva seadme liidesele.

[mark@opy ~]$ ping -L -w 1 ff02::1%enp3s2
PING ff02::1%enp3s2(ff02::1%enp3s2) 56 andmebaidi
64 baiti fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 aeg=0.383 ms
 
64 baiti fe80::f31c:ccff:fe26:a6d9%enp3s2: icmp_seq=1 ttl=64 aeg=0.467 ms (KORD!)
...

Link-Local Aadressi pinge

Nagu vÔite arvata, ei paku unicast Link-Local aadressid iseenesest piisavalt teavet, et nÀidata, millist liidest nende saavutamiseks kasutada. Nagu all-nodes multicasti pinge puhul, tuleb meil samuti mÀÀrata liides kÀsurea parameetrina ping vÔi tsooni ID aadressiga, kui pingime Link-Local aadresse.

Seekord saame kasutada -c, et piirata saadetud ja vastuvÔetud paketide arvu ping, kuna sooritame 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 ~]$

Pinge (kÔiki) teisi IPv6 aadresse?

Selles artiklis Ôppisime, kuidas pinge kÔiki IPv6 sÔlmi kanalil, kasutades all-nodes multicast IPv6 aadressi. ff02::1Samuti nÀgime, kuidas mÀÀrata, millist liidest kasutada all-nodes multicast IPv6 aadressiga, kuna aadress ise ei saa seda teavet anda. Kasutasime kas kÀsurea parameetrit ping, vÔi mÀÀrasime liidese sufiksi kaudu %.

Siis Ôppisime unicast Link-Local aadresside kohta, mis on aadressid, mida kasutatakse all-nodes multicast ICMPv6 eho-pÀringutele vastamiseks.

Samuti nĂ€gime, kuidas multicast paketid naasevad saadetud sĂ”lme vaikimisi ja kuidas seda utiliidi jaoks vĂ€lja lĂŒlitada. ping.

LĂ”puks pingisime ĂŒht Link-Local aadressi, kasutades sufiksit %, kuna Link-Local aadressid ise ei paku teavet vĂ€ljuva liidese kohta.

Kuidas oleks aga pingi kÔiki teisi sÔlmi ja nende globaalsete unicast aadresside (GUA) (st nende avalike aadresside internetis) vÔi unikaalsete kohalike unicast aadresside (ULA) saamisega? KÀsitleme seda jÀrgmises blogiartiklis.

Sellega on kÔik.

Kursuse kohta lisateabe saamiseks vaata avatud uste pÀeva protokolli.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster