É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!
- 1239 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
Megtaláltam
https://docs.docker.com/config/daemon/ipv6/
Bár kérdés, hogy miért akarsz dockeren belül(!!) Ipv6-os használni, hiszen direktben úgysem éred el, csak a host-on keresztül.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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 .
- A hozzászóláshoz be kell jelentkezni
Azért, mert jelenlegi formájában a teljes projekt egy docker-compose-zal hordozható, nem függök az alatta lévő distro-tól, szép kerek egész.
--
https://naszta.hu
- A hozzászóláshoz be kell jelentkezni
Akkor elé egy LB és átírányítani a kiexposeolt nginx portra a forgalmat .
- A hozzászóláshoz be kell jelentkezni
Azt reméltem ennél, van szebb megoldás.
--
https://naszta.hu
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
ezt talaltam: http://collabnix.com/enabling-ipv6-functionality-for-docker-and-docker-…
nem biztos hogy ez jo neked, de egy probat meger
- A hozzászóláshoz be kell jelentkezni
Megnézem, köszönöm! (Ezzel is volt valami bajom, de már nem emlékszem mi, este megírom.)
Update: este végül nem nyúltam hozzá: majd ma.
--
https://naszta.hu
- A hozzászóláshoz be kell jelentkezni
Annyit segített, hogy a példák mennek és kiderült, hogy a docker inspect mutatja az IPv6-ot, a docker-compose-t kell ezek szerint rendbe tenni, hogy legyen címe a container-eknek abban is.
--
https://naszta.hu
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Úgy tűnik a 20 éves IPv6 és az új docker build nem barátok: nyitott ticket és egy lezárt.
--
https://naszta.hu
- A hozzászóláshoz be kell jelentkezni
es ha a host elhal, akkor nincs ipv6 cimed, hiaba tudod felloni a cuccot egy masik node-on...
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni