❗️Toto je původní verze internetového fóra ISPforum.cz do února 2020 bez možnosti registrace nových uživatelů. Aktivní verzi fóra naleznete na adrese https://telekomunikace.cz

DHCPv6 aneb jak snadno přijít o rozum

Návody a problémy s konfigurací.
travel21
Příspěvky: 102
Registrován: 18 years ago

Re: DHCPv6 aneb jak snadno přijít o rozum

Příspěvekod travel21 » 9 years ago

Tak to je mazec. Díky moc. Jdu se trápit :D :D
0 x

Majklik
Příspěvky: 1949
Registrován: 14 years ago

Příspěvekod Majklik » 9 years ago

travel21 píše:Ok pak ale tedy nechápu proč se v pool nastavuje prefix a délka prefixu když ho koncová stanice vidí právě z RA. Pokud nejde nastavit MK tak abych třeba klientovi přidělil adresu na základě DUID třeba fdab:c:d:9243::10/64 tak je to úplně k ho...

Jestli to teda chápu dobře tak prefix v pool zařídí, že DHCP pošle na hosta prefix třeba fdab:c:d:9243:0000:0000:0000::/64 a zbytek se vygeneruje z čeho a kde? Na koncové stanici?


Je třeba rozlišovat, DHCPv6 přiděluje IPv6 adresy koncovým hostům, to Mkrotik neumí. Umí jen přidělit pomocí DHCPv6-PD celý prefix, který obvyle se přiděluje routeru, aby jej použil dál. A jak to dál udělá, je věc/problém toho routeru.

Ano, mám pool o veliksoti třeba /52 a z něj přiděluji bloky o velikosit /60 koncovým routerům zákazníků, co dál s tím udělá tne router, to je jeho věc (přidělí na vntzřní intefejsy po blocích /64 a dilních 64 bitů mu buď přednastavím nebo si je vygeneruje pomocí EUI64.

travel21 píše:Na spojovačku by ale měl stačit link local address? Nebo ten je jen pro příchozí spojení? na managment?


Ano, na spojovačce mezi mým routerem a routerme zákazníka vůbec nemusí být globální IPv6 adresy, funguje to přes link-local adresy.
Dneska je to pro IPv6 i best practise, že mezi routery vůbec nemají být globální adresy. Router má jen jendu /128 globální adresu na loopbacku. IPv6 adresy jsou jen na segmentech, kde jsou koncové počítače.

travel21 píše:Dobře pokud ale mám povolen RA na hlavním MK a autokonfiguraci tak bych na opozitu nemusel používat DHCP6-klienta? Klientský router by na WAN měl použít autokonfiguraci, tedy prefix halvního routeru doplněn o EUI64 ze své MAC?


U IPv6 se rozlišují obecně 3 druhy zařízení:
koncové stanice,
router,
koncový router.

Pouze koncové stanice mají dovoleno se nakonfigruovat pomocí autokonfigurace, routery to mají zakázáno. Nyní po novu je dovolenou pouze pro koncové domácí routery, aby se také přijmuly nastavení pomocí autokonfigurace na WAN portu. A toto se musí výslovně povolit:
/ipv6 settings set accept-router-advertisements=yes

DHCPv6-PD klient se musí použít vždy, abych získal prefix, který pak může domácí router použít na své LAN straně. Pokud nemám potřebu se spojovat na WAN stranu routeru, tak je zbytečné zapínat tu konfiguraci wan strany.
0 x

Majklik
Příspěvky: 1949
Registrován: 14 years ago

Příspěvekod Majklik » 9 years ago

Bach píše:/ipv6 address
add address=2a02:17a0:xxxx::xxxx/64 interface=sit

...

/ipv6 nd
set [ find default=yes ] advertise-dns=yes
/ipv6 nd prefix
add interface=ether1 prefix=2a02:17a0::/32


Nemáš chybu v tom 2a02:17a0::/32? Pokud, tak by mělo být /64, protože autokonfigurace funguje pouye pro /64 prefixy.
A pokud náhodou výše to "address=2a02:17a0:xxxx::xxxx/64 interface=sit" odkazuje také na ether1, tak to máš zdvojeně. Bud na interface definuješ IPv6 adresu s /64 a zapneš u ní advertise, pak ji ND začne propagovat nebo ji nenastavíš/nepovolíš advertise a pak můžu vysloveně propagovat prefix přes to /ipv6 nd prefix, je zbytečné nastavovat oboje.
0 x

Bach
Příspěvky: 127
Registrován: 18 years ago

Příspěvekod Bach » 9 years ago

Majklik píše:
Bach píše:/ipv6 address
add address=2a02:17a0:xxxx::xxxx/64 interface=sit

...

/ipv6 nd
set [ find default=yes ] advertise-dns=yes
/ipv6 nd prefix
add interface=ether1 prefix=2a02:17a0::/32


Nemáš chybu v tom 2a02:17a0::/32? Pokud, tak by mělo být /64, protože autokonfigurace funguje pouye pro /64 prefixy.
A pokud náhodou výše to "address=2a02:17a0:xxxx::xxxx/64 interface=sit" odkazuje také na ether1, tak to máš zdvojeně. Bud na interface definuješ IPv6 adresu s /64 a zapneš u ní advertise, pak ji ND začne propagovat nebo ji nenastavíš/nepovolíš advertise a pak můžu vysloveně propagovat prefix přes to /ipv6 nd prefix, je zbytečné nastavovat oboje.


Díky za upozornění. Na ostatních routerech to nemám. Pozůstatek po testování
0 x
Na domácí přípojku to jde. :-))) http://www.speedtest.net/result/3688392378.png

travel21
Příspěvky: 102
Registrován: 18 years ago

Příspěvekod travel21 » 9 years ago

Ok abych to tedy shrnul:

- Ty jsi tedy vytvořil pool na hlavním MK který přiděluje přes "WAN" rozhraní klienta celý 64bit subnet na jeho lokální interface pomocí DHCPv6-DP.
- To celé za pomoci DHCP klienta, který si přes WAN rozhraní klienta zjistí prefix z daného pool a použije ho na svůj pool pro lokální síť.
- Celkem tedy rozděluješ 32 sítí o velikosti 64, takže max.32 potenciální klientů

Asi jsem to pochopil. Jediné co mi neštimuje je to, že když tedy má klientům (MK) přidělit každému jiný pool v mém případě:
fdab:c:d:9200::/64 -> fdab:c:d:921f:ffff:ffff:ffff:ffff/64


proč mi prvnímu klientovi dal pool sama sebe tedy fdab:c:d:9200::/64? Je pravda, že se to v binding dá přepsat na tu statiku ale je to tak správně?

Díky za odpověď...
0 x

Majklik
Příspěvky: 1949
Registrován: 14 years ago

Příspěvekod Majklik » 9 years ago

A jak máš ten pool definován? Jestli něco jako:
/ipv6 pool add name=pool-dhcp6pd prefix=fdab:c:d:9200::/59 prefix-length=64
Tak je jasné, že to přidělí i blok fdab:c:d:9200::/64, protože je to první z tčicetidvou možných bloků v tom poolu. Že ten segment máš ty někde (byť na tom stejném routeru) již použit, tak o to se pool a dhcp6-pd server nestará. Staral by se jen v případě, že by o tom ten pool věděl, takže když si přidělíš blok z toho poolu na LAN, tak ho pak vynechá. Čili definice lan (pokud je na ether1) stylem:
/ipv6 address add interface=ether1 eui-64=no from-pool=pool-dhcp6pd advertise=yes address=::1/64
0 x

travel21
Příspěvky: 102
Registrován: 18 years ago

Příspěvekod travel21 » 9 years ago

Majklik píše:A jak máš ten pool definován? Jestli něco jako:
/ipv6 pool add name=pool-dhcp6pd prefix=fdab:c:d:9200::/59 prefix-length=64
Tak je jasné, že to přidělí i blok fdab:c:d:9200::/64, protože je to první z tčicetidvou možných bloků v tom poolu. Že ten segment máš ty někde (byť na tom stejném routeru) již použit, tak o to se pool a dhcp6-pd server nestará. Staral by se jen v případě, že by o tom ten pool věděl, takže když si přidělíš blok z toho poolu na LAN, tak ho pak vynechá. Čili definice lan (pokud je na ether1) stylem:
/ipv6 address add interface=ether1 eui-64=no from-pool=pool-dhcp6pd advertise=yes address=::1/64


jj včera mi to nedalo spát, tak jsem koukal do prefix used a tam jsem si všiml že si ho rezervuje nějaké rozhraní. Ano měl jsem ho definován jako fdab:c:d:9200::/59 na lenght prefix 64. Ale zapomněl jsem že adresa rozhraní hlavního MK kterou mám fdab:c:d:9200::1/64 může zadat z jakého pool se má použit. A tím se to vyřešilo. Co jsem to zadal tam mi už první klient dostal subnet xxxx:9201::/64 což je přesně to co potřebuji.


Moc děkuji za pomoc s pochopením DHCP mikrotku. Je to totálně odlišné od IPv4 a je potřeba na to koukat úplně jinak.
0 x

travel21
Příspěvky: 102
Registrován: 18 years ago

Příspěvekod travel21 » 9 years ago

Majklik píše:
travel21 píše:Ok pak ale tedy nechápu proč se v pool nastavuje prefix a délka prefixu když ho koncová stanice vidí právě z RA. Pokud nejde nastavit MK tak abych třeba klientovi přidělil adresu na základě DUID třeba fdab:c:d:9243::10/64 tak je to úplně k ho...

Jestli to teda chápu dobře tak prefix v pool zařídí, že DHCP pošle na hosta prefix třeba fdab:c:d:9243:0000:0000:0000::/64 a zbytek se vygeneruje z čeho a kde? Na koncové stanici?


Je třeba rozlišovat, DHCPv6 přiděluje IPv6 adresy koncovým hostům, to Mkrotik neumí. Umí jen přidělit pomocí DHCPv6-PD celý prefix, který obvyle se přiděluje routeru, aby jej použil dál. A jak to dál udělá, je věc/problém toho routeru.

Ano, mám pool o veliksoti třeba /52 a z něj přiděluji bloky o velikosit /60 koncovým routerům zákazníků, co dál s tím udělá tne router, to je jeho věc (přidělí na vntzřní intefejsy po blocích /64 a dilních 64 bitů mu buď přednastavím nebo si je vygeneruje pomocí EUI64.

travel21 píše:Na spojovačku by ale měl stačit link local address? Nebo ten je jen pro příchozí spojení? na managment?


Ano, na spojovačce mezi mým routerem a routerme zákazníka vůbec nemusí být globální IPv6 adresy, funguje to přes link-local adresy.
Dneska je to pro IPv6 i best practise, že mezi routery vůbec nemají být globální adresy. Router má jen jendu /128 globální adresu na loopbacku. IPv6 adresy jsou jen na segmentech, kde jsou koncové počítače.

travel21 píše:Dobře pokud ale mám povolen RA na hlavním MK a autokonfiguraci tak bych na opozitu nemusel používat DHCP6-klienta? Klientský router by na WAN měl použít autokonfiguraci, tedy prefix halvního routeru doplněn o EUI64 ze své MAC?


U IPv6 se rozlišují obecně 3 druhy zařízení:
koncové stanice,
router,
koncový router.

Pouze koncové stanice mají dovoleno se nakonfigruovat pomocí autokonfigurace, routery to mají zakázáno. Nyní po novu je dovolenou pouze pro koncové domácí routery, aby se také přijmuly nastavení pomocí autokonfigurace na WAN portu. A toto se musí výslovně povolit:
/ipv6 settings set accept-router-advertisements=yes

DHCPv6-PD klient se musí použít vždy, abych získal prefix, který pak může domácí router použít na své LAN straně. Pokud nemám potřebu se spojovat na WAN stranu routeru, tak je zbytečné zapínat tu konfiguraci wan strany.


Možná blbý dotaz ale co když si rozsegmentuji pool 59 na 64 bloky a jeden zakázník mi řekne že chce dva ::/64 subnety. Je to řešitelné?
0 x

Uživatelský avatar
honzam
Příspěvky: 5527
Registrován: 18 years ago

Příspěvekod honzam » 9 years ago

Neco ohledně DHCP-PD aktuálně ladí:
6.34rc5 will be released today
*) dhcpv6-client - added DHCPv6-client functionality for current DHCP-PD client
0 x

Majklik
Příspěvky: 1949
Registrován: 14 years ago

Příspěvekod Majklik » 9 years ago

honzam píše:Neco ohledně DHCP-PD aktuálně ladí:
6.34rc5 will be released today
*) dhcpv6-client - added DHCPv6-client functionality for current DHCP-PD client


Neladí DHCPv6-PD klienta (toho rozbíjí), ale přidali do něj podporu i klasického DHCPv6 klienta (to jest získání jedné IPv6 adresy pro interface a ne jen celého prefixu, jak dělá -PD). A rovnou s poznámkou, že máme počítat s tím, že -PD klienta tím rozbijí. :-)

travel21 píše:Možná blbý dotaz ale co když si rozsegmentuji pool 59 na 64 bloky a jeden zakázník mi řekne že chce dva ::/64 subnety. Je to řešitelné?


Ano, lze. Nejjednodušší je rovnou klientům přidělovat bloky např /60 a mít pokoj. :-)
Jinak tak, že uděláš pro něj statický binding, kde mu zkrátka přidělíš ten blok /63. Pozor! Tento statický příděl, když má jinou délku prefixu, než jakou používá pool, tak musí ležet mimo definované pooly, jinak to bude blbnout. A dále v závislosti na konkrétní verzi ROS, se toto dost blbě definuje, bude se bránit. Takže nejlépe je, když chci udělat jednoho klienta s jinou délkou prefixu, než je default dle poolu, tak odebrat pool z DHCPv6 serveru, pak nadefinovat vyjímkového klienta a pak pool vrátit zpět. Stejně debilně je nutno postupovat při případné změně definice takového klienta - odebrat pool, změnit klienta, vrátit pool => rovnou d8vat všem /60 a mít pokoj... Navíc i IPv6 specifikace doporučují, abych přidělovat bloky tak, že mám počítat s rozšířením pro klienta (pokud rovnou nedávám /48 na klienta), když bude chtít víc, než kolik mu aktuálně dávám, aby to bylo jen změnou délky masky a ne tím, že mu dám jiný prefix nebo různé nenavazující bloky.

travel21 píše:jj včera mi to nedalo spát, tak jsem koukal do prefix used a tam jsem si všiml že si ho rezervuje nějaké rozhraní. Ano měl jsem ho definován jako fdab:c:d:9200::/59 na lenght prefix 64. Ale zapomněl jsem že adresa rozhraní hlavního MK kterou mám fdab:c:d:9200::1/64 může zadat z jakého pool se má použit. A tím se to vyřešilo. Co jsem to zadal tam mi už první klient dostal subnet xxxx:9201::/64 což je přesně to co potřebuji.


Jak jsme psal, není potřeba mít na spojovacím segmentu k zákazníkům globální adresy, takže ten první /64 můžeš ušetřit. Byl by jen třeba, kdynby zákoš neměl router, ale přímo píchlej komputer.
A pokud nastavíš řízeně, aby klietům router na LAN straně si vzal přefix a vygenrvoal si IPv6 adresu <přidělený prefix>::1/64, tak víš i jasně IPv6 adresu, na kteoru se vždy můžeš spojovat.

travel21 píše:Moc děkuji za pomoc s pochopením DHCP mikrotku. Je to totálně odlišné od IPv4 a je potřeba na to koukat úplně jinak.


Chce to nemíchat DHCPv6 (DHCPv4) a DHCPv6-PD, jde zkrátka o jiné procesy, jen používjaící podoné jméno/protokol. :-)
0 x

travel21
Příspěvky: 102
Registrován: 18 years ago

Příspěvekod travel21 » 9 years ago

Jak jsme psal, není potřeba mít na spojovacím segmentu k zákazníkům globální adresy, takže ten první /64 můžeš ušetřit. Byl by jen třeba, kdynby zákoš neměl router, ale přímo píchlej komputer.
A pokud nastavíš řízeně, aby klietům router na LAN straně si vzal přefix a vygenrvoal si IPv6 adresu <přidělený prefix>::1/64, tak víš i jasně IPv6 adresu, na kteoru se vždy můžeš spojovat.


Tohle jsem také řešil, jelikož mi nevyhovuje EUI 64 formát adresy na spojovacích uzlech, tak jsem to nastavil staticky ::1/64 ale netušil jsem, že se do nastavit aby si to vzal automaticky podle nějakého klíče. To lze?
0 x

Majklik
Příspěvky: 1949
Registrován: 14 years ago

Příspěvekod Majklik » 9 years ago

Pro nastavení IPv6 adresy na tom lokálním LAN iface s využitím prefixu z poolu (dhcpv6pdclient) můžeš dvěma zpásoby:
a) /ipv6 address add interface=bridge-local eui-64=yes from-pool=dhcpv6pdclient advertise=yes
b) /ipv6 address add interface=bridge-local eui-64=no from-pool=dhcpv6pdclient advertise=yes address=::dead:beef/64
První případ vezme prefix z poolu a dolních 64 bitů vygeneruje dle mac adresy na bridge-local. Druhý případ si vezme stejně prefix z poolu, ale dolních 64 bitů nastaví natvrdo na hodnotu ::dead:beef. Nebo asi častěji ::1/64, jde použít i ::/64, ale s něčím to někdy blbbo.
Jinak první případ má ješte možnou variantu, že si na ten bridge-local nastavíš ručně nějakou hezkou admin MAC adresu a pak se dolních 64 bitů vygeneruje řízeně dle ní. Tohoto jde vhodně využít právě v případě, že se pužívá autokonfigurace SLAAC, jak mít zhruba řízenou lokální část IPv6 adresy. :-)
0 x