Soy nuevo con docker, actualmente quiero configurar docker en vps siguiendo este tutorial [https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/ ](https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/) por lo que mi plan de instalación será así: vps ubuntu 22.04, wireguard para vpn, ufw para cortafuegos: administrador de proxy nginx (NPM) para manejar http, https, certificado ssl (puerto expuesto 81) Portainer para gestión de acopladores (puerto expuesto 9443) fantasma, mi otro contenedor usará la red docker y hablará directamente con el administrador de proxy nginx como un tutorial y la asignación al subdominio en consecuencia. No me gusta exponer el puerto 81, 9443 al público, así que hago la regla ufw y permito solo la ip vpn local que puede conectarse a ese puerto. mi problema es que el contenedor docker parece ignorar la regla ufw y hacer que el puerto siga siendo accesible con una IP pública. Probé [https://github.com/chaifeng/ufw-docker](https://github.com/chaifeng/ufw-docker) y solucionó el problema de portainer y NPM... pero fantasma, y ​​mi otro contenedor falló para conectarse con el administrador de proxy nginx si de alguna manera el cuadro se reinicia o el contenedor se reinicia. mi trabajo en este momento es un fantasma expuesto, otro contenedor para alojar el puerto y luego asignarlo a NPM por dirección IP. funciona pero se siente mal porque a medida que crece la cantidad de contenedores, también aumentarán las necesidades de puerto. ¿Cuál es la solución limpia para esto? Gracias Docker inserta su primera regla bastante temprano en iptables, en nat PREROUTING. Puedes ver las reglas con: iptables -t nat -S ¡ufw a menudo pone reglas en INPUT que está después de PREROUTING y FORWARD! ¡Sin embargo, hay dos lugares en PREROUTING que están antes de nat! crudo y destrozado. Mangle puede hacer la mayoría de las cosas que INPUT puede hacer de todos modos, por lo que podría evitar que los paquetes entrantes a la interfaz pública lleguen a la red de nat y mucho menos a la ventana acoplable al establecer reglas para la interfaz de publicación como: iptables -t mangle -A ENRUTAMIENTO PREVIO -i eth0 -p tcp --dport 9443 -j ACEPTAR iptables -t mangle -A ENRUTAMIENTO PREVIO -i eth0 -p tcp --dport 81 -j ACEPTAR # Para que no te quedes fuera de ssh: iptables -t mangle -A ENRUTAMIENTO PREVIO -i eth0 -p tcp --dport 22 -j ACEPTAR Luego suelte el resto de tcp después de aceptarlo en la interfaz de pub (no olvide udp): iptables -t mangle -A PREROUTING -i eth0 -p tcp -j DROP Como referencia, como con las guías, una regla equivalente para INPUT se vería así: iptables -A ENTRADA -i eth0 -p tcp --dport 22 -j ACEPTAR suponiendo que el nombre de su interfaz pública sea eth0, por supuesto. Cámbialo en las reglas si es necesario :) La alternativa es lo que sugirió hypgn0sis usando la cadena DOCKER-USER. Sin embargo, eso será menos eficiente y los paquetes seguirán llegando a la red (incluidas las aceptaciones FORWARD). Además, ufw y firewalld interferirán con las reglas de iptables a menos que los deshabilite o desinstale.