IPv6

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání

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
  • ipv6-enabled oblasti:
Oblast Podpora na pateri Podpora u klientu IPv6 Adresa routeru
D-network Ano Ano (pouze klienti, kteri jsou na stejnem subnetu jako hlavni routr) 2a01:168:3::1
JNet Ano Ano 2a01:168:36::1
Slatina Ano Castecne 2a01:168:7::a00::1
Libuse Ano Neznamo 2a01:168:2::1
Piletice Ano Ne 2a01:168:31:700::1
Podulsany Ano Ano 2a01:168:a::1
Yzop Neznamo Neznamo Neznamo
Lhotka Neznamo Neznamo Neznamo
Postman 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
    • UPDATOVAT !

Priklady konfigurace zebry

ospf6d.conf


hostname HOSTNAME
password free
enable password XXXXXXX
!
interface eth0
 ipv6 ospf6 cost 10
!
router ospf6
 router-id 10.107.X.Y
 redistribute connected
 interface eth0 area 0.0.0.0
 interface eth1 area 0.0.0.0
!

zebra.conf


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

/ipv6 address add address=2a01:168:35:222::107/64 advertise=yes disabled=no eui-64=no interface=bridge-local
/ipv6 address add address=2a01:168:35::107/64     advertise=yes disabled=no eui-64=no interface=bridge-wifi

Nastaveni areas. Klidně lze vystačit s jednou backbone. Já obvykle používam ještě jednu - terminal - pro koncové oblasti (tam kde jsou klienti a žádné další routery).

/routing ospf-v3 area set backbone area-id=0.0.0.0 name=backbone disabled=no type=default
/routing ospf-v3 add area-id=0.0.1.0 name=terminal default-cost=1 disabled=no inject-summary-lsas=yes type=stub

Nastavení OSPF. Důležitý pro nás by parametr "redistribute-connected=as-type-1"

/routing ospf-v3 set distribute-default=never metric-bgp=20 metric-connected=20 metric-default=1 metric-rip=20 metric-static=20 redistribute-bgp=no redistribute-connected=as-type-1 redistribute-rip=no redistribute-static=no router-id=10.107.53.107

Nastavení interfaceů. Na routeru jsou dva interface, na kterých je povoleno ipv6: bridge-wifi a bridge-local. Třetí interface je v našem případě 6to4 tunel na igw (tunel je zde proto, že naše oblast nesousedí s žádnou oblastí s funkčním ipv6)

/routing ospf-v3 interface add interface=tunel-gw6    area=backbone cost=10 dead-interval=30s disabled=no hello-interval=5s instance-id=0 network-type=default passive=no priority=1 retransmit-interval=5s transmit-delay=1s
/routing ospf-v3 interface add interface=bridge-wifi  area=terminal cost=10 dead-interval=30s disabled=no hello-interval=5s instance-id=0 network-type=default passive=no priority=1 retransmit-interval=5s transmit-delay=1s
/routing ospf-v3 interface add interface=bridge-local area=terminal cost=10 dead-interval=30s disabled=no hello-interval=5s instance-id=0 network-type=default passive=no priority=1 retransmit-interval=5s transmit-delay=1s

Pro doplnění ještě přidávám nastavení 6to4 tunelu. Remote je IPčko igw, kde běží protikus tunelu, local je IP adresa interfacu bridge-wifi. Žádné ip adresy interfacu tunelu není třeba přiřazovat, vystačí si s link-local adresu.

/interface 6to4 name=tunel-gw6 local-address=10.107.53.107 remote-address=10.107.4.1 disabled=no mtu=1480

Nastavení radvd (obdobně jako konfigurace zebra.conf v Linuxu) provedeme na 2 místech

IPv6-Adressess (u G adresy vytvořené ze subnetu pro naše AP nastavíme příznak advertize)
IPv6-ND-Interfaces (nastavení na které interface a jak se má oznamovat RA)

Pozn. pokud chceme IPv6 na našem AP směrem ke členům zatím neřešit, ale je potřeba mít přístupnou IPv6 páteř pro další AP, tak je potřeba vypnout RA na obou místech.

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: