IPv6 kasutamine OpenBSDga
Sisukord
Sissejuhatus
OpenBSD tarkvara toetab IPv6 protokolli kasutamist. Paistab, et 2010 aastal on IPv6 võrguga ühendumiseks kaks populaarsemat viisi sellised
- IPv6 liikluse tunneldameine üle IPv4 võrgu (nn IPv6-in-IPv4) usaldades kasutajale kasutada /64 võrgu (nt EENet, Elion)
- nö ehe IPv6 ruuting
Käesolev tekst keskendub OpenBSD kasutamisele võrgusõlmes, mis osaleb ühel või teisel viisil IPv6 liikluse vahendamises
- IPv6 tunneli üks ots asub võrgusõlmes, võrgusõlmele on seadistatud IPv6 aadress ja selle küljes on kliendile usaldatud /64 subnet seal asuvate IPv6 võrguseadistustega arvutitega
- võrgusõlme läbi IPv4 pakettidesse kapseldatud IPv6 liiklus, kusjuures tunneli teine ots on nö tulemüüri taga (nt NATitud võrgusegmendis paiknevas töökohaarvutis)
Muu hulgas kaasneb IPv6 protokolli kasutamisega
- 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"
- Built-in authentication and privacy support (IPSec)
- Flexible options and extensions
- lihtsam administreerimine (nt teatud juhtumitel lõpeb vajadus DHCP järele)
- kasutada on oluliselt rohkem erinevaid IP aadresse, 2^32 vs 2^128
Aadresseerimine
IPv6 kasutab kolme tüüpi aadresse
- unicast
- multicast
- anycast
IPv6 aadress esitamiseks on kasutada 128 bitti, mis tavaliselt on jagatud kaheksaks 16 bitisteks gruppideks, nt localhost'i aadress esitub
0000:0000:0000:0000:0000:0000:0000:0001
ehk lühemalt
::1
Programm ipv6calc aitab aadresse arvutada
$ ipv6calc --in ipv6addr --out ipv6addr --printfulluncompressed ::1 0000:0000:0000:0000:0000:0000:0000:0001
- 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
IPv6 kasutab kolme sorti aadresse
- Link-local - subneti siseselt, aadress on tuletatud võrguseadme MAC aadressist
- Site-local - administratiivse üksuse piirides kasutamiseks, 2010 aastaks on sellist tüüpi aadresside kasutamine lõpetatud
- Global - avalikus võrgus kasutatavad ruuditavad aadressid
Link-local aadresside kasutamine
Link-local aadresse saab kasutada subneti sees töötavate arvutite omavahelisel suhtlemisel, kusjuures aadressi lõpus tuleb % märgi järel näidata millisest võrguseadet kasutatakse, nt
$ ssh -l mart fe80::20e:cff:feb0:96b6%re0
Siin avaldub üks IPv6 kasutusele iseloomulik asjaolu, et kuivõrd samas subnetis töötavate arvutite vaheliseks suhtlemiseks tuletatakse nö IP kihi aadressid võrguseadmete MAC aadressidest automaatselt, siis ei ole võrguseadmeid vaja otseselt seadistada.
Global aadresside kasutamine
Nö tavalised avalikus võrgus kasutamiseks mõeldud ja ruuditavad aadressid.
Võrguseadistused
# cat /etc/hostname.em0 inet 192.168.111.94 255.255.255.248 inet6 2A01:88:0:22::2 64
# cat /etc/mygate 192.168.111.93 2A01:88:0:22::1
Skeem
... . _|_ | | teenusepakkuja |___| seade - 2001:7d0:0:f000::1340 192.168.101.242 - em0 | | | 84.50.96.138 - fxp0 _|_ | | OpenBSD |___| gif0 - 2001:7d0:0:f000::1341 - em0 | --|-------------|-------------------|----- _|_ 2001:7d0:0:f9a1::/64 _|_ | | | | |___| |___|
kus
- gif0 - virtuaalne seade, tunneli kliendi poolne ots
- em0 - kliendi subnetipoole tulemüüri võrguseade, arvutite vaikelüüs
- 2001:7d0:0:f9a1::/64 - kliendile usaldatud võrgusegment, st teenusepakkuja ruudib neid aadresse
Tunneli seadistamine
Tunneli seadistamiseks tuleb moodustada sellise sisuga /etc/hostname.gif0 seadistusfail, vastavalt konkreetse tunneli parameetreid kasutades
# cat /etc/hostname.gif0 tunnel 84.50.96.138 192.168.101.242 !ifconfig gif0 inet6 2001:7d0:0:f000::1341 2001:7d0:0:f000::1340 prefixlen 128 !route add -inet6 default 2001:7d0:0:f000::1340 # sh /etc/netstart gif0
IPv6 ruutingu sisselülitamiseks tuleb öelda
# sysctl -w net.inet6.ip6.forwarding=1
Paketifiltri seadistamine
IPv6 protokolli kasutamisel on oluline arvestada, et tulemüür vajab IPv6 protokolli jaoks sama hoolikat seadistamist nagu IPv4 puhul. Täiesti võimalik on kogemata korraldada, et IPv4 suhtes korrektselt seadistatud tulemüür lubab IPv6 liiklust läbi piiranguteta. Täiendav oht tuleneb asjaolust, et IPv6 puhul ei kasutata NATi, st kui nt kasutajale on usaldatud IPv6 /64 segmendi aadressid, siis seal võrgus asuvad seadmed on avalikust võrgust ruutingu mõttes otse ligipääsetavad.
Piiranguteta IPv6 liiklust lubaval juhtumil sobib kasutada selliseid ridu paketifiltri seadistusfailis
pass quick on gif0 inet6 pass quick on fxp0 proto ipv6
kus
- gif0 - tunneli seade
- fxp0 - füüsiline seade
Tunneli kasutamine
# ping6 2001:7d0:0:f000::1340 PING6(56=40+8+8 bytes) 2001:7d0:0:f000::1341 --> 2001:7d0:0:f000::1340 16 bytes from 2001:7d0:0:f000::1340, icmp_seq=0 hlim=64 time=8.573 ms 16 bytes from 2001:7d0:0:f000::1340, icmp_seq=1 hlim=64 time=8.208 ms
Tunneli seadmel
# tcpdump -nei gif0 ip6 tcpdump: listening on gif0, link-type NULL 01:09:46.308727 2001:7d0:0:f000::1341 > 2001:7d0:0:f000::1340: icmp6: echo request 01:09:46.317070 2001:7d0:0:f000::1340 > 2001:7d0:0:f000::1341: icmp6: echo reply 01:09:47.314576 2001:7d0:0:f000::1341 > 2001:7d0:0:f000::1340: icmp6: echo request 01:09:47.323035 2001:7d0:0:f000::1340 > 2001:7d0:0:f000::1341: icmp6: echo reply
Füüsilisel seadmel
# tcpdump -nei fxp0 proto ipv6 tcpdump: listening on fxp0, link-type EN10MB 01:08:48.480402 00:50:8b:cd:11:6d 00:14:7f:f4:e3:6a 0800 90: 2001:7d0:0:f000::1341 > 2001:7d0:0:f000::1340: icmp6: echo request (encap) 01:08:48.488495 00:14:7f:f4:e3:6a 00:00:5e:00:01:07 0800 90: 2001:7d0:0:f000::1340 > 2001:7d0:0:f000::1341: icmp6: echo reply (encap) 01:08:49.480454 00:50:8b:cd:11:6d 00:14:7f:f4:e3:6a 0800 90: 2001:7d0:0:f000::1341 > 2001:7d0:0:f000::1340: icmp6: echo request (encap) 01:08:49.488744 00:14:7f:f4:e3:6a 00:00:5e:00:01:07 0800 90: 2001:7d0:0:f000::1340 > 2001:7d0:0:f000::1341: icmp6: echo reply (encap)
Andmed IPv6 paketi kohta näevad Wiresharkis välja nii
IPv6 ruuting
IPv6 ruuteris tuleb lubada IPv6 pakettide ruuting
# sysctl -w net.inet6.ip6.forwarding=1
Lisaks sobib kasutada nt sellist rtadvd seadistusfaili
default:\ :chlim#64:raflags#0:rltime#1800:rtime#0:retrans#0:\ :pinfoflags="la":vltime#2592000:pltime#604800:mtu#0: re0:\ :addr="2001:7d0:0:f9a1::":prefixlen#64:tc=default:
ning käivitada, jättes protsessi esiplaanile
# rtadvd -d re0
IPv6 nimesüsteem
Avalik domeeninimesüsteem on reeglina ühine IPv4 ja IPv6 võrkude jaoks. Nö tavalistele A kirjetele vastavad IPv6 võrgus AAAA kirjed
$ dig www.ipv6.org aaaa ... ;; QUESTION SECTION: ;www.ipv6.org. IN AAAA ;; ANSWER SECTION: www.ipv6.org. 45 IN CNAME shake.stacken.kth.se. shake.stacken.kth.se. 1086 IN AAAA 2001:6b0:1:ea:202:a5ff:fecd:13a6 ...
Dual-stack arvutid st arvutid, millele on seadistatud IPv4 ja IPv6 aadressid reeglina kalduvad lahendama AAAA kirjeid ja kasutama eelistatult IPv6 võrku. Dual-stack arvutid saavad kasutada IPv4 võrgus töötavate nimeserverites kirjeldatud AAAA sissekandeid, mis näevad tsoonifailis välja nt selliselt
ipv6.auul.pri.ee. IN AAAA 2001:7d0:0:f000::1341
Teenuste kasutamine IPv6 võrgus
Kui nimesüsteemis on nimel nii A kui AAAA kirje, siis kuigi põhimõtteliselt ei ole määratletud kumba rakendus peaks enne kasutama tundub, et AAAA kirjet kasutatakse esimesena. Praktiliselt kaasneb sellega, et kui teenuse IPv6 võrgu teenus parasjagu ei tööta ja kuigi IPv4 võrgus töötab, siis nt brauser saab timeouti.
Teenused IPv6 võrgus
Märkused
- kuna puudub vajadus NAT teisenduste järele, siis protokoll seda võimalust ette ei näe
- ARP asemel kasutatakse multiedastust
- kui IPv6 tunneli ots asub NAT taga, siis sobib kasutada sellist paketifiltrit
rdr on $if_ext inet proto ipv6 from 192.168.101.242 to 84.50.96.138 tag TO_IPV6 -> 192.168.10.53 pass in quick on $if_ext proto ipv6 tagged TO_IPV6 pass out quick on $if_int proto ipv6 tagged TO_IPV6
Kasulikud lisamaterjalid
- http://www.eenet.ee/EENet/ipv6.html
- http://www.ipv6.estpak.ee/
- http://canonical.wordpress.com/2008/07/02/ipv6-enabled-home-network-with-openbsd/
- http://www.linuxjournal.com/article/6541
- http://tix.estpak.ee/networks6.txt
- http://hasso.linux.ee/doku.php/eesti:artiklid:ipv6
- http://www.cs.ut.ee/~mroos/ipv6/ipv6fw.pdf
- http://ftp.aso.ee/pub/incoming/meedia/securefest-2006/1_meelis_roos_ipv6.vlc
- http://www.hot.ee/raffas/ipv6fw.pdf