Docker és IPv6

Fórumok

Építek egy weboldalt websocket-tel, angular-ral, django alapon szép fancy technológiákkal. A projektet docker-be csomagoljuk. IPv4-en minden működik szépen.

IPv6-on több problémám is van. A megfelelő doksikat átnéztem, a google első 50 találatában nem leltem válaszokra. Hátha itt van. Az alap probléma, hogy fix IPv6 címet szeretnék beállítani az AAAA recordnak a webserver-nek (nginx).

A kérdéseim:
- hogy tudom ellenőrizni egy docker image IPv6 címét? A docker inspect látszólag nem jó, mert a használatával nem látom, hogy lenne bármilyen IPv6 cím a container-en. Míg ha mellécsomagolok néhány csomagot (iproute2, iputils-ping), akkor tudja pingelni IPv6-on a hup.hu-t,
- van mód arra, hogy docker-compose-ból állítsak fix IPv6 címet a container-eknek (version '3')? Ha nem:
- DigitalOcean-nál NDP proxy-t kell használnom, mert /124-es block-ot kap csak a host. Ott mi alapján lehet tudni a kiosztott IPv6 címeket? Determinisztikus, hogy ugyanaz a container ugyanazt az IP-t kapja két build után (pl. a neve miatt)?
- pont ezért lehet, hogy a hetzner-hez költözöm (ott /64-et kap a host), ez esetben simán használható az IPv6 forward: mi alapján kap MAC címet a docker container (ott ugye az IPv6 cím a MAC address alapján determinisztikus), (Ezt közben megtaláltam.) Meg azt is, hogy nem biztos, hogy segít ... este kipróbálom. :/
- a legegyszerűbb persze az lenne, ha a host IPv6 címét tudná használni az nginx és minden más akár maradhat is IPv4-en a docker-en belül. Létezik ilyen proxy (maga a docker az IPv4-ekhez is készít proxy-kat). Ha jól értem a doksit, ez az irány (IPv6 NAT) nincs.

Vagy ti hogy csináljátok/oldjátok meg ezeket?

Köszönöm!

Hozzászólások

Csinálj egy ipv6-os namespace-t és abban futtasd a konténert. Szerintem a docker csak ipv4-es nevtereket hoz létre, bár lehet van valami kapcsolókat az ipv6ra.

Ezt megtaláltam, sőt: ha megnézed a fenti doksit ennél már mélyebben járok.

Amit szeretnék, hogy az egyik container-ben lakó nginx-nek legyen fix IPv6 címe (és működjön az AAAA rekorddal), így a webalkalmazásnak is. A host és a többi container egyáltalán nem érdekel. Ahogy nézem egyébként ez azt is jelenti, hogy mindenkinek (host és container-ek is) van IPv6 címe (de ez nem zavar).

Az IPv6 egyébként be van kapcsolva, de a szűk mask (/124) miatt kb. használhatatlan a DO-s gépen, ma kipróbálom máshol is, ahol van /64-es mask, hátha ott működik OoO (pontosabban ahogy a doksi írja).
--
https://naszta.hu

Miért nem csinálod azt hogy a nginx nem konténerben fut , hanem natívan a gépen és onnan redirecteled a forgalmat a megfelelő portokra ? vagy ez nem egy járható út ? így nem kellene bajlódni az ipv6 cím beállításával a konténerben vagy ha estleg ha LB szolgáltatást is igénybe veszel ott beállítani ugyan ezt és akkor mehetne a nginx konténerben .

En nagyon hulye vagyok es nem ertem. Minek ide ipv6 NAT meg ilyenek?
Exposolod a container portjat a hostra es voila maris latod a host fix IPcimen. Amugy a containerednek minek akarsz fix ip-t adni? Ha elhal es ujraindul majd kap valamit a pool-bol a docker networkrol kit erdekel mit. A lenyeg, hogy az exposolt port akkor is ugyanazon a host ipv6 cimen lesz.

Olyan forditva ulunk a lovon erzesem van.

IPv4 úgy működik, ahogy írod. Az IPv6 másképp működik. Ha megmutatod, hogy hogyan lehet megcsinálni ezt IPv6-tal és docker-rel, nekem nagy könnyebbség lenne így csinálni.

Az expose szépen működik IPv4-en és nem így működik IPv6-on.

Amugy a containerednek minek akarsz fix ip-t adni?

Ezért: a container-nek van IPv6 címe (ezen éred el pl. az exposed portot), a host csak egy gateway IPv6 esetében.
--
https://naszta.hu

Ugy emlekszem volt valami gebasz a compose verzioival, hogy nem jol parse-olta az "expose"-t, mert ipv6 eseten kicsit tobb a pont, mint az ipv4-nel. :D
De mar tenyleg nem emlekszem. De amugy siman meg lehet adni ipv6-os ipt benne ugyanugy, mint az ipv4 eseteben. Mondjuk ha jol parse-olja :d