Windows ja IPv6

From ICO wiki
Jump to navigationJump to search

IPv6 protokoll ja selle eelised

IPv6 on uus võrgukihi protokoll (tänaseks siiski enam mitte enam kuigi uus, kuid kuna seda siiski ei ole veel globaalselt kasutusele võetud, võib endiselt rääkida uuest protokollist). IPv6 on loodud lahendama mitmeid hetkel laialdaselt kasutusel oleva IPv4 puudujääke ning lisama uusi võimalusi. Mõned enimloetletud probleemid, millele IPv6 protokoll lahenduse peaks pakkuma:

  • IPv4 aadressruumi ammendumine
    • IPv4 aadressruum on globaalseks kasutamiseks kaugelt liiga väike. Selle leevendamiseks on laialdaselt kasutusele võetud võrguaadresside transleerimine (NAT) – mitme seadme maskeerimine ühe avaliku IP aadressi taha, mõnedes asutustes ka mitme kordne NAT, mis lahendab küll klient – server suhtluse, muudab erinevates privaatvõrkudes olevate arvutite ja seadmete omavahelise kommunikatsiooni keerukaks.
    • IPv6 protokolli korral on aadressruum piisavalt suur, et igale seadmele on võimalik eraldada unikaalne aadress igas mõeldavas IPv6 segmendis.
    Hierarhia puudumine
    • Tulenevalt väikesest aadressruumist ja algupärasest aadresside klassideks jagamisest, pole IPv4 keskkonnas praktiliselt võimalik aadresse struktureerida.
    • IPv6 aadressruum on algusest peale jagatud hierarhiliselt. See võimaldab oluliselt vähendada internetiteenusepakkujate marsruuterites peetavate ning kõigi teenusepakkujate vahel sünkroniseeritavate marsruutimistabelite suurust, mis omakorda võimaldab pakkuda paremat teenust. Samuti muudab aadressruumi hierarhiline kasutamine aadresside omanduse selgeks ja läbipaistvaks.
    IPv4 võrgu seadistamine on keerukas
    • IPv4 aadressid tuleb seadmele assigneerida kas käsitsi või DHCP protokolli kaasabil. Ehkki DHCP kasutamine võib näida piisavana kasutaja keskkonnast, vajab DHCP infrastruktuur siiski administreerimist ning lisandub võrku ühe kriitilise komponendina, mille mittetöötamise korral ei ole klientseadmetel võimalik võrku kasutada.
    • IPv6 seadmed võivad kasutada olekuvaba aadresside autoseadistust – Stateless Address AutoConfiguration (SLAAC), mille korral seade saab omale IPv6 aadressi ning mõned muud seadistused, et toimida IPv6 võrgus selliselt, et ei võrguseadmes ega üheski võrguserveris ei pea selleks midagi muutuma. Siin on selge erinevus DHCP’ga, mille korral peab iga aadressi välja andmiseks DHCP server oma andmebaasis, et seade antud aadressiga siduda, vastava kirje looma.
  • Puuduvad sisse ehitatud autentsus- ja konfidentsiaalsusvahendid.
    • Ehkki selle probleemi lahendamiseks on loodud mitmeid turvalise privaatvõrgu tehnoloogiaid, pole neist ükski protokolli mõttes nõutud. IPv6 seevastu nõuab seadmelt Internet Protocol Security (IPSec) toetamist.
  • Puuduvad sissehitatud privaatsusmeetmed
    • IPv4 aadress on oma olemuselt väga staatiline. Reeglina assigneeritakse avalikud IP aadressid kasutajatele lepingu alusel ning on väga ebatõenäoline, et need lepingu kehtivuse ajal muutuvad. Samuti on suhteliselt staatiline ka niinimetatud privaataadresside ruum – DHCP server peab meeles, millisele seadmele mingi aadress eraldati ning võimalusel üritab seda aadressi seadmega seotuna ka hoida. Sellest tulenevalt on teades vaid kasutaja IPv4 aadressi võimalik selle kasutaja kohta üpris palju teada saada, samuti on võimalik IPv4 aadressi abil kasutaja või kasutajate grupi toiminguid suhteliselt edukalt jälgida.
    • IPv6 võimaldab kasutada privaatsuslaiendusi. Kui privaatsuslaiendused on sisse lülitatud, genereerib IPv6 host etteantud aadressruumis kasutatava IPv6 aadressi mitte ainult võrguseadme füüsilise kihi aadressi (MAC address) alusel vaid lisab sellele turvaliselt ühe juhusliku numbri, mis muutub ajas pidevalt. Korraga võib selliseid ajutisi aadresse kasutusel olla rohkem kui üks ning suhtlus ülejäänud seadmetega toimub just kasutades selliseid ajutisi aadresse. Seetõttu on pelgalt IPv6 aadressi järgi praktiliselt võimatu öelda, kas järjestikkused pöördumised on pärit ühest ja samast või erinevatest seadmetest. Windowsis on privaatsuslaiendused vaikimisi sisse lülitatud. IPv6 privaatsuslaiendused ei kaitse kasutajat siiski rakenduskihil toimiva jälgimise vastu (näiteks HTTP küpsised vms.).
  • IPv4 on väga tihedalt asustatud aadressruum
    • IPv4 on oma algusaegadest peale olnud disainitud kui tihedalt asustatud aadressruum. Tänapäeval on IPv4 asustustihedus eriti suur. See tõsiasi avab võimalused mitmeteks turvarünneteks – IPv4 aadressruumi skaneerimine on lihtsalt teostatav ning see võimaldab ründajal kergesti leida sihtmärke. Isegi terve IPv4 aadressruumi skaneerimine ei ole tänapäeval ülemäära keeruline ülesanne.
    • IPv6 seevastu on algusest peale disainitud olema väga hõredalt asustatud aadressruum. Isegi kui IPv6 oleks kasutusel ainukese võrguprotokollina ja kõik seadmed omaks avalikku globaalselt marsruuditavat aadressi, oleks võrkude, isegi üksikute alamvõrkude skaneerimine lootusetu ettevõtmine. Seega võib väita, et kui ründaja saa rünnatava IPv6 aadressi kuskilt teada, siis tõenäosus rünnatava (või üldse mõne seadme) avastamiseks skaneerimistehnoloogia abil on kaduvväike.

IPv6 aadress

IPv6 aadress on 128 bitti pikk täisarv, mis kasutaja mugavuse huvides esitatakse kuueteistkümnendsüsteemi numbritena. Kuueteistkümnendsüsteemi numbrid on lihtsuse huvides jagatud kaheksasse gruppi, mida eraldab üksteisest koolon. Üks võimalik IPv6 aadress on näiteks selline: 2001:4830:1100:813a:bcef:4df8:e79a:4426. Esmapilgul tundub niisugune aadress küllaltki keeruline lugeda, kuid praktikas tegelevad nende aadressidega valdavalt masinad, mistõttu see ei ole kuigi suur probleem. Inimkasutamiseks mõeldud aadressid (marsruuterite, võrguserverite jms. aadressid) valitakse tavaliselt lihtsamad ning esitatakse lihtsustatud kujul. IPv6 aadressi kirjutamisel on lubatud järgmised lihtsustused:

  • Iga kooloniga eraldatud bloki esimesed nullid tohib ära jätta.
    • Näiteks 0001 asemel võib kirjutada 1, 0042 asemele võib kirjutada 42, kuid 1000 tuleb kirjutada välja – lõpust nulle ära jätta ei tohi.
  • Ühekordselt võib suvalise arvu järjestikkuseid ainult nulle sisaldavaid blokke ära jätta ja nende asemele kirjutada kaks koolonit.
    • Näiteks fe80:0000:0000:0000:52e5:49ff:fe9f:ada4 asemel võib kirjutada: fe80::52e5:49ff:fe9f:ada4.

Tavaliselt kasutatakse mõlemat lihtsustust korraga. Tulemuseks on õigesti valitud aadresside korral täiesti loetavad ja meeldejäävad kombinatsioonid, näiteks: 2001:4830:1100:13a::2. On võimalik luua ka „huvitavaid“ või „naljakaid“ IPv6 aadresse – näiteks dead::beef on täiesti legaalne IPv6 aadress. Teatud juhtudel võib kohata ka IPv6 aadressi, mis on kirja pandud kujul ::. See aadress pole tegelikult mitte midagi muud kui 0000:0000:0000:0000:0000:0000:0000:0000. Niisugust aadressi kasutatakse võrgurakendustes, kui soovitakse operatsioonisüsteemile öelda, et rakendus peaks kuulama kõikide seadmele assigneeritud aadressidel (Kuna IPv4 aadressid mahutatakse IPv6 aadressruumi sisse, siis kuulatakse niisugusel juhul tegelikult ka IPv4 ühendusi).

IPv6 aadresside segmenteerimine

IPv4 keskkonnast on teada, et seadmele aadressi andmiseks tuleb minimaalselt määrata IP aadress ning netmask või prefiksi pikkus. IPv6 ei ole siinkohal erinev. Iga seade peab teadma peale oma IPv6 aadressi ka seda, milline osa sellest aadressist määrab võrgu ning millises osas on seadmed eeldatavasti otse adresseeritavad. Võrgumakse esitatakse IPv6 keskkonnas ainult prefiksi pikkustena, mitte ükski teine eritusviis ei ole lubatud. Prefiksi pikkus näitab, mitu bitti IPv6 aadressist määrab võrgu aadressi. Näiteks prefiksi pikkus 64 ütleb, et võrk on määratud 64 bitiga aadressist, mistõttu loogiliselt me ka teame, et ülejäänud 64 bitti jääb hostide adresseerimiseks. Mida suurem on prefiksi pikkus, seda väiksema alamvõrguga on meil tegemist. Näiteks alamvõrk prefiksi pikkusega 64 on oluliselt väiksem kui alamvõrk prefiksi pikkusega 48. Prefiksipikkusega 48 või lihtsalt /48 IPv6 võrku mahub 2^(64-48) = 65536 võrkku, mille prefiski pikkus on 64. IPv6 aadressruumi segmenteerimiseks on kehtestatud teatud kindlad reeglid:

  • 64 on suurim prefiksi pikkus, mis on lubatud – ergo, /64 on vähim IPv6 võrk, mis on lubatud, ehk veel teisisõnu – vähemalt pool IPv6 aadressist on alati kasutusel üksiku seadme adresseerimiseks alamvõrgus. IPv4 keskkonnast tulnuna võib selline aadresside raiskamine tunduda kohatuna, kuid praktikas annab see väga suure vabaduse aadressruumiga ringi käimiseks ning võimaldab eksisteerida niisugustel tehnoloogiatel nagu aadresside autoseadistus ning privaatsuslaiendused.
    • /64 alamvõrku enam edasi jagada ei saa – matemaatiliselt oleks see muidugi võimalik aga ükski IPv6 implementatsioon tõenäoliselt ei oleks võimeline sellises võrgus toimima.
  • IPv6 algusaegadel oldi arvamusel, et järgmine alamvõrgu suurus võiks olla /48. See tähendas, et suvalisele kliendile, olenemata sellest, kas tegemist on suurkorporatsiooniga või kodukasutajaga, kes soovib kasutada rohkem kui ühte alamvõrku, tuleb assigneerida /48 alamvõrk.
    • Hiljem koostatud RFC6177 soovitab kodukasutajatele siiski mitte eraldada /48 alamvõrke ning kasutada selle asemel hoopis prefiksi pikkust 56. Motivatsioon sellise muudatuse taga on ilmne – arvamus, et kodukasutajaid ning suurettevõtteid saab käsitleda sarnaselt ei ole ilmtingimata õige. Kuna selgelt piiritletud segmenteerimisnõuded võivad tekitada olukorra, kus võimalikud prefiksi pikkused kirjutatakse seadmete tarkvarasse sisse, siis on mõistlik /64 ja /48 vahele näha ette veel üks jaotus.
    • Endiselt aga ei soovitata klientidele eraldada võrke, mille prefiksi pikkus pole kas 64, 56 või 48. Samas ei takista miski kliendil ise oma aadressruumi jagada oma äranägemise järgi seni kuni ei looda väiksemat võrku kui /64.
  • Internetiteenusepakkujad saavad tavaliselt võrgud prefiksi pikkusega kas 32 või 16, olenevalt teenusepakkuja suurusest.

IPv6 reserveeritud aadressid, Link local aadressid, Multicast

Lisaks üldkasutatavatele aadressidele on IPv6 aadressruumis ettenähtud mitmeid reserveeritud alasid. Olulisimad nendest on järgmised:

  • 0000::/8 – Loopback aadressid
  • 64:ff9b::/96 – aadressruum IPv4 aadresside kapseldamiseks IPv6 aadressi sisse
    • Näeme, et siin on kasutatud prefiksi pikkust 96, mis IPv6 aadresside segmenteerimise mõttes ei ole lubatud. Reaalselt on see aadressruum suurema reserveeritud ruumi sees ning on defineeritud nõnda algoritmilistel kaalutlustel. Nimelt mahub /96 võrgu sisse täpselt IPv4 aadressruum. Niisugune definitsioon lihtsustab teadaoleva IPv4 aadressile vastavat IPv6 aadressi arvutamist.
  • FE80::/10 – “Link local” aadressid
    • Link Local aadress on IPv6 aadress, mille seade saab arvutada oma võrguliidese füüsilise kihi (MAC) aadressist.
      • Ehkki Link local aadresside jaoks on eraldatud /10 ruum, kasutab Windows Ethernet võrgu puhul Link local aadresside puhul prefiksi pikkust 64.
      • Kuna Ethernet võrguliidese MAC aadress 48 bitine, siis jääb ka sellesse aadressruumi pisut tühja ruumi.
      • Link local aadresside puhul on oluline meeles pidada, et sellise aadressi assigneerib operatsioonisüsteem võrguliidesele selle olemasolu fakti tõttu. Põhimõtteliselt võiks ühes ja samas broadcast domeenis seadmed omavahel pakette vahetada ka ainult Link local aadresside abil. Näiteks marsruuteritele sageli ei antagi eraldi IPv6 aadresse, piisab Link local aadressist.
  • FF00::/8 – IPv6 multicast
    • Multicast on IPv6 puhul väga oluline tehnoloogia. Erinevalt IPv4 võrkudest, IPv6 võrgus broadcasti mõistet ei tunta. Kõik olulised sõnumid, mis peavad jõudma rohkem kui ühele seadmele, saadetakse multicasti kasutades.Vähim, mida IPv6 eeldab võrguseadmetelt multicasti osas, on selle käsitlemine broadcastina. Võrguseadmeid, mis standardivastaselt teatud multicast liiklust blokeerivad, ei ole sageli võimalik IPv6 võrkudes kasutada. Õnneks on selliseid seadmeid vähe.

IPv6 ühendus ning selle hankimine, erinevad tunnelid, Seadistamine Windowsis

Ehkki maailmas eksisteerib internetiteenuse pakkujaid, kes on võimelised ja soovivad oma klientidele pakkuda otse IPv6 kasutamise teenust, on täna siiski valdav, et niisugust võimalust standardina ei ole. Põhjuseid on erinevaid – mõnel juhul on probleemiks keskseadmete tarkvara (võrguseadmete tarkvara tootjad soovivad sageli IPv6 litsentside eest küllaltki suurt tasu saada, mille maksmist ei pea kõik internetiteenuse pakkujad majanduslikult põhjendatuks), sageli on probleemsed ka klientseadmed, mille tarkvara jällegi ei pruugi alati IPv6 ühendust toetada. Et sellistest probleemidest üle saada, tunneldatakse IPv6 liiklus sageli IPv4 sisse, kasutades IPv6 ühenduse pakkumiseks olemasolevaid IPv4 võrgusõlmi. Kodukasutaja (või ka ärikasutaja) paigaldab niisuguse lahenduse korral oma arvutivõrku IPv6 ühendust pakkuva seadme, milleks võib olla nii vastava funktsionaalsusega võrguseade kui ka mõni server (näiteks Windows 7 või 8 või mõni Windows Server). Internetiteenuse pakkujad omavad reeglina vastavaid tunnelite konsentraatoreid, mida nimetatakse tunnelbrokeriteks. Suhteliselt levinud on ka skeem, kus kasutaja identiteediga tegeleb mõni katuseorganisatsioon (näiteks www.sixxs.net), mis siis annavad kasutajale teatud reeglite alusel kasutada mõne alamvõrgu – sageli /64, kuid teatud tingimustel on võimalik saada ka /48 võrke ning võimaldab kasutajal termineerida oma tunneleid kõigi antud organisatsiooniga ühinenud internetiteenuse pakkujate juurde. Sellised tunnelid on reeglina mõeldud IPv6 testimiseks, ja isiklikuks kasutamiseks, mitte kommertsliikluse edastamiseks. Kommertskasutuseks tuleb tavaliselt siiski osta omale IPv6 alamvõrk (reeglina siis /48) ning internetiteenuse pakkujaga eraldi kokku leppida selle routingus ja sõlmida vastav kasutusleping.

6in4 tunnel

Kõige lihtsam viis IPv6 liikluse tunneldamiseks IPv4 pakettide sisse. See tunnelitüüp on paketisuuruse mõttes kõige väiksema ülekandekuluga - päiste peale kulutatakse ruumi nii minimaalselt kui võimalik. 6in4 tunneli kasutamiseks peab üldiselt kasutajapoolne seade omama avalikku IPv4 aadressi ning mitte kasutama internetiga suhtlemiseks NAT’i. Kasutaja seadistab staatiliselt internetiteenusepakkuja tunnelikonsentraatori IPv4 aadressi.


6to4 tunnel

See tunnelitüüp on mõeldud IPv4 aadressruumi migreerimiseks IPv6 aadressruumiks. Idee on selles, et igale võimalikule avalikult IPv4 aadressile on seatud vastavusse üks IPv6 aadress. Need aadressid on kokkuleppeliselt võetud vahemikust 2002::/16. Lisaks sellele lubab 6to4 tunnel kasutada ka liiklust vahendavaid relay servereid, mis võivad olla internetiteenuse pakkuja poolt määratud. IPv6 paketid ise kapseldatakse IPv4 pakettide sisse samamoodi nagu seda tehtaks 6in4 tunneli puhul.

Tunnelite seadistamine Windowsis

Nii 6to4 kui ka 6in4 tunnelit on Windowsi 7 ja Windows 8 puhul võimalik kasutada ilma lisatarkvara paigaldamata. Need tunnelid seadistatakse netsh utiliidi või PowerShelli abil.


6in4 tunneli seadistamine

C:\> netsh
Netsh> int ipv6
Netsh interface ipv6> add v6v4tunnel tunneli_nimi <lokaalne aadress> <kaugaadress>

Tunneli nimi on nimi, mis me tunnelile paneme, lokaalne aadress on antud masina avalik IPv4 aadress ning kaugaadress on internetiteenuse pakkuja poolt antud tunneli sihtaadress. Juhul kui internetiteenuse pakkuja marsruuter reklaamib prefiksit (vt. IPv6 automaatseadistus), ilmub tunneli liidesele automaatselt IPv6 aadress ja tekkib ka default route. Reeglina tuleb need aga käsitsi seadistada vastavalt internetiteenuse pakkuja poolt antud juhistele. Järgnevalt lisame näitena käsitsi ühe IPv6 aadressi ning default route. Paneme tähele, et ::/0 tähendab tervet IPv6 aadressvahemikku – mõistlik default route sihtaadress.

Netsh interface ipv6> add addr tunneli_nimi  2001:4830:1100:13a::2/64
Netsh interface ipv6> add route ::/0 tunneli_nimi

Juhul kui internetiteenuse pakkuja on andnud ka alamvõrgu, mida kohtvõrgus võiks kasutada ning meil on soov antud Windows masin seadistada seda liiklust vahendama, võime lisada järgnevad read:

Netsh interface ipv6> add route 2001:ad0:914:1::/64 sisevõrgu_liidese_nimi pub=yes
Netsh interface ipv6> set route ::/0 tunneli_nimi pub=yes
Netsh interface ipv6> set interface sisevõrgu_liidese_nimi forvard=enable advertise=enable

Tulemusena öeldakse Windowsile, et meile kasutada antud alamvõrk 2001:ad0:914:1::/64 on sisevõrgu liidese taga (meie sisevõrgus teisisõnu) ning lubatakse antud liidesega seotud pakettide marsruutimine. Lisaks lülitatakse sisse antud prefiksi reklaamimine sisevõrgu masinatele, mistõttu peaks nad automaatselt oskama leida omale vastava IPv6 aadressi ning seadistama selle masina omale default route aadressiks. Paneme veel tähele, et ehkki me andsime IPv6 aadressi tunneli liidesele, polnud meil vaja spetsifitseerida staatilist IPv6 aadressi sisevõrgu liidesele – sisevõrgu masinad hakkavad kasutama default route aadressina sisevõrgu liidese Link local aadressi.

Teredo tunnel

Et võimaldada IPv6 kasutamist ka kasutajatele, kelle ühendus internetiga läbib NAT’i, on Microsoft välja töötanud spetsiaalse tunneldusprotokolli nimega Teredo. Teredo on Microsofti poolt loodud standardne protokoll, mis kannab numbrit RFC4380. Teredo kliente, servereid ja relaysd on olemas mitte ainult Windowsile vaid ka enamikele teiste levinud operatsioonisüsteemidele. Kuna Teredo on hästi laiendatav, standardiseeritud ning laialdaselt toetatud protokoll, peetakse seda de-feacto standardiks, kui on vaja teha IPv6 võrk kättesaadavaks kasutajatele NAT’i taga. Teredo kapseldab IPv6 liikluse IPv4 UDP pakettide sisse. Teredo kliendile assigneeritud IPv6 aadress pole lihtsalt niisama juhuslik või järjestikune number vaid see on jagatud osadeks ning need osad omavad kliendi jaoks teatavat tähendust:

  • Bitid 0 kuni 31 on kasutusel prefiksiks – Teredo prefiks on 2001::/32.
  • Bitid 32 kuni 63 näitavad kliendile Teredo serveri IPv4 aadressi.
  • Bitid 64 kuni 79 on kasutusel erinevate konfiguratsioonilippude jaoks nagu näiteks kliendi NAT’i tüüp.
  • Bitid 80 kuni 95 sisaldavad skrambleeritud UDP pordi numbrit.
  • Bitid 96 kuni 127 sisaldavad skrambleeritud kujul kliendi avalikku IPv4 aadressi.

On olemas javascriptis kirjutatud Teredo aadresside kalkulaator: http://www.wyae.de/docs/ipv6calc/ Teredo eristab kolme erinevat rolli: klient, server ja relay. Teredo klient on Windowsi või mõnda muud operatsioonisüsteemi jooksutav klientarvuti või ka võrguseade, mis soovib luua IPv6 ühendust. Teredo server üritab selgeks teha, milline on NAT, mille taga klient on, assisteerib tulemüüri või NAT ühendustetabelisse aukude löömist ja suunab kliendi liikluse vastavasse Teredo relay’sse. Teredo serveri jooksutamine ei nõua erilist ribalaiust ega arvutusvõimekust, kuna Teredo server ei vahenda kliendi liiklust. Teredo relay on võrgusõlm või server, mis reaalselt liikluse edastamisega tegeleb.

Teredo seadistamine

Kuna Microsoft pakub kõigile tasuta Teredo tunneli abil IPv6 ühenduse võimalust, ning kuna Windows7 ja Windows8 operatsioonisüsteemides on see ühendus suuremas osas vaikimisi seadistatud, on Teredo tunneli käivitamine Windowsi keskkonnas väga lihtne. Käivitada netsh ning anda käsk loetleda IPv6 võrguliideseid:

C:\Windows\system32>netsh
netsh>show interfaces
The following command was not found: show interfaces.
netsh>int ipv6
netsh interface ipv6>show interfaces

Idx     Met         MTU          State                Name
---  ----------  ----------  ------------  ---------------------------
  1          50  4294967295  connected     Loopback Pseudo-Interface 1
 13          50        1280  disconnected  isatap.lan
 14          50        1280  connected     Teredo Tunneling Pseudo-Interface
 12          10        1500  connected     Ethernet

Oluline on sellest loetelust leida Teredo Tunneline Pseudo-Interface ning jätta meelde selle liidese number. Antud juhul on see 14, kuid mõnes teises süsteemis võib see number olla erinev. Järgnevalt võib kontrollida Teredo seisu:

netsh>show teredo

Et Teredo tunnel aktiveerida, on tarvis IPv6 default route suunata Teredo liidese suunas. Teeme seda järgmise käsuga:

netsh interface ipv6>show teredo
Teredo Parameters
---------------------------------------------
Type                    : client
Server Name             : teredo.ipv6.microsoft.com.
Client Refresh Interval : 30 seconds
Client Port             : unspecified
State                   : dormant

Näeme, et Microsofti Teredo server on juba seadistatud, kuid ühenduse staatus ei ole aktiivne. Lisame default route Teredo pseudo liidese suunas:

netsh interface ipv6>add route ::/0 interface=14

Et Teredo aktiveeruks, tuleb tekitada IPv6 liiklust. Kõige lihtsam viis on pingida mõnda IPv6 aadressi. Kasutame näiteks ipv6.google.com:

C:\Windows\system32>ping -6 ipv6.google.com

Pinging ipv6.l.google.com [2a00:1450:400c:c05::93] with 32 bytes of data:
Request timed out.
Reply from 2a00:1450:400c:c05::93: time=60ms
Reply from 2a00:1450:400c:c05::93: time=75ms
Reply from 2a00:1450:400c:c05::93: time=78ms

Ping statistics for 2a00:1450:400c:c05::93:
    Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
    Minimum = 60ms, Maximum = 78ms, Average = 71ms

Kuna Teredo ühenduse üles saamine võtab veidi aega, siis on oodatav, et esimese paketi kohale toimetamine võtab rohkem aega kui ping ootab, mistõttu näeme esimesel vastusereal request timed out teadet. Järgnevad read näitavad, et IPv6 ühendus on olemas ning toimiv. Kontrolliks võime vaadata netsh abil ka Teredo staatust:

netsh interface ipv6>show teredo
Teredo Parameters
---------------------------------------------
Type                    : client
Server Name             : teredo.ipv6.microsoft.com.
Client Refresh Interval : 30 seconds
Client Port             : unspecified
State                   : qualified
Client Type             : teredo client
Network                 : unmanaged
NAT                     : symmetric (port)
NAT Special Behaviour   : UPNP: No, PortPreserving: No
Local Mapping           : 192.168.1.71:59603
External NAT Mapping    : 194.106.100.52:52327

IPv6 aadresside autoseadistus – SLAAC (Stateless Address AutoConfiguration)

Kuna IPv6 seade on võimeline võrguliidesele IP aadressi leidma teades prefiksit ning MAC aadressi, on IPv6 võrkudes võimalik aadresse seadistada automaatselt. Sisuliselt ainuke informatsioon, mida IPv6 seade vajab, on kasutatav prefiks, selle pikkus ja default route aadress. IPv6 marsruuterid propageerivad seda informatsiooni IPv6 võrku perioodiliselt. IPv6 marsruuteri puudumisel võib seda teha ka Windows server v õi suisa Windows Client, samuti võib selleks seadistada mõnda teist levinud operatsioonisüsteemi jooksutava seadme. IPv6 autokonfiguratsioon toimub NDP (Neighbor Discovery Protocol) abil. NDP kasutab multicast aadressile saadetavaid ICMPv6 pakette. Oluline on märkida, et NDP abil saab IPv6 host omale seadistada toimiva IPv6 aadressi ilma, et selleks oleks vaja kuskil keskses serveris paiknevat andmebaasi ega andmetöötlust (vajalik näiteks DHCP ja DHCPv6 puhul). IPv6 aadresside autoseadistus toimub järgmiselt:

  • IPv6 marsruuter saadab perioodiliselt kokkulepitud multicast aadressile Router Advertisements sõnumeid, milles on kirjas reklaamitav prefiks, selle tähtsus ning suhteliselt uue RFC 6106 standardi järgi ka DNS serverite aadressid.
  • IPv6 seade, tõstes üles IPv6 liidese, võib asuma kuulama, oodates Router Advertisement sõnumeid. Alternatiivse võimalusena võib IPv6 seade aadresside seadistuse kiirendamiseks saata välja Router Solicitation sõnumi, mille peale iga marsruuter antud võrgus peaks koheselt genereerima Router Advertisement sõnumi. Kui selline sõnum saabub teatud ettemääratud aja jooksul, arvutab seade omale saadud prefiksi ja võrguliidese MAC aadressi järgi välja IPv6 aadressi
  • See aadress ei ole kohe kasutatav – IPv6 seade ei saa kindel olla, kas niisugune aadress ehk kellelgi kasutusel pole. Ehkki MAC aadresside kollisioon on ebatõenäoline (siiski võimalik), ei sunni IPv6 seadet tegelikult mitte miski kasutama ainult MAC aadressi IPv6 aadressi genereerimiseks. Näiteks IPv6 privaatsuslaienduste puhul (Windowsis lubatud vaikimisi) lisatakse aadressile veel juhuslikkust ning aadressi muudetakse perioodiliselt.
  • Et veenduda, et antud aadress on tõesti vaba, saadab IPv6 seade Neighbor Solicitation multicast sõnumi, millega kontrollib, kas niisuguse aadressiga seade on kättesaadav. Juhul kui sellele sõnumile keegi vastab, valib IPv6 seade omale uue IPv6 aadressi ning alustab protsessi otsast peale. Juhul kui vastust teatud kindla aja peale ei saada, loeb seade aadressi vabaks olevaks ning võtab kasutusele.

SLAAC asemel võib loomulikult kasutada ka DHCPv6 teenust, mis on sarnane IPv4 võrkudest tuttava DHCP teenusega. SLAAC on aga kasulik võrkudes, kus DHCP’d oleks kasutatud ainult aadresside jagamiseks ning default route ja DNS serveri aadressi teavitamiseks. Kuigi SLAAC laiendus, mis lubab Router Advertisement sõnumites saata ka DNS serverite nimekirja, on suhteliselt uus (RFC on publitseeritud aastal 2010), on see laiendus Windows 8 poolt täielikult toetatud. Kuna aga praktikas on tänapäeval igas IPv6 arvutivõrgus tavaliselt olemas ka IPv4 aadressid, mille automaatseks seadistamiseks on DHCP vajalik, siis on DNS server selle abil reeglina juba seadistatud. Seega võib oletada, et selleks ajaks kui ainult IPv6 võrgud muutuvad valdavaks, on SLAAC kaudu DNS serverite nimekirja jagamine juba iga kasutatava operatsioonisüsteemi poolt toetatud. Vaikimisi eelistab Windows IPv6 aadressi saada SLAAC kaudu, kuid kui see teatud aja jooksul ei õnnestu, proovitakse DHCPv6 meetodit. Juhul kui võrguliidesele on määratud staatiline IPv6 aadress, kasutatakse loomulikult seda.

IPv6 privaatsuslaiendused

IPv6 privaatsuslaiendused on Windows 7 ja Windows 8 operatsioonisüsteemnides vaikimis lubatud. Seega, kui vaatleme, millise IPv6 aadressi võtab Windows 8 omale kohtvõrgus, kus on olemas marsruuter, mis toetab IPv6 aadresside autoseadistust, märkame, et see aadress ei ole kuidagi sarnane antud liidese MAC aadressiga. Näide:

Windows IP Configuration

   Host Name . . . . . . . . . . . . : virtwin8
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : lan

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . : lan
   Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Desktop Adapter
   Physical Address. . . . . . . . . : 08-00-27-90-1B-D3
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   IPv6 Address. . . . . . . . . . . : 2001:4830:1100:813a:bcef:4df8:e79a:4426(Preferred)

   Temporary IPv6 Address. . . . . . : 2001:4830:1100:813a:3940:f6d0:5b05:ff(Preferred)
   Link-local IPv6 Address . . . . . : fe80::bcef:4df8:e79a:4426%12(Preferred)
   IPv4 Address. . . . . . . . . . . : 192.168.1.71(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Sunday, January 27, 2013 11:44:19 AM
   Lease Expires . . . . . . . . . . : Monday, January 28, 2013 11:44:19 AM
   Default Gateway . . . . . . . . . : fe80::52e5:49ff:fe9f:ada4%12
                                       192.168.1.254
   DHCP Server . . . . . . . . . . . : 192.168.1.254
   DHCPv6 IAID . . . . . . . . . . . : 252182567
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-18-93-F8-EE-08-00-27-90-1B-D3
   DNS Servers . . . . . . . . . . . : 192.168.1.254
   NetBIOS over Tcpip. . . . . . . . : Enabled

Veendumaks, et IPv6 privaatsuslaiendused on lubatud, võib kasutada netsh utiliiti järgmiselt:

netsh>int ipv6
netsh interface ipv6>show privacy
Querying active state...

Temporary Address Parameters
---------------------------------------------
Use Temporary Addresses             : enabled
Duplicate Address Detection Attempts: 5
Maximum Valid Lifetime              : 7d
Maximum Preferred Lifetime          : 1d
Regenerate Time                     : 5s
Maximum Random Time                 : 10m
Random Time                         : 0s

Siit võib välja lugeda, et antud Windows üritab IPv6 aadressi vahetada kord päevas, kuid ei hoia ühtegi aadressi kauem kui seitse päeva (kui aadress on mõne rakenduse poolt kasutusel, ei saa seda välja vahetada ilma, et rakenduse ühendused katki ei läheks). Samuti näeme, et Windows proovib 5 korda leida unikaalset aadressi.

Privaatsuslaienduste keelustamine

Juhul kui IPv6 privaatsuslaiendused on vaja keelustada, saab seda teha järgmise käsuga:

netsh>int ipv6
netsh interface ipv6> set privacy state=disabled

Et see seadistus permanentseks muuta, võib lisada võtme store=persistent.

Viited