Είμαι νέος με το docker, προς το παρόν θέλω να ρυθμίσω το docker σε vps ακολουθώντας αυτόν τον οδηγό [https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/ ](https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/) οπότε το σχέδιο εγκατάστασης μου θα είναι ως εξής: vps ubuntu 22.04, wireguard για vpn, ufw για τείχος προστασίας: nginx proxy manager (NPM) για χειρισμό του πιστοποιητικού http, https, ssl (εκτεθειμένη θύρα 81) portainer για διαχείριση docker (εκτεθειμένη θύρα 9443) ghost, το άλλο κοντέινερ μου θα χρησιμοποιήσει το δίκτυο docker και θα μιλήσει απευθείας με τον διαχειριστή μεσολάβησης nginx, όπως φροντιστήριο και αντιστοίχιση στον υποτομέα ανάλογα. Δεν μου αρέσει να εκθέτω τη θύρα 81, 9443 στο κοινό, γι'αυτό θέτω τον κανόνα ufw και επιτρέπω μόνο τοπική ip vpn που μπορεί να συνδεθεί σε αυτήν τη θύρα. Το πρόβλημά μου είναι ότι το docker container φαίνεται να αγνοεί τον κανόνα ufw και να κάνει τη θύρα ακόμα προσβάσιμη με δημόσια ip. Δοκίμασα [https://github.com/chaifeng/ufw-docker](https://github.com/chaifeng/ufw-docker) και διόρθωσα το πρόβλημα του portainer και του NPM.. αλλά το ghost και το άλλο κοντέινερ απέτυχαν για να συνδεθείτε με τον διαχειριστή μεσολάβησης nginx εάν με κάποιο τρόπο το πλαίσιο επανεκκινήσει ή το κοντέινερ επανεκκινηθεί. Η δουλειά μου αυτή τη στιγμή είναι εκτεθειμένο ghost, άλλο κοντέινερ στη θύρα κεντρικού υπολογιστή και στη συνέχεια αντιστοιχίστε το στο NPM με διεύθυνση IP. Λειτουργεί, αλλά αισθάνεται λάθος γιατί καθώς αυξάνεται ο αριθμός των εμπορευματοκιβωτίων, οι ανάγκες για λιμάνι θα αυξάνονται επίσης. Ποια είναι η καθαρή λύση για αυτό; ευχαριστώ Το Docker εισάγει τον πρώτο του κανόνα αρκετά νωρίς στα iptables, στο nat PREROUTING. Μπορείτε να δείτε τους κανόνες με: iptables -t nat -S Το ufw βάζει συχνά κανόνες στο INPUT, το οποίο είναι και μετά το PREROUTING και το FORWARD! Υπάρχουν δύο μέρη στο PREROUTING που είναι πριν το nat όμως! ακατέργαστο και μαγκάλι. Το Mangle μπορεί να κάνει τα περισσότερα πράγματα που μπορεί να κάνει το INPUT ούτως ή άλλως, έτσι θα μπορούσατε να κρατήσετε τα πακέτα που εισέρχονται στη δημόσια διασύνδεση από το να φτάσουν καθόλου στο δίκτυο του nat, πόσο μάλλον στο docker, δημιουργώντας κανόνες για τη διεπαφή pub, όπως: iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 9443 -j ACCEPT iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 81 -j ACCEPT # Για να μην κλειδώνεστε έξω από το ssh: iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 22 -j ACCEPT Στη συνέχεια, αφήστε το υπόλοιπο tcp αφού το αποδεχτείτε στη διεπαφή της παμπ (μην ξεχνάτε το udp): iptables -t mangle -A PREROUTING -i eth0 -p tcp -j DROP Για αναφορά, όπως με τους οδηγούς, ένας ισοδύναμος κανόνας για το INPUT θα μοιάζει με: iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT Υποθέτοντας ότι το όνομα της δημόσιας διεπαφής σας είναι eth0 φυσικά. Αλλάξτε το στους κανόνες εάν χρειάζεται :) Η εναλλακτική είναι αυτή που πρότεινε η hypgn0sis χρησιμοποιώντας την αλυσίδα DOCKER-USER. Ωστόσο, αυτό θα είναι λιγότερο αποτελεσματικό και τα πακέτα εξακολουθούν να φτάνουν στο δίκτυο (συμπεριλαμβανομένης της αποδοχής FORWARD). Επίσης, το ufw και το τείχος προστασίας θα παρεμβαίνουν στους κανόνες iptables σας, εκτός εάν τα απενεργοποιήσετε ή τα απεγκαταστήσετε.