IPv6
Obsah
Adresace
- prefix IPv6 pro celé HKfree je 2a01:168::/32
- kazda oblast dostane prefix /48 podle cisla oblasti u IPv4
Dalsich 8 bitu je logicka cast (router1, router2, sektor, vsesmer, lan, ...) v ramci oblasti a zbylych 8 bity je pro lepsi rozdeleni v teto logicke casti (0 je vzdy hlavni podsit)
- linkove adresy nejsou potreba - viz link scope
- pokud nejaky router lezi na rozhrani mezi 2 oblastmi a mel by mit ipv6 adresu, tak se pouzije cislo jedne z oblasti
- adresy aplikacnich serveru se prideluji z rozsahu 2a01:168::/48
Jak pridelit IPv6 adresu/rozsah (pro spravce)
1) Vezmu si cislo sve oblasti (samozrejme jen pokud jsem spravce) toto prevedu do hexa (tzn. 1->1, 16->10, 31->1f atd.)
$ printf "%x\n" CISLOOBLASTI XX
2) Toto cislo pripojim za 2a01:168:00XX:YYZZ::/64 a tak ziskam rozsah pro nejakou podsit v ramci oblasti
- Priklad:
mam oblast 160 tudiz cislo oblasti je a0 a mam vsesmer, LAN a 2x sektor, dale je na LAN jedna uzivatelska sit za routerem, takze site, ktere pouziji budou
- pro vsesmer 2a01:168:a0:0000::/64 - zkracene 2a01:168:a0::/64
- pro uzivatelskou podsit na LAN 2a01:168:a0:0101::/64 - zkracene 2a01:168:a0:101:/64
- pro sektor 1 2a01:168:a0:0200::/64 - zkracene 2a01:168:a0:200:/64
- pro sektor 2 2a01:168:a0:0300::/64 - zkracene 2a01:168:a0:300:/64
- pro vsesmer 2a01:168:a0:0000::/64 - zkracene 2a01:168:a0::/64
3) Zapnu si modul ipv6, tedy upravim /etc/modules (zalezi na distribuci) kde vepíšu ipv6 nebo dočasně povolím ručně příkazem modprobe ipv6.
V OpenSUSE stačí v programu YaST v sekci konfigurace síťových karet zaškrtnout volbu 'povolit IPv6' (vyžaduje restart, ruční nahození modulu nestačí!)
4) Pridam na kazdem interface routeru nejakou IPv6 adresu (idealne dobre zapamatovatelnou) pomoci ip addr add <IPv6Adresa/maska> dev <zarizeni>
Příklad ip addr add 2a01:168:12::1/64 dev eth0
nebo upravím v /etc/network/interfaces (Debian)
auto eth0 iface eth0 inet static address 10.107.6.49 netmask 255.255.255.240 broadcast 10.107.6.63 # nastaveni IPv6 iface eth0 inet6 static address 2001:168:6::1 netmask 64
pro OpenSUSE stačí přidat řádek do /etc/sysconfig/network/ifcfg-eth0 (místo eth0 zadejte název požadovaného rozhranní)
IPADDR_IPv6='2001:168:6::1/64'
5) Povolim forwardovani IPv6 pomoci
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
V OpenSuSE poté nastavím v souboru /etc/sysconfig/sysctl proměnnou IPV6_FORWARD na "yes"
IPV6_FORWARD="yes"
6) Dale rozjedu na routeru IPv6 a ospf6d - nakonfiguruji podobne jako ve vzorovych konfiguracich prilozenych na konci a spustim
7) Hotovo :)
Doporucuji si precist neco o IPv6 nez se do toho pustite.
Soucasny stav
- IPv6 je funkční na igw, kde bezi ospf6d
- Mame pridelen IPv6 prefix od RIPE
- podsit pro hyperpater je 2a01:168:f000:3::/64 a orion ma na interface 2a01:168:f000:3::1/64 -- BUDU PREDELAVAT
- DNS servery - 2a01:168:0:10::f, 2a01:168:7:a00::245
- ipv6-enabled oblasti:
Oblast | Podpora na pateri | Podpora u klientu | IPv6 Adresa routeru |
D-network | Ano | Ano (pouze klienti, kteri jsou na stejnem subnetu jako hlavni routr) | 2a01:168:3::1 |
JNet | Ano | Ano | 2a01:168:36::1 |
Slatina | Ano | Castecne | 2a01:168:7::a00::1 |
Libuse | Ano | Neznamo | 2a01:168:2::1 |
Piletice | Ano | Ne | 2a01:168:31:700::1 |
Podulsany | Ano | Ano | 2a01:168:a::1 |
Yzop | Neznamo | Neznamo | Neznamo |
Lhotka | Neznamo | Neznamo | Neznamo |
Postman | Neznamo | Neznamo | Neznamo |
Mandysova | Neznamo | Neznamo | Neznamo |
Dolany | Ano | Ano | Doplnim |
Plch | Ano | Ano | Doplnim |
- UPDATOVAT !
Priklady konfigurace zebry
ospf6d.conf
hostname HOSTNAME password free enable password XXXXXXX ! interface eth0 ipv6 ospf6 cost 10 ! router ospf6 router-id 10.107.X.Y redistribute connected interface eth0 area 0.0.0.0 interface eth1 area 0.0.0.0 !
zebra.conf
hostname HOSTNAME password free enable password XXXXXXXXX service advanced-vty interface eth0 ipv6 nd suppress-ra ! muzu rict i jaky prefix budu oznamovat interface eth1 no ipv6 nd suppress-ra ipv6 nd ra-interval 10 ipv6 nd prefix 2a01:168:12:3400::/64 ! oznamuje pocitacum pripojenym k danemu segmentu, ze je zde dalsi router ! a ze si maji pridelit ipv6 adresu a nastavit tento router jako branu interface eth2 ipv6 nd suppress-ra ! !neoznamuje pocitacum pripojenym k segmentu, ze je zde dalsi router interface eth3 no ipv6 nd suppress-ra line vty
Dulezite nastaveni jadra!!
Pro funkcnost autkonfigurace/neprijmani cizich prefixu musí být jádro na routeru nastaveno následovně:
net.ipv6.conf.all.autoconf = 0 # vypne autokonfiguraci na tomto stroji net.ipv6.conf.all.accept_ra = 0 # vypne primani router advertismentu od jinych stroju - aneb routovani se resi pres OSPF net.ipv6.conf.all.accept_redirects = 0 # redirecty take nechcem net.ipv6.conf.all.forwarding = 1 # forwarding - jinak routovat nebudem net.ipv6.conf.all.router_solicitations = 0
Zbytek
K precteni taky doporucuji clanek na wikipedii nebo na IPv6.cz
- Autokonfigurace
Pomoci router advertismentu
na serveru se spusti daemon radvd (nebo se nastavi v zebre viz vyse ipv6 nd ...), ktery pri spravnem nakonfigurovani siri na dany interface oznameni o pritomnosti routeru vcetne sveho prefixu. Z tohoto prefixu si klient vygeneruje svoji adresu na zaklade MAC adresy, windows si vygeneruji jeste druhou docasnou adresu (pro vyssi soukromi ? ;)) Resi pouze ziskani adresy a nastaveni routovani.
vypnuti generovani 2. docasne adresy z sireneho prefixu pod woknama netsh interface ipv6 set privacy state=disable
DHCPv6
Resi prideleni adresy + adres dns serveru, domenoveho jmena apod. Neresi nastaveni routovani.
Dibbler dhcpv6 server + klient + relay pro linux a windows http://klub.com.pl/dhcpv6/
podle testu funguje server na linuxu v pohode. Klient pod windows se zda byt pomerne problematicky, nepovedlo se mi ho spustit jako sluzbu prestoze psal ze nastartoval. Z prikazoveho radku funguje celkem bezproblemove. Pri kombinaci s 1. typem autokonfigurace dochazi k tomu, ze Windows pouzivaji primarne docasnou adresu a ne tu ziskanou pres dhcp :(
Par sikovnych prikazu
Zobrazeni routovaci tabulky
ip -6 ro
Zobrazeni prirazenych ip adres
ip -6 addr
Pingnuti vseho ipv6-enabled hostu (tzn. vsech) na siti:
ping6 -I <interface> ff02::1
Pingnuti vsech ipv6-enabled routeru na siti:
ping6 -I <interface> ff02::2
Rozchození IPv6 na Mikrotiku s RouterOS
Příklad konfigurace AP Mandysova, verze RouterOS 3.16, navic balik routing-test.npk (nutny pro OSPFv3)
Nastavení adres. Určení rozsahů viz výše. V našem případě Mandysovka má číslo 53 což vychází hezky na 0x35. Primární router má na Mandysovce tradičně ip končící na 107.
/ipv6 address add address=2a01:168:35:222::107/64 advertise=yes disabled=no eui-64=no interface=bridge-local /ipv6 address add address=2a01:168:35::107/64 advertise=yes disabled=no eui-64=no interface=bridge-wifi
Nastaveni areas. Klidně lze vystačit s jednou backbone. Já obvykle používam ještě jednu - terminal - pro koncové oblasti (tam kde jsou klienti a žádné další routery).
/routing ospf-v3 area set backbone area-id=0.0.0.0 name=backbone disabled=no type=default /routing ospf-v3 add area-id=0.0.1.0 name=terminal default-cost=1 disabled=no inject-summary-lsas=yes type=stub
Nastavení OSPF. Důležitý pro nás by parametr "redistribute-connected=as-type-1"
/routing ospf-v3 set distribute-default=never metric-bgp=20 metric-connected=20 metric-default=1 metric-rip=20 metric-static=20 redistribute-bgp=no redistribute-connected=as-type-1 redistribute-rip=no redistribute-static=no router-id=10.107.53.107
Nastavení interfaceů. Na routeru jsou dva interface, na kterých je povoleno ipv6: bridge-wifi a bridge-local. Třetí interface je v našem případě 6to4 tunel na igw (tunel je zde proto, že naše oblast nesousedí s žádnou oblastí s funkčním ipv6)
/routing ospf-v3 interface add interface=tunel-gw6 area=backbone cost=10 dead-interval=30s disabled=no hello-interval=5s instance-id=0 network-type=default passive=no priority=1 retransmit-interval=5s transmit-delay=1s /routing ospf-v3 interface add interface=bridge-wifi area=terminal cost=10 dead-interval=30s disabled=no hello-interval=5s instance-id=0 network-type=default passive=no priority=1 retransmit-interval=5s transmit-delay=1s /routing ospf-v3 interface add interface=bridge-local area=terminal cost=10 dead-interval=30s disabled=no hello-interval=5s instance-id=0 network-type=default passive=no priority=1 retransmit-interval=5s transmit-delay=1s
Pro doplnění ještě přidávám nastavení 6to4 tunelu. Remote je IPčko igw, kde běží protikus tunelu, local je IP adresa interfacu bridge-wifi. Žádné ip adresy interfacu tunelu není třeba přiřazovat, vystačí si s link-local adresu.
/interface 6to4 name=tunel-gw6 local-address=10.107.53.107 remote-address=10.107.4.1 disabled=no mtu=1480
DHCPv6
- Tato varianta se hodí v případě, že chceme mít kontrolu nad tím, co uživatelům přidělujeme za adresy. Další možné použití je v případě, že uživatel je připojen s pomocí zařízení od Ubiquity nebo jiného, které umí na straně klienta použít "prefix delegation"
- Dále pak tímto způsobem můžeme uživatelům předat informaci o DNS serveru, WINS serveru atp.
- Pro klientské zařízení se dá použít firmware upravený 8anem -> http://8an.praha12.net/wifi/ubnt/XM.v5.1.2.sdk.3998.100317.1835.bin. Další výhodou tohoto firmware je, že umí i RADIUS autentizaci.
- Pro použití DHCPv6 musíme posílat trochu jiné Router Advertismenty než při bezstavové konfiguraci (viz http://www.faqs.org/rfcs/rfc5175.html). A proto je třeba přidat do nastavení radvd.conf toto:
AdvManagedFlag on AdvOtherConfigFlag on
- Vhodný DHCP server je například https://www.isc.org/software/dhcp ve verzi minimálně 4.1
- http://packages.debian.org/experimental/isc-dhcp-server
- Pro ty co mají přístup na NFX wiki, tak doporučuji stránku: http://www.nfx.cz/wiki/index.php/AirOS_Prefix_Delegation
- Příklad konfigurace DHCPv6
interface eth1 { server-preference 255; renew-time 60; rebind-time 90; prefer-life-time 130; valid-life-time 200; allow rapid-commit; option dns_servers 2a01:168:0:10::f hkfree.org; link AAA { pool{ range 2a01:168:00XX:YYZZ::1 to 2a01:168:00XX:YYZZ::ffff/64; prefix 2a01:168:00XX:YYZZ::/64; }; }; };