Comment acceder aux ports sur lhote a partir dun conteneur 1

Comment accéder aux ports sur l’hôte à partir d’un conteneur Docker

Logo Docker

Si vous vous connectez au monde extérieur, Docker se comporte comme si la demande provenait de la machine hôte. Mais si vous souhaitez accéder aux processus en cours d’exécution sur l’hôte, votre pare-feu peut nécessiter une configuration supplémentaire.

La solution : ajouter une règle de pare-feu pour 172.18.0.0/16

Si vous venez d’essayer d’accéder à un processus s’exécutant sur la machine hôte comme un service HTTP, vous avez peut-être été bloqué. En effet, même si les conteneurs Docker s’exécutent sur l’hôte, ils utilisent un réseau spécial sous le capot pour les garder logiquement séparés, et à cause de cela, ils ont des adresses IP différentes.

Vous pouvez le voir lors de l’exécution ifconfig, vous verrez votre interface réseau standard, mais aussi le docker0 interface. Par défaut, Docker utilise le bloc 172.18.0.0/16 pour allouer des adresses IP de conteneur.

L'interface docker0

Le correctif est très simple : ouvrez cette plage de ports dans votre pare-feu. Les demandes de la plage d’adresses IP utilisées par Docker sont probablement bloquées. Il s’agit d’une plage d’adresses IP privée, il y a donc un risque minime à l’ouvrir. Pour UFW, ce serait :

sudo ufw allow from 172.18.0.0/24

En spécifiant éventuellement un port à ouvrir :

sudo ufw allow from 172.18.0.0/24 to any port 9200

Pour iptables, ce serait:

iptables --append INPUT --protocol tcp --src 172.18.0.0/24 --jump DROP

Pour les services d’hébergement gérés comme AWS, vous n’aurez peut-être pas besoin de modifier quoi que ce soit : les groupes de sécurité sont des pare-feu de réseau qui se trouvent devant les instances et ne devraient pas affecter le trafic interne.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *