Jag är ny med docker, vill för närvarande ställa in docker på vps genom att följa denna handledning [https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/ ](https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/) så min installationsplan kommer att se ut så här: vps ubuntu 22.04, wireguard för vpn, ufw för brandvägg: nginx proxy manager (NPM) för att hantera http, https, ssl-certifikat (exponerad port 81) porthållare för hamnarbetare (exponerad port 9443) spöke, kommer min andra behållare att använda docker-nätverk och prata direkt med nginx proxy-hanterare som handledning och kartläggning till underdomän i enlighet därmed. Jag gillar inte att exponera port 81, 9443 för offentlig så jag gör en ufw-regel och tillåts endast lokal vpn-ip som kan ansluta till den porten. mitt problem är docker container verkar ignorera ufw regeln och göra porten fortfarande tillgänglig med offentlig ip. Jag har försökt [https://github.com/chaifeng/ufw-docker](https://github.com/chaifeng/ufw-docker) och det fixade problem med porttainer och NPM.. men ghost, och min andra behållare misslyckades för att ansluta till nginx proxy manager om rutan på något sätt startas om eller behållaren startas om. mitt arbete just nu är exponerat spöke, annan behållare till värdport och sedan mappa den till NPM med ip-adress. det fungerar men känns fel eftersom antalet containrar ökar kommer behovet av hamn också att öka. Vad är den rena lösningen för detta? tack Docker infogar sin första regel ganska tidigt i iptables, vid nat PREROUTING. Du kan se reglerna med: iptables -t nat -S ufw sätter ofta regler i INPUT som är efter både PREROUTING och FORWARD! Det finns dock två platser i PREROUTING som ligger före nat! rå och mangla. Mangle kan göra det mesta som INPUT kan göra hur som helst, så du kan förhindra att paket som kommer in till det offentliga gränssnittet når nat, än mindre dockares nätverk överhuvudtaget genom att skapa regler för pubgränssnittet som: iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 9443 -j ACCEPTERA iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 81 -j ACCEPTERA # Så du låser dig inte utanför ssh: iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 22 -j ACCEPTERA Släpp sedan resten av tcp efter att du har accepterat på pubens gränssnitt (glöm inte udp): iptables -t mangle -A PREROUTING -i eth0 -p tcp -j DROP För referens som med guider skulle en motsvarande regel för INPUT se ut så här: iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPTERA förutsatt att ditt offentliga gränssnittsnamn är eth0 förstås. Ändra det i reglerna om det behövs :) Alternativet är vad hypgn0sis föreslog genom att använda DOCKER-USER-kedjan. Men det kommer att vara mindre effektivt och paket når fortfarande nätverket (inklusive FORWARD accepterar). Även ufw och firewalld kommer att störa dina iptables-regler om du inte inaktiverar eller avinstallerar dem.