<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Bonjour,<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">Le 23 oct. 2022 à 15:11, Laurent GUERBY via technique <<a href="mailto:technique@lists.tetaneutral.net" class="">technique@lists.tetaneutral.net</a>> a écrit :</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On Sun, 2022-10-23 at 14:36 +0200, manu chez Z via technique wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Le 23/10/2022 à 13:56, Albert ARIBAUD a écrit :<br class=""><blockquote type="cite" class="">Bonjour,<br class=""><br class="">Le dimanche 23 octobre 2022 à 12:37 +0200, manu chez Z via<br class="">technique a<br class="">écrit :<br class=""><blockquote type="cite" class="">Bonjour<br class="">Nous (le pic) utilisons une architecture à base de conteneurs<br class="">docker,<br class="">avec un reverse-proxy connecté aux ports 80 et 443, qui renvoie<br class="">les<br class="">requêtes sur divers conteneurs en fonction du virtual host<br class="">demandé.<br class="">Il y a un gros problème avec cette architecture, car les logs du<br class="">proxy (et donc aussi les logs des conteneurs qui sont derrière)<br class="">contiennent l'adresse IP source lorsqu'il s'agit d'une requête<br class="">IPv4,<br class="">mais l'adresse IPv4 du gateway lorsqu'il s'agit de requêtes IPv6<br class="">!<br class="">Donc nous n'avons pas connaissance de l'adresse IPv6 utilisée. Un<br class="">exemple avec le cloud du pic, qui repose sur le travail<br class="">d'oxytanet<br class="">(mais c'est la même chose avec nos autres services):<br class="">web_1 | 2022-10-23T10:21:06.535228752Z 172.18.0.2 - -<br class="">[23/Oct/2022:10:21:06 +0000] "GET /s/xxxxxxxxxxxx HTTP/1.1" 200<br class="">7447<br class="">"-" "curl/7.74.0" "172.18.0.1"<br class="">C'est très ennuyeux, ne serait-ce que pour des raisons légales.<br class="">Et<br class="">c'est de plus en plus ennuyeux, car il y a de plus en plus de<br class="">requêtes IPv6.<br class="">J'ai cherché tous les tutos du monde qui parlent de ça, mais je<br class="">n'ai<br class="">pas réussi à m'en sortir, même sur une machine de tests<br class="">rebootable à<br class="">l'envie. Est-ce que quelqu'un a déjà fait ça ?<br class="">Merci de votre aide !<br class=""></blockquote><br class="">J'ai eu le problème avec NGINX en reverse proxy d'une autre<br class="">machine,<br class="">mais je pense que c'est la même chose qu'avec des containers.<br class=""><br class="">Ma solution s'est appuyée sur les options<br class=""><br class="">     proxy_pass <URI du serveur>;<br class="">     proxy_set_header Host $host;<br class="">     proxy_set_header X-Forwarded-For $remote_addr;<br class=""><br class="">où "proxy_pass <URI du serveur>" est la directive qui réalise le<br class="">reverse proxy, et les deux "proxy_set_header" sont ce qui permet au<br class="">serveur final de savoir quelle était l'adresse du vrai client.<br class=""><br class="">Comme tu ne précises pas de détails sur ton reverse proxy, ce qui<br class="">précède ne s'applique peut-être pas à ton cas, mais tu dois trouver<br class="">l'équivalent chez Apache et autres.<br class=""><br class=""></blockquote><br class="">Bonjour<br class=""><br class="">Merci de ta réponse, mais il ne s'agit pas d'un problème de <br class="">configuration du proxy: on voit dans les logs les adresses IPv4, pas<br class="">les <br class="">adresses IPv6. Si c'était un problème de proxy il se produirait de<br class="">la <br class="">même manière pour les deux stacks.  Et par ailleurs nous avons le<br class="">même <br class="">problème sur une machine qui héberge des sites web, où le reverse<br class="">proxy <br class="">est un nginx (<a href="https://hub.docker.com/r/jwilder/nginx-proxy" class="">https://hub.docker.com/r/jwilder/nginx-proxy</a>) et sur<br class="">la <br class="">machine qui héberge le cloud, là il s'agit de l'infra oxytanet à base<br class="">de <br class="">traefik (cf. <a href="https://framagit.org/oxyta.net/docker-atelier" class="">https://framagit.org/oxyta.net/docker-atelier</a>).<br class=""><br class="">Il y a les directives dont tu parles dans la conf du proxy nginx mais<br class="">le <br class="">problème est en amont du proxy: Docker transforme les requêtes IPv6<br class="">en <br class="">IPv4, et au passage on perd l'information de l'adresse IPv6. J'ai <br class="">évidemment essayé de jouer avec les options de configuration d'IPv6<br class="">dans <br class="">Docker, mais c'est là que je me suis perdu....<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">En regardant les fichiers docker d'oxyta :</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="https://framagit.org/oxyta.net/proxyta.net/-/blob/master/prod-le/docker" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://framagit.org/oxyta.net/proxyta.net/-/blob/master/prod-le/docker</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">-compose.yml</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On voit :</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">ipv6nat:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">    image: robbertkl/ipv6nat</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Sur la page github de ipv6nat :</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="https://github.com/robbertkl/docker-ipv6nat#why-would-i-need-this" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://github.com/robbertkl/docker-ipv6nat#why-would-i-need-this</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On trouve pas mal d'information sur pourquoi docker et ipv6 c'est ...</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">compliqué. (Et rien vu sur les logs dans ipv6nat).</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote></div><br class=""><div class="">Le seul argument entendable (et vaguement évoqué dans le thread) étant que certains hébergeurs ne fournissent qu’un /128 (donc 1 IPv6) et non un /64, auquel cas tu es obligé de faire du NAT (stateful) comme en IPv4. Dans tous les autres cas il y a de meilleures solutions que le NAT. Ils voulaient juste un truc qui marchait comme en IPv4…</div><div class=""><br class=""></div><div class="">Concernant le problème initial, tu peux toujours déployer ton propre reverse proxy configuré comme il faut (avec un nginx bien entendu !).</div><div class=""><br class=""></div><div class="">Manu</div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>