IPv6: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
(Není zobrazeno 36 mezilehlých verzí od 13 dalších uživatelů.)
Řádek 1: Řádek 1:
 
==Adresace==
 
==Adresace==
  
* prefix IPv6 pro celé HKfree je '''2a01:168::/32'''
+
* prefix IPv6 pro celé HKfree je '''2a01:168::/32''' v kompletním zapisu: 2a01:168:0000:0000:0000:0000:0000:0000/32, zápis "::" znamená doplň celý zbytek adresy nulami,
 
* kazda oblast dostane prefix /48 podle cisla oblasti u 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)
+
Dalsich 8 bitu je logicka cast (router1, router2, sektor, vsesmer, lan, vlan ...) v ramci oblasti a zbylych 8 bity je pro lepsi rozdeleni v teto logicke casti (0 je vzdy hlavni podsit), obecně je zbytečné adresní rozsah do nekonečna dělit a pak mít problémy s přechodem klientů např. mezi sektory apod.
* linkove adresy nejsou potreba - viz link scope  
+
* 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
+
* 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
+
* adresy aplikacnich serveru se prideluji z rozsahu 2a01:168::/48,
* [[Klientské zařízení s podporou IPv6]]
+
* [[Klientské zařízení s podporou IPv6]],
 +
* [http://petrkrcmar.blog.root.cz/2010/10/25/cim-si-vyzkouset-ipv6/ Test IPv6].
  
 
==Jak pridelit IPv6 adresu/rozsah (pro spravce)==
 
==Jak pridelit IPv6 adresu/rozsah (pro spravce)==
Řádek 28: Řádek 29:
  
  
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'''.
+
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čí!)
 
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čí!)
Řádek 49: Řádek 50:
 
           netmask 64
 
           netmask 64
 
</pre>
 
</pre>
 +
'''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í)
 
pro OpenSUSE stačí přidat řádek do '''/etc/sysconfig/network/ifcfg-eth0''' (místo eth0 zadejte název požadovaného rozhranní)
Řádek 82: Řádek 84:
 
* DNS servery - 2a01:168:0:10::f, 2a01:168:7:a00::245
 
* DNS servery - 2a01:168:0:10::f, 2a01:168:7:a00::245
  
* ipv6-enabled oblasti:  
+
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
  
 
{| border="1"
 
{| border="1"
|  '''Oblast'''    ||  '''Podpora na pateri'''  ||  '''Podpora u klientu'''  ||  '''IPv6 Adresa routeru'''
+
|  '''<s>Oblast</s>'''    ||  '''<s>Podpora na pateri</s>'''  ||  '''<s>Podpora u klientu</s>'''  ||  '''<s>IPv6 Adresa routeru</s>'''
 
|-
 
|-
|  D-network    ||  Ano  ||  Ano (pouze klienti, kteri jsou na stejnem subnetu jako hlavni routr)  ||  2a01:168:3::1
+
<s>D-network</s>   ||  <s>Ano</s>   ||  <s>Ano (pouze klienti, kteri jsou na stejnem subnetu jako hlavni routr)</s>   ||  <s>2a01:168:3::1</s>
 
|-
 
|-
|  JNet    ||  Ano  ||  Ano  ||  2a01:168:36::1
+
<s>JNet</s>   ||  <s>Ano</s>   ||  <s>Ano</s>   ||  <s>2a01:168:36::1</s>
 
|-
 
|-
|  Slatina    ||  Ano  ||  Castecne  ||  2a01:168:7::a00::1
+
<s>Slatina</s>   ||  <s>Ano</s>   ||  <s>Castecne</s>   ||  <s>2a01:168:7::a00::1</s>
 
|-
 
|-
|  Libuse    ||  Ano  ||  Neznamo  ||  2a01:168:2::1
+
<s>Libuse</s>   ||  <s>Ano</s>   ||  <s>Neznamo</s>   ||  <s>2a01:168:2::1</s>
 
|-
 
|-
|  Piletice    ||  Ano  ||  Ne  ||  2a01:168:31:700::1
+
<s>Piletice</s>   ||  <s>Ano</s>   ||  <s>Ne</s>   ||  <s>2a01:168:31:700::1</s>
 
|-
 
|-
|  Podulsany    ||  Ano  ||  Ano  ||  2a01:168:a::1
+
<s>Podulsany</s>   ||  <s>Ano</s>   ||  <s>Ano</s>   ||  <s>2a01:168:a::1</s>
 
|-
 
|-
|  Yzop    ||  Neznamo  ||  Neznamo  ||  Neznamo
+
<s>Yzop</s>   ||  <s>Neznamo</s>   ||  <s>Neznamo</s>   ||  <s>Neznamo</s>
 
|-
 
|-
|  Lhotka    ||  Neznamo  ||  Neznamo  ||  Neznamo
+
<s>Lhotka</s>   ||  <s>Neznamo</s>   ||  <s>Neznamo</s>   ||  <s>Neznamo</s>
 
|-
 
|-
|  Postman    ||  Neznamo   ||  Neznamo   ||  Neznamo
+
<s>Postman</s>   ||  <s>Ano</s>   ||  <s>Ano</s>   ||  <s>2a01:168:3c:1000::1</s>
 
|-
 
|-
Mandysova   ||  Neznamo   ||  Neznamo  ||   Neznamo
+
<s>Plotiště</s>   ||  <s>Ano</s>   ||  <s>Neznamo</s>   || <s>2a01:168:8::1</s>
 
|-
 
|-
Dolany   ||  Ano  ||  Ano   ||  2a01:168:ad::1
+
<s>Kalinka</s>   ||  <s>Ano</s>   ||  <s>Neznamo</s>   ||  <s>2a01:168:8:8000::1</s>
 
|-
 
|-
| Plch    |Ano   |Ano   ||   Doplnim
+
|<s>Drtinova</s>
 +
|<s>Ano</s>
 +
|<s>Ano (IPV6 na všech subnetech k užvatelům vč. AP Dolíky)</s>
 +
|<s>2a01:168:003f:1000::1</s>
 
|-
 
|-
 +
|  <s>Mandysova</s>    ||  <s>Ne</s>  ||  <s>Ano</s>  ||  <s>2a01:168:35:40::107</s>
 +
|-
 +
|  <s>Dolany</s>    ||  <s>Ano</s>  ||  <s>Ano</s>  ||  <s>2a01:168:ad::1</s>
 +
|-
 +
|  <s>Plch</s>    ||  <s>Ano</s>  ||  <s>Ano</s>  ||  <s>Doplnim</s>
 +
|-
 +
|  <s>Benesova</s>    ||  <s>Ano</s>  ||  <s>Ano</s>  ||  <s>2a01:168:10::1</s>
 +
|-
 +
|  <s>Trebes</s>    ||  <s>Ano</s>  ||  <s>Ne</s>  ||  <s>2a01:168:8c:1::1</s>
 +
|-
 +
|  <s>Vecino</s>    ||  <s>Ano</s>  ||  <s>Castecne</s>  ||  <s>2a01:168:50::1</s>
 +
|-
 +
|  <s>Hive</s>  ||  <s>Ano</s>  ||  <s>Castecne</s>  ||  <s>2a01:168:1f:1::1</s>
 +
|-
 +
|  <s>Hvezda</s>    ||  <s>Ano</s>  ||  <s>Castecne</s>  ||  <s>2a01:168:19::1</s>
 +
|-
 +
|  <s>Horakova</s>    ||  <s>Ano</s>  ||  <s>Castecne</s>  ||  <s>2a01:168:5b::1</s>
 +
|-
 +
|  <s>Hydra</s>  ||  <s>Ano</s>  ||  <s>Ne</s>  ||  <s>2a01:168:e::1</s>
 +
|-
 +
|  <s>Zvonicka</s>    ||  <s>Ano</s>  ||  <s>Castecne</s>  ||  <s>2a01:168:5a::1</s>
 +
|-
 +
|  <s>Lesopark</s>    ||  <s>Ano</s>  ||  <s>Ano</s>  ||  <s>2a01:168:59:1::1</s>
 +
|-
 +
|  <s>Malšova Lhota</s>  ||  <s>Ano</s> ||  <s>Ano</s>  ||  <s>2a01:168:4c::1</s>
 +
|-
 +
|  <s>Bydlo</s>    ||  <s>Ano</s>  ||  <s>Připravujeme</s>  ||  <s>2a01:168:b1::1</s>
 +
|-
 +
|  <s>Chlumec</s>    ||  <s>Ano</s>  ||  <s>Připravujeme</s>  ||  <s>2a01:168:b3::1</s>
 +
|-
 +
|  <s>Obědovice</s>    ||  <s>Připravuju</s>  ||  <s>Připravuju</s>  ||  <s>2a01:168:b0::1</s>
 +
|-
 +
|  <s>Purkyně</s>    ||  <s>Ano</s>  ||  <s>Pouze Páteř</s>  ||  <s>2a01:168:88::1</s>
 +
|-
 +
|  <s>Kocourkov</s>    ||  <s>Ano</s>  ||  <s>Pouze Páteř</s>  ||  <s>2a01:168:25::1</s>
 +
|-
 +
|  <s>Andre</s>    ||  <s>Ano</s>  ||  <s>Pouze Páteř</s>  ||  <s>2a01:168:89::1</s>
 +
|-
 +
|  <s>Hrubínova</s>    ||  <s>Ano</s>  ||  <s>Pouze Páteř</s>  ||  <s>2a01:168:ed::1</s>
 +
|-
 +
|  <s>Gebauerova</s>    ||  <s>Ano</s>  ||  <s>Pouze Páteř</s>  ||  <s>2a01:168:e3:1::1</s>
 +
|-
 +
|  <s>Lhota pod Libčany</s>    ||  <s>Ne</s>  ||  <s>Ne</s>  ||  <s>2a01:168:f:1::1</s>
 +
|-
 +
|  <s>Probluz</s>    ||  <s>Ano</s>  ||  <s>Ne</s>  ||  <s>2a01:168:54::1</s>
 +
|-
 +
|  <s>Strezetice Jezisek</s>    ||  <s>Ano</s>  ||  <s>NE</s>  ||  <s>2a01:168:57:1::1</s>
 +
|-
 +
|  <s>Nechanice</s>    ||  <s>Ano</s>  ||  <s>Ne</s>  ||  <s>2a01:168:55::1</s>
 +
|-
 +
 
|}
 
|}
** UPDATOVAT !
+
**  
  
 
==Priklady konfigurace zebry==
 
==Priklady konfigurace zebry==
Řádek 135: Řádek 191:
 
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 171: Řádek 228:
 
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 239: Řádek 318:
 
==Rozchození IPv6 na Mikrotiku s RouterOS==
 
==Rozchození IPv6 na Mikrotiku s RouterOS==
  
Příklad konfigurace AP Mandysova, verze RouterOS 3.16, navic balik routing-test.npk (nutny pro OSPFv3)
+
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.
 
 
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>
 
/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
 
</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).
+
Budu jako příklad uvádět svou oblast LiSt.
<pre>
 
/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
 
</pre>
 
  
Nastavení OSPF. Důležitý pro nás by parametr "redistribute-connected=as-type-1"
+
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'''
<pre>
+
* nastavil jsem si první '''adresu na interface, kde jsou klienti''' (u mě "bridge-sektory")<syntaxhighlight>
/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
+
/ipv6 address add address=2a01:168:4900::1/64 advertise=yes disabled=no eui-64=no from-pool="" interface=Bridge-sektory no-dad=no
</pre>
+
</syntaxhighlight>[[Soubor:IPv6-address.png|none|thumb|452x452px|IPv6 - adresa]]
  
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)
+
* další je nastavení '''OSPFv3'''<syntaxhighlight>
<pre>
+
/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
/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
+
</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
/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
+
* dalším bylo nastavení '''instances'''<syntaxhighlight>
/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
+
/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
</pre>
+
</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]]
  
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.
+
*No a nakonec se hodí to '''zabezpečit lehkým firewallem''' 
<pre>
+
<syntaxhighlight>
/interface 6to4 name=tunel-gw6 local-address=10.107.53.107 remote-address=10.107.4.1 disabled=no mtu=1480
+
/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
</pre>
+
</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.'''
  
 
== DHCPv6 ==
 
== DHCPv6 ==
Řádek 309: Řádek 397:
 
};
 
};
 
</pre>
 
</pre>
 +
 +
== 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>
 +
ip6tables -A INPUT -s 2a01:168::/32 -j ACCEPT
 +
ip6tables -A INPUT -s ! 2a01:168::/32 -p tcp --syn -j DROP
 +
</pre>
 +
 +
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:
 +
* [http://technet.microsoft.com/en-us/library/bb726943.aspx Windows]
 +
* [http://www.sixxs.net/wiki/IPv6_Firewalling Linux]

Verze z 3. 5. 2020, 20:26

Adresace

  • prefix IPv6 pro celé HKfree je 2a01:168::/32 v kompletním zapisu: 2a01:168:0000:0000:0000:0000:0000:0000/32, zápis "::" znamená doplň celý zbytek adresy nulami,
  • kazda oblast dostane prefix /48 podle cisla oblasti u IPv4

Dalsich 8 bitu je logicka cast (router1, router2, sektor, vsesmer, lan, vlan ...) v ramci oblasti a zbylych 8 bity je pro lepsi rozdeleni v teto logicke casti (0 je vzdy hlavni podsit), obecně je zbytečné adresní rozsah do nekonečna dělit a pak mít problémy s přechodem klientů např. mezi sektory apod.

  • 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 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


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

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 Ano Ano 2a01:168:3c:1000::1
Plotiště Ano Neznamo 2a01:168:8::1
Kalinka Ano Neznamo 2a01:168:8:8000::1
Drtinova Ano Ano (IPV6 na všech subnetech k užvatelům vč. AP Dolíky) 2a01:168:003f:1000::1
Mandysova Ne Ano 2a01:168:35:40::107
Dolany Ano Ano 2a01:168:ad::1
Plch Ano Ano Doplnim
Benesova Ano Ano 2a01:168:10::1
Trebes Ano Ne 2a01:168:8c:1::1
Vecino Ano Castecne 2a01:168:50::1
Hive Ano Castecne 2a01:168:1f:1::1
Hvezda Ano Castecne 2a01:168:19::1
Horakova Ano Castecne 2a01:168:5b::1
Hydra Ano Ne 2a01:168:e::1
Zvonicka Ano Castecne 2a01:168:5a::1
Lesopark Ano Ano 2a01:168:59:1::1
Malšova Lhota Ano Ano 2a01:168:4c::1
Bydlo Ano Připravujeme 2a01:168:b1::1
Chlumec Ano Připravujeme 2a01:168:b3::1
Obědovice Připravuju Připravuju 2a01:168:b0::1
Purkyně Ano Pouze Páteř 2a01:168:88::1
Kocourkov Ano Pouze Páteř 2a01:168:25::1
Andre Ano Pouze Páteř 2a01:168:89::1
Hrubínova Ano Pouze Páteř 2a01:168:ed::1
Gebauerova Ano Pouze Páteř 2a01:168:e3:1::1
Lhota pod Libčany Ne Ne 2a01:168:f:1::1
Probluz Ano Ne 2a01:168:54::1
Strezetice Jezisek Ano NE 2a01:168:57:1::1
Nechanice Ano Ne 2a01:168:55::1

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
    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.

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::/32 -j ACCEPT
ip6tables -A INPUT -s ! 2a01:168::/32 -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: