Je suis nouveau avec docker, je souhaite actuellement configurer docker sur vps en suivant ce tutoriel [https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/ ](https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/) donc mon plan d'installation ressemblera à ceci : vps ubuntu 22.04, wireguard pour vpn, ufw pour pare-feu : nginx proxy manager (NPM) pour gérer les certificats http, https, ssl (port 81 exposé) portainer pour la gestion des dockers (port exposé 9443) ghost, mon autre conteneur utilisera le réseau docker et parlera directement avec le gestionnaire de proxy nginx comme un tutoriel et le mappage au sous-domaine en conséquence. Je n'aime pas exposer le port 81, 9443 au public, donc je fais une règle ufw et n'autorise que l'ip vpn local qui peut se connecter à ce port. mon problème est que le conteneur docker semble ignorer la règle ufw et rendre le port toujours accessible avec une adresse IP publique. J'ai essayé [https://github.com/chaifeng/ufw-docker](https://github.com/chaifeng/ufw-docker) et cela résout le problème de portainer et de NPM .. mais ghost, et mon autre conteneur a échoué pour se connecter avec le gestionnaire de proxy nginx si d'une manière ou d'une autre la boîte a redémarré ou le conteneur a redémarré. mon travail en ce moment est un fantôme exposé, un autre conteneur pour héberger le port, puis le mapper à NPM par adresse IP. cela fonctionne mais semble mal car à mesure que le nombre de conteneurs augmente, les besoins en port augmenteront également. Quelle est la solution propre pour cela? Merci Docker insère sa première règle assez tôt dans iptables, à nat PREROUTING. Vous pouvez consulter les règles avec : iptables -t nat -S ufw met souvent des règles dans INPUT qui se trouve après PREROUTING et FORWARD ! Il y a deux endroits dans PREROUTING qui sont avant nat cependant ! brut et mutilé. Mangle peut faire la plupart des choses que INPUT peut faire de toute façon, vous pouvez donc empêcher les paquets entrants sur l'interface publique d'atteindre nat et encore moins le réseau de docker en créant des règles pour l'interface pub telles que: iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 9443 -j ACCEPTER iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 81 -j ACCEPTER # Ainsi, vous ne vous verrouillez pas hors de ssh : iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 22 -j ACCEPTER Déposez ensuite le reste de tcp après votre acceptation sur l'interface pub (n'oubliez pas udp): iptables -t mangle -A PREROUTING -i eth0 -p tcp -j DROP Pour référence, comme avec les guides, une règle équivalente pour INPUT ressemblerait à : iptables -A ENTRÉE -i eth0 -p tcp --dport 22 -j ACCEPTER en supposant que le nom de votre interface publique est eth0 bien sûr. Changez-le dans les règles si besoin :) L'alternative est ce que hypgn0sis a suggéré en utilisant la chaîne DOCKER-USER. Cependant, cela sera moins efficace et les paquets atteindront toujours le réseau (y compris les acceptations FORWARD). De plus, ufw et firewalld interféreront avec vos règles iptables à moins que vous ne les désactiviez ou ne les désinstalliez.