Ipv6 praktiline kasutamine

Allikas: Kuutõrvaja

Puust ja punaseks

Sissejuhatus

Ipv6 on uue põlvkonna internetiprotokoll mis on mõeldud asendama lõppeva aadressiruumiga ipv4 lahendust. Ipv6 aadressid on 128 bitised (ipv4 oli 32 biti) Interneti algusaegadest kasutatud IPv4 aadressid on otsakorral, keskregister IANA lõpetas nende jagamise juba jaanuaris 2011. Seetõttu on oodata, et IPv6 kasutuselevõtt lähiaastatel kiireneb.

Erinevalt IPv4–st puudub IPv6 juures ARP–protokolli analoog, seda asendab naabrite avastamine (neighbord discovery protocol). Oma toimimiseks vajab see ICMPv6 ja multicasti.

Muu hulgas kaasneb IPv6 protokolli kasutamisega

  • 128 bitised aadressid
  • Tõhustatud hirerarhiline adresseerimine ja marsruutimine globaalne unicast
  • Lihtsustatud seadistamine Olekuga (statefull) ja olekuta (stateless)
  • Teoorias - sisse-ehitatud turvalisus
  • võrguseadmete automaatse seadistamise võimalus
  • lõpeb NAT kasutamine (Network Address Translation)
  • lõpeb 'private address collisions'
  • parem multiedastus-ruuting (multicast routing)
  • parem anycast ruuting
  • lihtsam IP paketi päiste formaat
  • lihtsustatud ja efektiivsem ruuting
  • nö korralikult implementeeritud QoS (Quality of Service) ehk "flow labeling"
  • lihtsam administreerimine (nt teatud juhtumitel lõpeb vajadus DHCP järele)
  • kasutada on oluliselt rohkem erinevaid IP aadresse, 2^32 vs 2^128

Ipv6 juures tuleb arvestada raiskamisega, see on lausa soovitatud nt kõigile klientidele on soovitada anda subnet /64 kui väikseim unit. Reegel võrkude jagamisel on järgnev:

  • Teenusepakkujatele usaldatakse kasutada tavaliselt 2001:xxx:xxxx:xxxx::/32 prefixiga aadresse
  • Teenusepakkujad müüvad edasi 2001:xxx:xxxx:xxxx::/48 prefixiga aadresse
  • Lõppkasutajatele usaldatakse 2001:xxx:xxxx:xxxx::/64 prefixiga aadresse

Üks oluline erinevus ipv4ga on see, et aadresse kirjutatakse kompressitud kujul näiteks localhosti (127.0.0.1) aadress kujul

0000:0000:0000:0000:0000:0000:0000:0001

On võimalik lühendada kujule

::1

Iga võrguseade saab alati endale kuskil neli-viis erinevat tüüpi aadressi, nt aadressi lokaalseks suhtluseks samas subnetis, multicast, suhtlus maailmaga jne. Link-lokal genereeritakse mac aadressi baasil. Serveritele on soovitatav seejuures nii aadress kui ruuting panna käsitsi ja mitte loota RA peale. See on parem nii turvalisuse seisukohalt kui ka sellelt, et aadressid tulevad genereeritutega võrreldes ilusamad ja arusaadavamad. Aadressid jagunevad kolme suurde rühma

  • Link local (fe80::/10) - subneti siseselt, aadress on tuletatud võrguseadme MAC aadressist
  • Unique local (fc00::/7) - nö analoogid 172 ja 192 aadressidele, soovitatav nt haldusaadressideks
  • Global unicast (2000::/3) - avalikus võrgus kasutatavad ruuditavad aadressid
  • Multicast (ff00::/7)

IPv6 aadressi kategooriad:

  • Üksikedastus (unicast). Üksikedastusaadress näitab ühele kindale liidesele võrgus. Pakett edastatakse täpselt sellele määratud aadressile.
  • Multiedastus (multicast). Multiedastusaadress näitab liideste grupile võrgus. Pakett edastatakse kõigile selles grupis.
  • Suvaedastus (anycast). Suvaedastusaadress näitab mitmele liidesele. Pakett edastatakse ainult ühele neist, tavaliselt lähimale (arvutused teeb marsruuter, kasutades marsruutimisprotokolli).

IPv6 korral ei ole leviedastust (broadcast)

Tasub tähele panna, et aadresse jagab router advertisement, kuid see ei anna masinatele DNSi aadressi ja selleks tuleb seetõttu kasutada eraldi dhcpv6 serverit. Samuti on võrgus pahalasel üsna lihtne hakata RA-d mängima seega on vajalik rakendada ka RA-Guard.

Lühendamise juurde tagasi tulles siis näide ühe aadressi täiskujust ja erinevatest lühendustest

2001:0db8:0000:0000:0000:0000:0000:0000
2001:db8:0:0:0:0:0:0
2001:db8::


Näitevõrk

Meil on võrk zoo.tartu.ee, mille ISP ehk teenusepakkuja on eraldanud ka lisaks Ipv4 aadressidele tüki ipv6 võrku. Soov oleks lubada ipv6 läbi keskse ruutiva tulemüüri ning teha teenused nagu mail, veeb ja dns kättesaadavaks ka üle ipv6 aadresside.


Võrgupilt

  __|__   
 |     |  tulemüür  
 |_____|  
    |
    |
   -|---------|----------|----....---|--
              |          |           |
            __|__      __|__       __|__
           |     |    |     |     |     |
           |_____|    |_____|     |_____|
       
             mail       veeb        dns

Võrguteenuse pakkuja on enda ruuterisse kirjeldanud sellise ruutingu:

ipv6 route 2001:BB8:202D::/48 2001:BB8:202D:FF::2

Prefiks on 2001:bb8:2001::/64, tagumine ots on vabalt valitav. Näiteks www.zoo.tartu.ee võib olla 2001:bb8:2001:1::80 (pordi numbri järgi), või ipv4 eeskujul 2001:bb8:2001:1::131.

FreeBSD Ruuteri-tulemüüri seadistus

FreeBSD all tuleb anda seadmele ipv6 aadress, lubada ipv6 ruutimine ja seadistada rtadv teenus

ipv6_ifconfig_igb1="2001:bb8:2001::1/64"
radvd_enable="YES"
ipv6_enable="YES"
rtadvd_flags="ed1" <-- ed1 on interface kuhu router reklaame saadab
ipv6_gateway_enable="YES"

/usr/local/etc/radvd.conf

interface igb1
{
        AdvSendAdvert on;
        # mis intervalliga reklaam toimub
        MinRtrAdvInterval 30;
        MaxRtrAdvInterval 120;
        AdvDefaultPreference low;
        AdvHomeAgentFlag off;

        prefix 2001:bb8:2001::/64 
        {
                AdvOnLink on;
                AdvAutonomous on;
        };
};

Linux serverile ipv6 aadressi seadistamine

Anname võrguseadmele ipv6 aadressi

# ip -6 addr add 2001:bb8:2001::15/64 dev eth1

Seadistame ipv6 ruutingu

# ip route add ::/0 via 2001:bb8:2001::1 dev eth1

Testime

# ping -n ipv6.google.com

Naabrite vaatamine

# ip -6 neigh show
2001:bb8:2001:1::1 dev eth0 lladdr 00:1b:21:87:81:84 router REACHABLE

ruutingute vaatamine

# ip -6 route show

Ruutingu kustutamine

# ip -6 route del 2000::/3 dev eth0

Aadressi kustutamine võrguseadmelt

# ifconfig eth1 del 2001:bb8:2001::15/128

Testimine

Pingimine

$ ping6 ipv6.google.com

Traceroute

$ traceroute6 ipv6.google.com

Teenuste seadistamine

Mailiserveri seadistus

NB! Mailiserverile Ipv6 aadressi andes tuleb kindlasti kontrollida ka, et saaks ipv6 aadressile reevers kirje tehtud. Muidu kipuvad endamus teisi mailiservereid ilma reeversita ip pealt saadetud kirju ignoreerima.

Postfix ipv6 sõbralikuks ehk lubame kohalikust ipv6 võrgust kirjade saatmise

inet_protocols = all
mynetworks = 127.0.0.0/8, 193.40.0.0/16, [::1]/128, [2001:BB8::]/32

Postgrey ipv6 sõbralikuks

postgrey patch http://lists.ee.ethz.ch/postgrey/msg02429.html

[2001:BB8::]/32

asemel

2001:BB8:
2001:bb8:

Postgrey võrdleb regexpe vaid domeeniga. Seega tuleb kirjutada suurtätede ja väiketähtedega ipv6 võrk. Nii ei saa kirjutada nt 193.40.0.0/ 16 võrku /^193\.40\./ kujul vaid peab olema 193.40

Veebiserveri Apache seadistus

DNS serveris on vajalik tekitada AAAA kirje mis on ipv6 analoog A kirjele. A-de arv näitab kordi kui palju on ipv6 aadresse rohkem.

Näiteks käib nimeserveris sama aadressi defineerimine ipv4 ja ipv6 jaoks järgnevalt

www.zoo.tartu.ee. 86400 IN AAAA 2001:bb8:2001:1::131
www.zoo.tartu.ee. 86400 IN A 193.40.45.131

Apache konfiguratsioon näeks välja järvnev

NameVirtualHost 193.40.0.15:80
NameVirtualHost [2001:bb8:2001::15]:80 

<VirtualHost 193.40.0.15:80 [2001:bb8:2001::15]:80>
  ServerName webmail.zoo.tartu.ee
  DocumentRoot /www/webmail/
</VirtualHost>

Monitooring

Munin

Välisühenduse testimiseks komplekt aadresse

  • ipv6.google.com 2a00:1450:8006::63
  • www.ripe.net 2001:610:240:22::c100:68b
  • www.sunet.se 2001:6b0:8:1::154

IPv4 ja Ipv6 võrkude ühendamine

Erinevaid ipv6 võrke saab üle ipv4 võrkude ühendada omavahel (6in4 tehnoloogia) tunnelitega. Keerukam lugu on olukorraga kui masinal on vaid ipv6 aadressid aga soov on pääseda ka ipv4 aadressidel asuvatele serveritele ligi. Selleks on loodud terve hulk erinevaid natil baseeruvaid tehnoloogiaid kuid päris veatu pole ükski. Praegu on parim soovitus ipv6 implementeerimiseks kasutada dual-stack lahendust ehk panna võimaluse korral arvutitele nii ipv4 kui ipv6 aadressid ühekorraga.

Tehnoloogiad võrkude vaheliseks transleerimiseks on nt nat64/dns64 (dns server tegeleb päringute ümber kirjutamisega A kirjetest AAAA kirjeteks), 464xlat, DS-lite, map-e/map-t. Traditsioonilist ipv4 juurest tuntud nati seejuures ipv6 juures rakendada ei ole võimalik

http://www.litech.org/tayga/ linuxil NAT64 süsteemi seadistamiseks

https://en.wikipedia.org/wiki/NAT64

Ipv6 ja turvalisus

Hea ülevaade ipv6 probleemidest: https://tnc2012.terena.org/getfile/1584