IPv6
Obsah
Adresace
- prefix IPv6 pro celé HKfree je 2a01:168::/29 v kompletním zapisu: 2a01:168:0000:0000:0000:0000:0000:0000/29, zápis "::" znamená doplň celý zbytek adresy nulami,
- kazda oblast dostane prefix /40, příděly subnetů /40 řeší Kendy ripe@hkfree.org a evidujou se v tabulce https://ripe.hkfree.org
Adresní plán ZDE.
- linkove adresy nejsou potreba - viz link scope, adresy se generují "automaticky" o páteřní IP se tím pádem vůbec nestaráme,
- 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,
- Klientské zařízení s podporou IPv6,
- Test IPv6.
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 vlozim do 2a01:168:XX00::/40 a tak ziskam rozsah pro celou oblast
- 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:a000:0000::/64 - zkracene 2a01:168:a000::/64
- pro uzivatelskou podsit na LAN 2a01:168:a000:0101::/64 - zkracene 2a01:168:a000:101:/64
- pro sektor 1 2a01:168:a000:0200::/64 - zkracene 2a01:168:a000:200:/64
- pro sektor 2 2a01:168:a000:0300::/64 - zkracene 2a01:168:a000:300:/64
- pro vsesmer 2a01:168:a000:0000::/64 - zkracene 2a01:168:a000::/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. Od Debianu 6 je IPv6 v systému automaticky zapnuté, do konfigurace musíme zasáhnou jenom v případě když chceme IPv6 podporu vypnout, což lze udělat při každém bootu v /proc nebo v /etc/sysctl.conf kde je už připravena položka "net.ipv6.conf.all.disable_ipv6=1" =1 znamená že disable_ipv6=true tuto položku stačí jenom odkomentovat a udělat reboot.
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 -6 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
Pozor pokud mám nastavené vlan položku vlan-raw-device vlanXXX píšu v zápisu pro každé rozhraní jenom jednou, podobně jako při zápisu alias IP např. vlan200:1
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
- DNS servery - 2a01:168:0:10::f, 2a01:168:7:a00::245
Stará tabulka - tohle už neplatí. Od 5/2019 je nový adresní plán https://confluence.hkfree.org/x/XQmQB, alokace subnetů pro oblasti https://ripe.hkfree.org/#ipv6
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
Zde pozor na router advertisement, pokud ho nevypnete (ipv6 nd suppress-ra) IPv6 aktivní zařízení na daném interface bude dostávat informace co je na interafce za routr a přes to zařízení se bude snažit lézt do sítě, je to obdoba DHCP serveru i když ne tak zřejmá, většinou potom následuje udivení jak je možné, že ten PC se zapnutým IPv6 dostane adresu a bránu když nemá nikde nic nastavené :)
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
Tohle jsem vůbec neřešil, všechno mám na 1 a funguje to :) (Locutus)
Distribuce 1 routy (Linux)
Tip od Ladi na distribuci pouze 1 IPv6 routy za AP.
ospf6d.conf:
router ospf6 router-id 10.107.3.1 redistribute static interface vlan132 area 0.0.0.0 interface vlan133 area 0.0.0.0 interface vlan134 area 0.0.0.0 interface vlan135 area 0.0.0.0
zebra.conf:
ipv6 route 2a01:168:3::/48 ::1 ipv6 forwarding
Zbytek
K precteni taky doporucuji clanek na wikipedii nebo na IPv6.cz
- Autokonfigurace
Pomoci router advertismentu
pomoci radvd /etc/radvd.conf
interface br0 { AdvSendAdvert on; prefix 2a01:168:XXXX:YYYY:/64 { AdvOnLink on; AdvAutonomous on; }; };
pomoci zebra.conf - viz vyse no ipv6 nd suppress-ra
interface eth0 no ipv6 nd suppress-ra ipv6 nd ra-interval 10 ipv6 nd ra-lifetime 120 ipv6 nd reachable-time 150 ipv6 nd other-config-flag ipv6 nd prefix 2a01:168:XXXX:YYYY::/64
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. (nenastavi se DNS - nevadi v pripade dual stack konfigurace, kdy DNS priradi DHCPv4)
vypnuti generovani 2. docasne adresy z sireneho prefixu pod woknama
netsh interface ipv6 set privacy state=disable
naopak zapnuti prirazeni docasne adresy v linuxu (nemusi cely svet znat nasi MAC adresu,ze?)
# cat /etc/sysctl.d/ipv6privacy.conf net.ipv6.conf.all.use_tempaddr=2 net.ipv6.conf.default.use_tempaddr=2 net.ipv6.conf.wlan0.use_tempaddr=2 net.ipv6.conf.eth0.use_tempaddr=2
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 LiSt, verze RouterOS 3.16, navic balik routing-test.npk (nutny pro OSPFv3). Pro RouterOS >v.4.x staci povolit balik ipv6.
Budu jako příklad uvádět svou oblast LiSt.
List má IP rozsah dle návodu na IPv6 adresní plán jako 2a01:168:4900::/40
- nastavil jsem si první adresu na interface, kde jsou klienti (u mě "bridge-sektory")
/ipv6 address add address=2a01:168:4900::1/64 advertise=yes disabled=no eui-64=no from-pool="" interface=Bridge-sektory no-dad=no
- další je nastavení OSPFv3důležitý, aby to běželo na interface, kde je linka (u mě "bridge-lhota", "birdge-krasnice"), nikoliv klientský interface
/routing ospf-v3 interface add area=backbone cost=20 dead-interval=40s disabled=no hello-interval=10s instance-id=0 interface=bridge-lhota network-type=default passive=no priority=1 retransmit-interval=5s transmit-delay=1s use-bfd=no
- dalším bylo nastavení instancesDůležitý, nastavit tam '
/routing ospf-v3 instance set [ find default=yes ] disabled=no distribute-default=never metric-bgp=auto metric-connected=20 metric-default=1 metric-other-ospf=auto metric-rip=20 metric-static=20 name=default redistribute-bgp=no redistribute-connected=as-type-1 redistribute-other-ospf=no redistribute-rip=no redistribute-static=as-type-1 router-id=10.107.73.1
redistribute static routes'
na hodnotu 'as type 1'
- Protože budeme dále delegovat každému členovi jeho vlastní rozsah a ten by lezl do OSPF, tak uděláme statickou routu v
/ipv6 route
na celý /40 rozsah, a ty drobný klientský pak odfiltrujem./ipv6 route add !bgp-as-path !bgp-atomic-aggregate !bgp-communities !bgp-local-pref !bgp-med !bgp-origin !bgp-prepend !check-gateway comment="souhrnna \"agregovana\" routa; viz tez routing/filters" disabled=no distance=1 dst-address=2a01:168:4900::/40 !route-tag type=unreachable
- a odfiltrujeme ty drobný rozsahy klientů
/routing filter
přidáme pravidlo co odfiltruje délku prefixu 49-128 a ty nepustí do OSPF/routing filter add action=discard !address-family !append-bgp-communities !append-route-targets !bgp-as-path !bgp-as-path-length !bgp-atomic-aggregate !bgp-communities !bgp-local-pref !bgp-med !bgp-origin !bgp-weight chain=ospf-out disabled=no !distance invert-match=no !locally-originated-bgp !match-chain !ospf-type !pref-src !prefix prefix-length=49-128 !protocol !route-comment !route-tag !route-targets !routing-mark !scope !set-bgp-communities !set-bgp-local-pref !set-bgp-med !set-bgp-prepend set-bgp-prepend-path="" !set-bgp-weight !set-check-gateway !set-disabled !set-distance !set-in-nexthop !set-in-nexthop-direct !set-in-nexthop-ipv6 !set-in-nexthop-linklocal !set-out-nexthop !set-out-nexthop-ipv6 !set-out-nexthop-linklocal !set-pref-src !set-route-comment !set-route-tag !set-route-targets !set-routing-mark !set-scope !set-site-of-origin !set-target-scope !set-type !set-use-te-nexthop !site-of-origin !target-scope
- a pustíme se do delegování subnetů pro klienty/členy. Nastavíme si
/ipv6 pool
jak velké subnety budeme členům delegovat (opět podle návrhu číslovacího plánu)takže jim z /48 rozsahu budu delegovat prefixy /56/ipv6 pool add name=pool1 prefix=2a01:168:4901::/48 prefix-length=56
- a pustíme DHCP server pro delegaci prefixů
/ipv6 dhcp-server
kde nastavíme poslouchací inteface od klientů (u mě "bridge-sektory")/ipv6 dhcp-server add address-pool=pool1 dhcp-option="" disabled=no interface=Bridge-sektory lease-time=1h name=server1 preference=255 rapid-commit=yes route-distance=1 use-radius=no
- v Neighbor discovery
/ipv6 nd
je ?nutné? vypnout "advertise DNS", bo to zlobí. Já ho ale nechal zapnutý. A přepnout interface z "all" na "bridge-sektory", tj. tam, kde jsou klienti/ipv6 nd add advertise-dns=yes advertise-mac-address=yes disabled=no hop-limit=64 interface=Bridge-sektory managed-address-configuration=no mtu=unspecified other-configuration=no ra-delay=3s ra-interval=3m20s-10m ra-lifetime=30m reachable-time=unspecified retransmit-interval=unspecified
- Aby to advertise DNS fungovalo dobře, přidal jsem do DNS konfigurace záznam o DNS serveru pro IPv6
/ip dns set allow-remote-requests=yes cache-max-ttl=1w cache-size=2048KiB max-concurrent-queries=100 max-concurrent-tcp-sessions=20 max-udp-packet-size=512 query-server-timeout=2s query-total-timeout=10s servers=10.107.4.100,10.107.4.129,2a01:168:0:10::f
- No a nakonec se hodí to zabezpečit lehkým firewallem
/ipv6 firewall filter add action=accept chain=input comment="link-local traffic OK" src-address=fe80::/10 add action=reject chain=input comment="No new ex-hkfree incoming connections on IPv6 (this router)" connection-state=new protocol=!icmpv6 reject-with=icmp-admin-prohibited src-address=!2a01:168::/29
- a teď by to mělo být připravené, aby to routovalo a poskytovalo členům prefixy.
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; }; }; };
Nastavení firewallu
Platí zásada nejdřív zakaž vše a poté povol jen to co potřebuješ.
Pokud nevím kde začít, tak aspoň zakázat přístup odjinud než z HKFree
ip6tables -A INPUT -s 2a01:168::/29 -j ACCEPT ip6tables -A INPUT -s ! 2a01:168::/29 -p tcp --syn -j DROP
Správce na routeru pravděpodobně bude chtít nechat povolené: TCP: port22 (SSH), port 2601 (zebra), port 2604 (ospfd), port 2606 (ospf6d), UDP: SNMP (http://wiki.hkfree.org/Slu%C5%BEby#Monitoring).
Tipy pro různé OS: