IPv6: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
 
(Není zobrazeno 57 mezilehlých verzí od 20 dalších uživatelů.)
Řádek 1: Řádek 1:
==Adresace==
+
Stránka obsahuje spoustu barviček, prosím editujte pomocí "editovat zdroj".
  
* prefix IPv6 pro celé HKfree je '''2a01:168::/32'''
+
=Rozdíly oproti IPv4=
* 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)==
+
Rozdílů je samozřejmě spousta, ale co je nejvíc matoucí?
  
1) Vezmu si cislo sve oblasti (samozrejme jen pokud jsem spravce) toto prevedu do hexa (tzn. 1->1, 16->10, 31->1f atd.)
+
*IPv6 adresy se můžou zkracovat - dvě dvojtečky znamenají "doplň nulami"
 +
**Funguje to jak na konci, tak mezi!
 +
**Ale dvě dvojtečky v ipv6 adrese můžou být jenom jednou!
  
<pre>
+
2a01:168:dead:beef:: znamená  2a01:168:dead:beef:0000:0000:0000:0000
$ printf "%x\n" CISLOOBLASTI
+
2a01:168::acab      znamená  2a01:168:0000:0000:0000:0000:0000:acab
XX
+
 
</pre>
+
*Maličké subnety na linky nejsou potřeba! Používáme tzv. [https://cs.wikipedia.org/wiki/Link-local_adresa Link-local adresy].
 +
**Každý interface má automaticky odvozenou adresu která začíná fe80:
 +
**Ty se mezi sebou umí bavit. Takže nám stačí jenom přidělit "jednu ipv6" adresu na router a zbytek zařídí OSPFv6!
 +
 
 +
=Adresace=
 +
 
 +
*prefix IPv6 pro celé HKfree je '''2a01:168::/29''' (v kompletním zapisu: 2a01:168:0000:0000:0000:0000:0000:0000/29)
 +
 
 +
*pokud nejaky router lezi na rozhrani mezi 2 oblastmi a mel by mit ipv6 adresu, tak se pouzije cislo jedne z oblasti,
 +
*[[Klientské zařízení s podporou IPv6]],
 +
*[http://petrkrcmar.blog.root.cz/2010/10/25/cim-si-vyzkouset-ipv6/ Test IPv6].
 +
 
 +
*Důležité adresy
 +
**HKFree DNS servery: 2a01:168:0:10::f, 2a01:168:0:10::f:2
 +
 
 +
=Adresní plán=
 +
 
 +
2a01:16<span style="color:blue">x:xx</span><span style="color:green;">pp</span>:<span style="color:red;">čč</span>00:/56
 +
        ↑  ↑  ↑ 
 +
        ↑  ↑  <span style="color:red;">připojenec/56</span>
 +
        ↑  <span style="color:green;">podsíť/48</span>
 +
        <span style="color:blue;">oblast/40</span>
 +
 
 +
==<span style="color:blue;">oblast /40, tzn. xxx = 800 - fff</span> (2048 oblastí).==
 +
 
 +
Příděly <span style="color:blue;">xxx</span> subnetů /40 řeší '''Kendy''' [mailto:ripe@hkfree.org] a evidujou se v tabulce na [https://ripe.hkfree.org ripe.hkfree.org].
  
2) Toto cislo pripojim za '''2a01:168:00XX:YYZZ::/64''' a tak ziskam rozsah pro nejakou podsit v ramci oblasti
+
například:
  
* Priklad:
+
*2a01:16<span style="color:blue;">8:08</span>00::/40 pro oblast A
  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
+
*2a01:16<span style="color:blue;">8:99</span>00::/40 pro oblast B
** pro vsesmer 2a01:168:a0:0000::/64 - zkracene 2a01:168:a0::/64
+
*2a01:16<span style="color:blue;">b:ad</span>00::/40 pro oblast C
*** 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
 
  
 +
Správce může pro oblast použít jakýkoliv rozsah (800 - fff) pokud je volný.
  
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'''.
+
===Q & A===
  
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čí!)
+
Q1: Mám oblast 10.107.123.0/24, jakej rozsah použít pro IPv6?
  
 +
A1: přepočítej 123 na hex (0x7b), rozsah bude 2a01:16<span style="color:blue;">8:7b</span>00::/40, ověř si v ripe.hkfree.org že je volný, a zaregistruj ho tam.
  
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''
+
Q2: Mám v oblasti víc rozsahů 10.107.12, 10.107.205 a 10.107.237. Jakej rozsah použít pro IPv6?
  
nebo upravím v '''/etc/network/interfaces''' (Debian)
+
A2: Vyber si jeden z nich a postupuj podle Q1
<pre>
 
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
 
</pre>
 
  
pro OpenSUSE stačí přidat řádek do '''/etc/sysconfig/network/ifcfg-eth0''' (místo eth0 zadejte název požadovaného rozhranní)
 
<pre>
 
IPADDR_IPv6='2001:168:6::1/64'
 
</pre>
 
  
 +
Q3: Můžu použít úplně jiný rozsah?
  
5) Povolim forwardovani IPv6 pomoci
+
A3: Ano, pokud je volný, ověř si v ripe.hkfree.org.
  
''echo 1 > /proc/sys/net/ipv6/conf/all/forwarding''
+
==<span style="color:green;">podsíť v oblasti /48, tzn. pp = 00 - ff</span> (256 sítí v oblasti).==
  
V OpenSuSE poté nastavím v souboru '''/etc/sysconfig/sysctl''' proměnnou IPV6_FORWARD na "yes"
+
Můžeš si oblast rozsubnetovat např. když máš více AP, nebo více routovaných sektorů.
<pre>
 
IPV6_FORWARD="yes"
 
</pre>
 
  
 +
===Malá jednoduchá oblast, jeden router?===
 +
Prostě použij <span style="color:green;">pp</span>=00 a neřeš to. Například:
  
6) Dale rozjedu na routeru IPv6 a ospf6d - nakonfiguruji podobne jako ve vzorovych konfiguracich prilozenych na konci a spustim
+
    příděl 2a01:16<span style="color:blue;">8:08</span>00::/40
 +
    jedna podsíť 2a01:16<span style="color:blue;">8:08</span><span style="color:green;">00</span>::/48
  
 +
===Větší složitější oblast, více routerů?===
  
7) Hotovo :)
+
    příděl 2a01:16<span style="color:blue;">8:99</span>00::/40
 +
    rozdělím na
 +
        2a01:16<span style="color:blue;">8:99</span><span style="color:green;">10</span>::/48 router XY1, LAN
 +
        2a01:16<span style="color:blue;">8:99</span><span style="color:green;">11</span>::/48 router XY1, AP sever
 +
        2a01:16<span style="color:blue;">8:99</span><span style="color:green;">12</span>::/48 router XY1, AP jih
 +
        2a01:16<span style="color:blue;">8:99</span><span style="color:green;">20</span>::/48 router XY2
 +
        2a01:16<span style="color:blue;">8:99</span><span style="color:green;">30</span>::/48 router XY3
 +
        2a01:16<span style="color:blue;">8:99</span><span style="color:green;">40</span>::/48 router XY4
  
 +
logika <span style="color:green;">pp</span> subnetů je na správci oblasti
  
Doporucuji si precist neco o IPv6 nez se do toho pustite.
+
mělo by se to zakomponovat do userdb ([https://github.com/HKFree/UserDB/issues/22 github issue])
  
==Soucasny stav==
+
==<span style="color:red;">jednotlivý člen (připojenec) /56, tzn. čč = 00 - ff</span> (256 připojenců na podsíť, 65000 připojenců na oblast).==
  
* IPv6 je funkční na igw, kde bezi ospf6d
+
    např. 2a01:16<span style="color:blue;">8:99</span><span style="color:green;">10</span>:<span style="color:red;">01</span>00::/56 první připojenec
 +
    např. 2a01:16<span style="color:blue;">8:99</span><span style="color:green;">10</span>:<span style="color:red;">02</span>00::/56 druhý připojenec
 +
    např. 2a01:16<span style="color:blue;">8:99</span><span style="color:green;">10</span>:<span style="color:red;">c8</span>00::/56 dvoustý připojenec
  
* Mame pridelen IPv6 prefix od RIPE
+
Q: proč právě 56 bitů?
  
* podsit pro hyperpater je 2a01:168:f000:3::/64 a orion ma na interface 2a01:168:f000:3::1/64 -- BUDU PREDELAVAT
+
A: vedla se mohutná diskuse o kompromisu s ne-plýtváním (64 stačí pro většinu, nebo dejme 62, co třeba 60?) a univerzálností (co připojení komplikované sítě která potřebuje dělit na 20 subnetů). Dovolil jsem si na IPv6 fóru přebrat zkušenost ISP, kteří už šestku zavedli. Shodují se že 56 je správně.
  
* ipv6-enabled oblasti jsou zatim dnetwork, slatina, podulsany, yzop, libuse, lhotka, postman, mandysova, dolany, plch
+
==<span style="color:grey;">síť u člena (připojence) /64, tzn. 00 = 00 - ff</span> (256 sítí na připojence).==
** UPDATOVAT !
 
  
* DNS servery - 2a01:168:0:10::f, 2a01:168:7:a00::245
+
    ve většině případů bude potřebovat pouze jeden subnet
 +
    např. člen "1", domácnost:
 +
        2a01:168:9910:0100::/64 LAN+WiFi
 +
    např. člen "2", hospoda:
 +
        2a01:168:9910:02<span style="color:grey;">aa</span>::/64 LAN
 +
        2a01:168:9910:02<span style="color:grey;">bb</span>::/64 (veřejná) WiFi pro hosty
 +
        2a01:168:9910:02<span style="color:grey;">cc</span>::/64 (privátní) WiFi pro platební terminály
  
==Priklady konfigurace zebry==
+
=Priklady konfigurace=
 +
==Zebra / FRR==
 
ospf6d.conf
 
ospf6d.conf
 
-----------
 
-----------
Řádek 107: Řádek 130:
 
zebra.conf
 
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é :)
 
<pre>
 
<pre>
 
hostname HOSTNAME
 
hostname HOSTNAME
Řádek 143: Řádek 167:
 
net.ipv6.conf.all.router_solicitations = 0  
 
net.ipv6.conf.all.router_solicitations = 0  
  
 +
</pre>
 +
'''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:
 +
<pre>
 +
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
 +
</pre>
 +
 +
zebra.conf:
 +
<pre>
 +
ipv6 route 2a01:168:3::/48 ::1
 +
ipv6 forwarding
 
</pre>
 
</pre>
  
Řádek 148: Řádek 194:
 
K precteni taky doporucuji clanek na [http://en.wikipedia.org/wiki/IPv6 wikipedii] nebo na [http://www.ipv6.cz IPv6.cz]
 
K precteni taky doporucuji clanek na [http://en.wikipedia.org/wiki/IPv6 wikipedii] nebo na [http://www.ipv6.cz IPv6.cz]
  
* Autokonfigurace
+
*Autokonfigurace
  
 
Pomoci router advertismentu
 
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.
+
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  
 
vypnuti generovani 2. docasne adresy z sireneho prefixu pod woknama  
netsh interface ipv6 set privacy state=disable
+
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
 
DHCPv6
Řádek 191: Řádek 254:
  
  
 +
==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 [https://confluence.hkfree.org/pages/viewpage.action?pageId=76548445 IPv6 adresní plán] jako '''2a01:168:4900::/40'''
 +
 +
*nastavil jsem si první '''adresu na interface, kde jsou klienti''' (u mě "bridge-sektory")<syntaxhighlight>
 +
/ipv6 address add address=2a01:168:4900::1/64 advertise=yes disabled=no eui-64=no from-pool="" interface=Bridge-sektory no-dad=no
 +
</syntaxhighlight>[[Soubor:IPv6-address.png|none|thumb|452x452px|IPv6 - adresa]]
 +
 +
*další je nastavení '''OSPFv3'''<syntaxhighlight>
 +
/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
 +
</syntaxhighlight>[[Soubor:IPv6-ospf.png|none|thumb|488x488px|IPv6 - OSPF]]důležitý, aby to běželo na interface, kde je linka (u mě "bridge-lhota", "birdge-krasnice"), nikoliv klientský interface
 +
*dalším bylo nastavení '''instances'''<syntaxhighlight>
 +
/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
 +
</syntaxhighlight>[[Soubor:IPv6-ospf-instances.png|none|thumb|487x487px|IPv6 - OSPF instances]]Důležitý, nastavit tam '<code>redistribute static routes'</code>  na hodnotu '<code>as type 1'</code>
 +
*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 <code>/ipv6 route</code>  '''na celý /40 rozsah''', a ty drobný klientský pak odfiltrujem.<syntaxhighlight>
 +
/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
 +
</syntaxhighlight>[[Soubor:IPv6-route.png|none|thumb|419x419px|IPv6 - route]]
 +
*a '''odfiltrujeme''' ty drobný rozsahy klientů<br><code>/routing filter</code> přidáme pravidlo co odfiltruje délku prefixu 49-128 a ty nepustí do OSPF<syntaxhighlight>
 +
/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
 +
</syntaxhighlight>[[Soubor:IPv6-routeFilter1.png|none|thumb|542x542px|IPv6 - filtr OSPF (1)]][[Soubor:IPv6-routeFilter2.png|none|thumb|542x542px|IPv6 - filtr OSPF (2)]]
 +
*a pustíme se do '''delegování subnetů pro klienty/členy'''. Nastavíme si <code>/ipv6 pool</code> jak velké subnety budeme členům delegovat (opět podle návrhu číslovacího plánu)<syntaxhighlight>
 +
/ipv6 pool add name=pool1 prefix=2a01:168:4901::/48 prefix-length=56
 +
</syntaxhighlight>takže jim z /48 rozsahu budu delegovat prefixy /56[[Soubor:IPv6-pool.png|none|thumb|427x427px|IPv6 - pool]]
 +
*a pustíme '''DHCP server pro delegaci prefixů''' <code>/ipv6 dhcp-server</code> kde nastavíme poslouchací inteface od klientů (u mě "bridge-sektory")<syntaxhighlight>
 +
/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
 +
</syntaxhighlight>[[Soubor:IPv6-dhcpv6.png|none|thumb|432x432px|IPv6 - DHCPv6]]
 +
*v '''Neighbor discovery''' ''<code>/ipv6 nd</code>''  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<syntaxhighlight>
 +
/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
 +
</syntaxhighlight>[[Soubor:IPv6-ND.png|none|thumb|442x442px|IPv6 - Neighbor discovery]]
 +
*Aby to advertise DNS fungovalo dobře, přidal jsem do DNS konfigurace záznam o DNS serveru pro IPv6<syntaxhighlight>
 +
/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
 +
</syntaxhighlight>[[Soubor:IPv6-DNS.png|none|thumb|466x466px|IPv6 - DNS]]
 +
 +
*No a nakonec se hodí to '''zabezpečit lehkým firewallem''' 
  
==Rozchození IPv6 na Mikrotiku s RouterOS==
+
<syntaxhighlight>
 +
/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
 +
</syntaxhighlight>[[Soubor:IPv6-firewall1.png|none|thumb|658x658px|IPv6 - firewall (1)]][[Soubor:IPv6-firewall2.png|none|thumb|657x657px|IPv6 - firewall (2)]][[Soubor:IPv6-firewall3.png|none|thumb|676x676px|IPv6 - firewall (3)]][[Soubor:IPv6-firewall4.png|none|thumb|677x677px|IPv6 - firewall (4)]]
 +
 
 +
*'''a teď by to mělo být připravené, aby to routovalo a poskytovalo členům prefixy.'''
 +
 
 +
==Mikrotik RouterOS 7.x - zjednodušené nastavení pomocí skriptu==
 +
 
 +
*upravíme proměnné
 +
*testováno pro ROS 7.11. a 7.12.
 +
*otevřeme termínál a zkopírujeme příkazy
 +
*zkontrolujeme, zda se vše provedlo '''bez chyb'''
 +
*'''ručně zkopírujeme nastavení interface z OSPFv2 (IPv4) a upravíme pro OSPFv3 (IPv6) viz zakomentovaná část'''
 +
*povolíme přístup ke službám přes IPv6
 +
 
 +
<syntaxhighlight>
 +
#
 +
# IPv6 on RouterOS 7.12.1
 +
# Kulin - 1.1.2024
 +
#
 +
 
 +
#### PROMENNE #####
 +
# definice IP adres, vychazime z https://ripe.hkfree.org/
 +
:global ipv4Router "10.107.xxx.1";
 +
:global ipv6Router "2a01:168:xx00::1/128";
 +
:global ipv6Subnet "2a01:168:xx00::/40";
 +
#### PROMENNE #####
 +
 
 +
 
 +
# HKfree DNS
 +
/ip dns
 +
set servers=10.107.4.100,10.107.4.129,2a01:168:0:10::f
 +
 
 +
# povolime IPv6
 +
/ipv6 settings
 +
set max-neighbor-entries=8192 disable-ipv6=no forward=yes
 +
 
 +
# nastavime zakladni bezstavovy firewall
 +
/ipv6 firewall address-list
 +
add address=2a01:168::/29 comment=hkfree list=allowed
 +
add address=fe80::/16 comment=link-local list=allowed
 +
add address=ff02::/16 comment=multicast list=allowed
 +
/ipv6 firewall filter
 +
add action=accept chain=input comment="allow ospfv3" protocol=ospf
 +
add action=accept chain=input comment="accept ICMPv6" protocol=icmpv6
 +
add action=accept chain=input comment="accept UDP traceroute" port=33434-33534 protocol=udp
 +
add action=accept chain=input comment="allow allowed addresses" src-address-list=allowed
 +
add action=drop chain=input comment="drop all"
 +
 
 +
# loopback se nastavuje tak, že se vytvoří samotný bridge bez portů. Pozná se tak, že L2 MTU je 65535. Bridge s porty má L2 MTU 1514.
 +
/interface bridge
 +
add name=IPv6-loopback protocol-mode=none
 +
 
 +
# na loopback nastavime "pěknou globální IPv6 adresu", která nám bude sloužit primárně jen pro správu routeru například a bude snadno zapamatovatelná
 +
/ipv6 address
 +
add address=$ipv6Router advertise=no no-dad=yes interface=IPv6-loopback
 +
 
 +
# routa, co budeme sirit ven
 +
/ipv6 route
 +
add blackhole comment="Agregacni routa" disabled=no distance=1 dst-address=$ipv6Subnet gateway="" routing-table=main scope=30 target-scope=10
 +
 
 +
# filtr na odchozí routy šířené přes OSPF ven. Žádný subnet menší než /48 nesmí ven
 +
/routing filter rule
 +
add chain=IPv6-ospf-out disabled=no rule="if (dst-len<=48) { accept }"
 +
 
 +
# nastavime routing id
 +
/routing id
 +
add disabled=no id=$ipv4Router name=id-1 select-dynamic-id=only-vrf select-from-vrf=main
 +
 
 +
# vytvorie ospf instanci
 +
/routing ospf instance
 +
add disabled=no name=IPv6 originate-default=never out-filter-chain=IPv6-ospf-out redistribute=static router-id=id-1 version=3
 +
/routing ospf area
 +
add disabled=no instance=IPv6 name=backbone-IPv6
 +
 
 +
##### TOHLE JE RUCNI PRACE :-) ######
 +
#/routing ospf interface-template
 +
# zde si zkopirujeme vsechny interface (primarni a zalozni linky) pro IPv4 s tim, ze odebereme "networks" a jako "area" pouzijeme vytvorenou "backbone-IPv6"
 +
# podle protistrany upravime pripadne zrusime zabezpeceni (Authentication, Auth.Key, Auth. ID)
 +
 
 +
#### POVOLENI PRISTUPU #####
 +
# povolit pristup z rozsahu 2a01:168::/29
 +
# priklad --- POZOR chybi vnitrni rozsah, tzn nezapomente pridat vnitrni sit!!!
 +
#/ip service
 +
#set api address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
 +
#set api-ssl address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
 +
#set ftp address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
 +
#set ssh address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29
 +
#set telnet address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
 +
#set winbox address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29
 +
#set www address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
 +
#set www-ssl address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29
 +
 
 +
######### TESTY, zda nam IPv6 funguje ########
 +
# overeni pingem
 +
/ping 2a01:168:0:10::f:2
 +
 
 +
</syntaxhighlight>
 +
 
 +
==DHCPv6==
  
Příklad konfigurace AP Mandysova, verze RouterOS 3.16, navic balik routing-test.npk (nutny pro OSPFv3)
+
*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:
  
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.
 
 
<pre>
 
<pre>
/ipv6 address add address=2a01:168:35:222::107/64 advertise=yes disabled=no eui-64=no interface=bridge-local
+
AdvManagedFlag on
/ipv6 address add address=2a01:168:35::107/64    advertise=yes disabled=no eui-64=no interface=bridge-wifi
+
AdvOtherConfigFlag on
 
</pre>
 
</pre>
  
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).  
+
 
 +
*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
 +
 
 
<pre>
 
<pre>
/routing ospf-v3 area set backbone area-id=0.0.0.0 name=backbone disabled=no type=default
+
interface eth1 {
/routing ospf-v3 add area-id=0.0.1.0 name=terminal default-cost=1 disabled=no inject-summary-lsas=yes type=stub
+
    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;
 +
    };
 +
 
 +
 
 +
 
 +
};
 +
};
 
</pre>
 
</pre>
  
Nastavení OSPF. Důležitý pro nás by parametr "redistribute-connected=as-type-1"
+
==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
 
<pre>
 
<pre>
/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
+
ip6tables -A INPUT -s 2a01:168::/29 -j ACCEPT
 +
ip6tables -A INPUT -s ! 2a01:168::/29 -p tcp --syn -j DROP
 
</pre>
 
</pre>
  
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)
+
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).
<pre>
+
 
/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
+
Tipy pro různé OS:
/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
 
</pre>
 
  
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.
+
*[http://technet.microsoft.com/en-us/library/bb726943.aspx Windows]
<pre>
+
*[http://www.sixxs.net/wiki/IPv6_Firewalling Linux]
/interface 6to4 name=tunel-gw6 local-address=10.107.53.107 remote-address=10.107.4.1 disabled=no mtu=1480
 
</pre>
 

Aktuální verze z 2. 1. 2024, 14:18

Stránka obsahuje spoustu barviček, prosím editujte pomocí "editovat zdroj".

Rozdíly oproti IPv4

Rozdílů je samozřejmě spousta, ale co je nejvíc matoucí?

  • IPv6 adresy se můžou zkracovat - dvě dvojtečky znamenají "doplň nulami"
    • Funguje to jak na konci, tak mezi!
    • Ale dvě dvojtečky v ipv6 adrese můžou být jenom jednou!
2a01:168:dead:beef:: znamená  2a01:168:dead:beef:0000:0000:0000:0000
2a01:168::acab       znamená  2a01:168:0000:0000:0000:0000:0000:acab
  • Maličké subnety na linky nejsou potřeba! Používáme tzv. Link-local adresy.
    • Každý interface má automaticky odvozenou adresu která začíná fe80:
    • Ty se mezi sebou umí bavit. Takže nám stačí jenom přidělit "jednu ipv6" adresu na router a zbytek zařídí OSPFv6!

Adresace

  • prefix IPv6 pro celé HKfree je 2a01:168::/29 (v kompletním zapisu: 2a01:168:0000:0000:0000:0000:0000:0000/29)
  • Důležité adresy
    • HKFree DNS servery: 2a01:168:0:10::f, 2a01:168:0:10::f:2

Adresní plán

2a01:16x:xxpp:čč00:/56
       ↑   ↑  ↑  
       ↑   ↑  připojenec/56podsíť/48
       oblast/40

oblast /40, tzn. xxx = 800 - fff (2048 oblastí).

Příděly xxx subnetů /40 řeší Kendy [1] a evidujou se v tabulce na ripe.hkfree.org.

například:

  • 2a01:168:0800::/40 pro oblast A
  • 2a01:168:9900::/40 pro oblast B
  • 2a01:16b:ad00::/40 pro oblast C

Správce může pro oblast použít jakýkoliv rozsah (800 - fff) pokud je volný.

Q & A

Q1: Mám oblast 10.107.123.0/24, jakej rozsah použít pro IPv6?

A1: přepočítej 123 na hex (0x7b), rozsah bude 2a01:168:7b00::/40, ověř si v ripe.hkfree.org že je volný, a zaregistruj ho tam.


Q2: Mám v oblasti víc rozsahů 10.107.12, 10.107.205 a 10.107.237. Jakej rozsah použít pro IPv6?

A2: Vyber si jeden z nich a postupuj podle Q1


Q3: Můžu použít úplně jiný rozsah?

A3: Ano, pokud je volný, ověř si v ripe.hkfree.org.

podsíť v oblasti /48, tzn. pp = 00 - ff (256 sítí v oblasti).

Můžeš si oblast rozsubnetovat např. když máš více AP, nebo více routovaných sektorů.

Malá jednoduchá oblast, jeden router?

Prostě použij pp=00 a neřeš to. Například:

   příděl 2a01:168:0800::/40 
   jedna podsíť 2a01:168:0800::/48

Větší složitější oblast, více routerů?

   příděl 2a01:168:9900::/40 
   rozdělím na
       2a01:168:9910::/48 router XY1, LAN
       2a01:168:9911::/48 router XY1, AP sever
       2a01:168:9912::/48 router XY1, AP jih
       2a01:168:9920::/48 router XY2
       2a01:168:9930::/48 router XY3
       2a01:168:9940::/48 router XY4

logika pp subnetů je na správci oblasti

mělo by se to zakomponovat do userdb (github issue)

jednotlivý člen (připojenec) /56, tzn. čč = 00 - ff (256 připojenců na podsíť, 65000 připojenců na oblast).

   např. 2a01:168:9910:0100::/56 první připojenec
   např. 2a01:168:9910:0200::/56 druhý připojenec
   např. 2a01:168:9910:c800::/56 dvoustý připojenec

Q: proč právě 56 bitů?

A: vedla se mohutná diskuse o kompromisu s ne-plýtváním (64 stačí pro většinu, nebo dejme 62, co třeba 60?) a univerzálností (co připojení komplikované sítě která potřebuje dělit na 20 subnetů). Dovolil jsem si na IPv6 fóru přebrat zkušenost ISP, kteří už šestku zavedli. Shodují se že 56 je správně.

síť u člena (připojence) /64, tzn. 00 = 00 - ff (256 sítí na připojence).

   ve většině případů bude potřebovat pouze jeden subnet
   např. člen "1", domácnost:
       2a01:168:9910:0100::/64 LAN+WiFi
   např. člen "2", hospoda:
       2a01:168:9910:02aa::/64 LAN
       2a01:168:9910:02bb::/64 (veřejná) WiFi pro hosty
       2a01:168:9910:02cc::/64 (privátní) WiFi pro platební terminály

Priklady konfigurace

Zebra / FRR

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
    IPv6 - adresa
  • další je nastavení OSPFv3
    /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
    IPv6 - OSPF
    důležitý, aby to běželo na interface, kde je linka (u mě "bridge-lhota", "birdge-krasnice"), nikoliv klientský interface
  • dalším bylo nastavení instances
    /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
    IPv6 - OSPF instances
    Důležitý, nastavit tam '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
    IPv6 - route
  • 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
    IPv6 - filtr OSPF (1)
    IPv6 - filtr OSPF (2)
  • 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)
    /ipv6 pool add name=pool1 prefix=2a01:168:4901::/48 prefix-length=56
    takže jim z /48 rozsahu budu delegovat prefixy /56
    IPv6 - pool
  • 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
    IPv6 - DHCPv6
  • 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
    IPv6 - Neighbor discovery
  • 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
    IPv6 - DNS
  • 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
IPv6 - firewall (1)
IPv6 - firewall (2)
IPv6 - firewall (3)
IPv6 - firewall (4)
  • a teď by to mělo být připravené, aby to routovalo a poskytovalo členům prefixy.

Mikrotik RouterOS 7.x - zjednodušené nastavení pomocí skriptu

  • upravíme proměnné
  • testováno pro ROS 7.11. a 7.12.
  • otevřeme termínál a zkopírujeme příkazy
  • zkontrolujeme, zda se vše provedlo bez chyb
  • ručně zkopírujeme nastavení interface z OSPFv2 (IPv4) a upravíme pro OSPFv3 (IPv6) viz zakomentovaná část
  • povolíme přístup ke službám přes IPv6
#
# IPv6 on RouterOS 7.12.1
# Kulin - 1.1.2024
#

#### PROMENNE #####
# definice IP adres, vychazime z https://ripe.hkfree.org/
:global ipv4Router "10.107.xxx.1";
:global ipv6Router "2a01:168:xx00::1/128";
:global ipv6Subnet "2a01:168:xx00::/40";
#### PROMENNE #####


# HKfree DNS
/ip dns
set servers=10.107.4.100,10.107.4.129,2a01:168:0:10::f

# povolime IPv6
/ipv6 settings
set max-neighbor-entries=8192 disable-ipv6=no forward=yes

# nastavime zakladni bezstavovy firewall
/ipv6 firewall address-list
add address=2a01:168::/29 comment=hkfree list=allowed
add address=fe80::/16 comment=link-local list=allowed
add address=ff02::/16 comment=multicast list=allowed
/ipv6 firewall filter
add action=accept chain=input comment="allow ospfv3" protocol=ospf
add action=accept chain=input comment="accept ICMPv6" protocol=icmpv6
add action=accept chain=input comment="accept UDP traceroute" port=33434-33534 protocol=udp
add action=accept chain=input comment="allow allowed addresses" src-address-list=allowed
add action=drop chain=input comment="drop all"

# loopback se nastavuje tak, že se vytvoří samotný bridge bez portů. Pozná se tak, že L2 MTU je 65535. Bridge s porty má L2 MTU 1514.
/interface bridge
add name=IPv6-loopback protocol-mode=none

# na loopback nastavime "pěknou globální IPv6 adresu", která nám bude sloužit primárně jen pro správu routeru například a bude snadno zapamatovatelná
/ipv6 address
add address=$ipv6Router advertise=no no-dad=yes interface=IPv6-loopback

# routa, co budeme sirit ven
/ipv6 route
add blackhole comment="Agregacni routa" disabled=no distance=1 dst-address=$ipv6Subnet gateway="" routing-table=main scope=30 target-scope=10

# filtr na odchozí routy šířené přes OSPF ven. Žádný subnet menší než /48 nesmí ven
/routing filter rule
add chain=IPv6-ospf-out disabled=no rule="if (dst-len<=48) { accept }"

# nastavime routing id
/routing id
add disabled=no id=$ipv4Router name=id-1 select-dynamic-id=only-vrf select-from-vrf=main

# vytvorie ospf instanci
/routing ospf instance
add disabled=no name=IPv6 originate-default=never out-filter-chain=IPv6-ospf-out redistribute=static router-id=id-1 version=3
/routing ospf area
add disabled=no instance=IPv6 name=backbone-IPv6

##### TOHLE JE RUCNI PRACE :-) ######
#/routing ospf interface-template
# zde si zkopirujeme vsechny interface (primarni a zalozni linky) pro IPv4 s tim, ze odebereme "networks" a jako "area" pouzijeme vytvorenou "backbone-IPv6"
# podle protistrany upravime pripadne zrusime zabezpeceni (Authentication, Auth.Key, Auth. ID)

#### POVOLENI PRISTUPU #####
# povolit pristup z rozsahu 2a01:168::/29
# priklad --- POZOR chybi vnitrni rozsah, tzn nezapomente pridat vnitrni sit!!!
#/ip service
#set api address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
#set api-ssl address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
#set ftp address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
#set ssh address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29
#set telnet address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
#set winbox address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29
#set www address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29 disabled=yes
#set www-ssl address=10.107.0.0/16,10.207.0.0/16,10.253.36.0/22,89.248.240.0/20,185.110.204.0/22,2a01:168::/29

######### TESTY, zda nam IPv6 funguje ########
# overeni pingem
/ping 2a01:168:0:10::f:2

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


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: