AtlikuÅ”as dažas dienas lÄ«dz jaunas plÅ«smas sÄkumam ar Ätrumu
EmuÄra ziÅu sÄrija par padomiem un trikiem IPv6 ping problÄmu novÄrÅ”anai (ICMPv6 Echo Request/Echo Reply)
LÅ«dzu, Åemiet vÄrÄ, ka es izmantoju Linux (Ä«paÅ”i Fedora 31), tomÄr citu operÄtÄjsistÄmu ping komandas sintaksei, cerams, vajadzÄtu bÅ«t ļoti lÄ«dzÄ«gai.
Ping visiem IPv6 mezgliem kanÄlÄ
Pirmais un vienkÄrÅ”Äkais padoms ir ping visiem IPv6 mezgliem saitÄ.
IPv6 izmanto multiraides adreses visu veidu saziÅai viens pret daudziem. Nav apraides (vai apraides) IPv6 adreÅ”u. Tas atŔķir IPv6 no IPv4, kur ir vairÄki apraides adreÅ”u veidi, piemÄram, āierobežotÄ apraidesā adrese 255.255.255.255 [RFC1122].
TomÄr ir āvisu mezglu multiraidesā IPv6 adrese, tÄpÄc mÄs to izmantosim, lai ping visiem IPv6 mezgliem saitÄ. ("Apraides" adrese patiesÄ«bÄ ir tikai Ä«paÅ”i nosaukta multiraides adrese, kas ir multiraides grupa, kas ietver visus mezglus. Å emiet vÄrÄ, ka, piemÄram, "grupas" vai multiraides adreses bits ir ieslÄgts Ethernet apraides adresÄs saites slÄnÄ«. ).
Visu mezglu multiraides IPv6 adrese kanÄlam: ff02::1. ff
apzÄ«mÄ multiraides IPv6 adresi. NÄkamais 0 ir karoga daļa ar atiestatÄ«tiem bitiem.
TÄlÄk 2
definÄ multiraides grupas apgabalu. AtŔķirÄ«bÄ no multiraides IPv4 adresÄm, multiraides IPv6 adresÄm ir darbÄ«bas joma. TvÄruma vÄrtÄ«ba norÄda tÄ«kla daļu, pa kuru ir atļauts pÄrsÅ«tÄ«t multiraides paketi. Kad pakete sasniedz norÄdÄ«tÄs darbÄ«bas jomas robežu, pakete ir jÄatmet neatkarÄ«gi no tÄ, vai tÄs apgriezienu skaita lauks nav nulle. Protams, ja apiÅu skaits sasniedz nulli pirms noteiktÄs multiraides grupas robežas sasniegÅ”anas, tas arÄ« tiek nekavÄjoties atiestatÄ«ts. Å eit ir pilns IPv6 multiraides tvÄruma saraksts.
Visbeidzot, ::1
norÄda visu mezglu multiraides grupu.
Par adresi ff02::1
JÄatzÄ«mÄ, ka tas ir neskaidrs. Adrese IPv6 resursdatorÄ ar vairÄkÄm saskarnÄm, piemÄram, marÅ”rutÄtÄjÄ vai daudzvietÄ«gÄ resursdatorÄ ff02::1
nav nekÄ, kur jÅ«s varat norÄdÄ«t, kuram interfeisam nosÅ«tÄ«t ICMPv6 atbalss pieprasÄ«jumus vai sagaidÄ«t ICMPv6 atbalss atbilžu saÅemÅ”anu, kad tÄs pienÄk. ff02::1
ir derÄ«gs un to var izmantot jebkurÄ no saskarnÄm un kanÄliem, kas pievienoti vairÄku interfeisu mezglam.
TÄtad, kad mÄs piesÅ«tÄm visus IPv6 mezglus saitei, mums kaut kÄ jÄpaziÅo arÄ« utilÄ«tai ping
IPv6, kuru interfeisu izmantot.
SaskarÅu definÄÅ”ana ā komandrindas opcija
KÄ mÄs jau redzÄjÄm, visu mezglu multiraides adrese, kuru vÄlamies izmantot, ir ā ff02::1
- nesniedz nekÄdu informÄciju par to, ar kuru saskarni nosÅ«tÄ«t un saÅemt ICMPv6 atbalss pieprasÄ«jumu un atbalss atbildes paketes.
TÄtad, kÄ norÄdÄ«t interfeisu, kas jÄizmanto multiraides adreÅ”u telpai vai unicast Link-Local adreÅ”u telpai?
Pirmais un acÄ«mredzamÄkais veids ir nodroÅ”inÄt to kÄ parametru lietojumprogrammai, kuru mÄs izmantojam.
Par lietderību ping
mÄs to nodroÅ”inÄm, izmantojot opciju -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 ~]$
Izmantojot Å”o visu mezglu multiraides ping, mÄs saÅÄmÄm atbildes no 6 IPv6 mezgliem. Atbildes tika saÅemtas no Link-Local IPv6 mezglu adresÄm, sÄkot ar prefiksu fe80::/10
.
Ka ping
neturpina sÅ«tÄ«t ICMPv6 atbalss pieprasÄ«jumus bezgalÄ«gi, lÄ«dz mÄs to pÄrtraucam, mÄs parasti norÄdÄm nosÅ«tÄmo pakeÅ”u skaitu, izmantojot opciju -c. TomÄr tas arÄ« neļauj pingam pieÅemt un parÄdÄ«t vairÄk nekÄ vienu ICMPv6 atbalss atbildi, nosÅ«tot multiraides ICMPv6 atbalss pieprasÄ«jumu. TÄ vietÄ mÄs izmantojÄm opciju -w, lai norÄdÄ«tu, ka ping jÄpabeidz pÄc 1 sekundes neatkarÄ«gi no tÄ, cik ICMPv6 atbalss pieprasÄ«jumu vai atbalss atbilžu tika nosÅ«tÄ«ts vai saÅemts.
VÄl viena lieta, kurai jÄpievÄrÅ” uzmanÄ«ba, ir (DUP!
) izvade uz otro un turpmÄkajÄm atbildÄm. Å Ä«s paketes tiek identificÄtas kÄ atbildes dublikÄti, jo tÄm ir tÄda pati ICMP secÄ«bas vÄrtÄ«ba kÄ atseviŔķiem ICMPv6 atbalss pieprasÄ«jumiem, kas tika nosÅ«tÄ«ti vispirms. Tie parÄdÄs, jo ICMPv6 multiraides atbalss pieprasÄ«jums rada vairÄkas atseviŔķas unicast atbildes. DublikÄtu skaits norÄdÄ«ts arÄ« statistikas apkopojumÄ.
SaskarÅu definÄÅ”ana ā zonas ID
VÄl viens veids, kÄ atklÄt saskarni lietoÅ”anai, ir daļa no IPv6 adreses parametra.
PiemÄru var redzÄt ping izvadÄ, kur atbildÄ«go IPv6 saimniekdatoru adresÄm ir arÄ« sufikss %enp3s2
, piemÄram:
64 bytes from fe80::1d36:1fff:fefd:82be%enp3s2: icmp_seq=1 ttl=64 time=0.438 ms
Å Ä« saskarÅu norÄdÄ«Å”anas metode ir formÄli aprakstÄ«ta [RFC4007], "IPv6 definÄtÄs adreses arhitektÅ«ra". Lai gan tos parasti sauc par operÄtÄjsistÄmas interfeisu, tie patiesÄ«bÄ definÄ kaut ko vispÄrÄ«gÄku ā "zonu" vai "tvÄrumu".
Iemesls vispÄrÄ«gÄku zonu vai darbÄ«bas jomu zonu izveidei ir tÄds, ka, kÄ minÄts [RFC4007], IPv6 mezglam var bÅ«t vairÄkas atŔķirÄ«gas IPv6 saskarnes, kas savienotas ar vienu un to paÅ”u kanÄlu. Å Ä«s saskarnes ir vienas zonas dalÄ«bnieki.
JÄbÅ«t iespÄjai grupÄt vairÄkas saskarnes operÄtÄjsistÄmas zonÄ; PaÅ”laik es nezinu, vai tas ir iespÄjams ar Linux vai kÄ to izdarÄ«t.
Izmantojot piedÄkli %<zone_id>
, mÄs varam noÅemt komandrindas opciju -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 ~]$
Saites vietÄjÄs adreses atbildes
No Ŕī visu mezglu multiraides ping mÄs saÅÄmÄm kopumÄ 6 unikÄlas atbildes.
Å Ä«s atbildes tika saÅemtas no unicast Link-Local IPv6 resursdatora adresÄm. PiemÄram, Å”eit ir pirmÄ atbilde:
64 bytes from fe80::2392:6213:a15b:66ff%enp3s2: icmp_seq=1 ttl=64 time=0.106 ms
Unicast Link-Local IPv6 adreses ir nepiecieÅ”amas visÄs saskarnÄs, kurÄs iespÄjots IPv6 [RFC4291], āIP 6. versijas adresÄÅ”anas arhitektÅ«raā. Iemesls tam ir tÄds, ka IPv6 mezglam vienmÄr automÄtiski ir unicast IPv6 adrese, ko tas var vismaz izmantot, lai sazinÄtos ar citiem mezgliem tÄ tieÅ”i savienotajÄs saitÄs. Tas ietver saziÅu ar lietojumprogrammÄm citos saimniekdatoros, izmantojot Link-Local resursdatora adreses.
Tas vienkÄrÅ”o tÄdu protokolu kÄ IPv6 Neighbor Discovery un OSPFv3 izstrÄdi un ievieÅ”anu. Tas arÄ« ļauj galalietotÄju lietojumprogrammÄm resursdatoros sazinÄties pa kanÄlu, neprasot kanÄlÄ nekÄdu citu atbalstoÅ”u IPv6 infrastruktÅ«ru. TieÅ”ai saziÅai starp pievienotajiem IPv6 resursdatoriem savienojumam nav nepiecieÅ”ams IPv6 marÅ”rutÄtÄjs vai DHCPv6 serveris.
Link-Local adreses sÄkas ar 10 bitu prefiksu fe80
, kam seko 54 nulles biti un pÄc tam 64 bitu interfeisa identifikators (IID). IepriekÅ” minÄtajÄ pirmajÄ atbildÄ 2392:6213:a15b:66ff
ir 64 bitu IID.
Looped Multicast
PÄc noklusÄjuma multiraides paketes tiek iekÅ”Äji atgrieztas mezglÄ, kas tÄs nosÅ«tÄ«jis. Tas notiek gan IPv6, gan IPv4 adresÄÅ”anai.
Å Ä«s noklusÄjuma darbÄ«bas iemesls ir tas, ka, nosÅ«tot multiraides paketes, var bÅ«t arÄ« klausÄ«Å”anÄs vietÄjÄ multiraides lietojumprogramma, kas darbojas paÅ”Ä sÅ«tÄ«tÄja resursdatorÄ, kÄ arÄ« kaut kur tÄ«klÄ. Å ai vietÄjai lietojumprogrammai ir jÄsaÅem arÄ« multiraides paketes.
MÄs varam redzÄt Å”o multiraides lokÄlo loku mÅ«su ping izvadÄ:
[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!)
...
PirmÄ un ÄtrÄkÄ atbilde (0,106 ms salÄ«dzinÄjumÄ ar 0,453 ms) nÄk no Link-Local adreses, kas konfigurÄta paÅ”Ä saskarnÄ enp3s2
.
[mark@opy ~]$ ip addr show dev enp3s2 | grep fe80
inet6 fe80::2392:6213:a15b:66ff/64 scope link noprefixroute
[mark@opy ~]$
Lietderība ping
nodroÅ”ina veidu, kÄ apspiest vietÄjo multiraides atgriezenisko saiti, izmantojot parametru -L
. Ja mÄs nosÅ«tÄm visu mezglu multiraides ping ar Å”o karogu, atbildes ir ierobežotas ar attÄliem mezgliem. MÄs nesaÅemam atbildi no sÅ«tÄ«Å”anas saskarnes Link-Local adreses.
[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 saites vietÄjÄs adreses
KÄ jÅ«s varÄtu nojaust, unicast Link-Local adreses paÅ”as par sevi arÄ« nesniedz pietiekami daudz informÄcijas, lai norÄdÄ«tu, kuru saskarni izmantot, lai tÄs sasniegtu. TÄpat kÄ visu mezglu multiraides ping, mums ir jÄnorÄda arÄ« interfeiss kÄ komandrindas parametrs ping
vai zonas ID ar adresi, pingot Link-Local adreses.
Å oreiz mÄs varam izmantot -c
lai ierobežotu nosÅ«tÄ«to un saÅemto pakeÅ”u un atbilžu skaitu ping
, jo mÄs veicam 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 ~]$
Vai pÄrbaudÄ«t (visas) citas IPv6 adreses?
Å ajÄ rakstÄ mÄs redzÄjÄm, kÄ ping visiem IPv6 mezgliem kanÄlÄ, izmantojot visu mezglu multiraides IPv6 adresi. ff02::1
. MÄs arÄ« redzÄjÄm, kÄ norÄdÄ«t, kuru saskarni izmantot ar visu mezglu multiraides IPv6 adresi, jo pati adrese nevar sniegt Å”o informÄciju. MÄs izmantojÄm vai nu komandrindas opciju ping
, vai norÄdÄ«jis interfeisu, izmantojot sufiksu %<zone_id>
.
PÄc tam mÄs uzzinÄjÄm par unicast Link-Local adresÄm, kuras tiek izmantotas, lai atbildÄtu uz visu mezglu multiraides ICMPv6 atbalss pieprasÄ«jumiem.
MÄs arÄ« redzÄjÄm, kÄ multiraides paketes pÄc noklusÄjuma tiek atgrieztas sÅ«tÄ«Å”anas mezglÄ un kÄ to atspÄjot utilÄ«tai ping
.
Visbeidzot, mÄs piekodinÄjÄm vienu Link-Local adresi, izmantojot sufiksu %<zone_id>
, jo paÅ”as Link-Local adreses arÄ« nesniedz informÄciju par izejoÅ”o interfeisu.
TÄtad, kÄ ar ping visiem pÄrÄjiem mezgliem un iegÅ«t to globÄlÄs unicast adreses (GUA) (tas ir, publiskÄs adreses internetÄ) vai unikÄlÄs vietÄjÄs unicast adreses (ULA)? MÄs to aplÅ«kosim nÄkamajÄ emuÄra ierakstÄ.
Tas ir viss.
VairÄk par mÅ«su kursu varat uzzinÄt vietnÄ
Avots: www.habr.com