Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
serveurs:installation:parefeu [2023/08/02 13:39] – [Installer et configurer Firewalld] jpmilcent | serveurs:installation:parefeu [2025/05/14 13:21] (Version actuelle) – [Zone "docker"] jpmilcent |
---|
# firewall-cmd --zone=docker --permanent --change-interface=docker0 | # firewall-cmd --zone=docker --permanent --change-interface=docker0 |
firewall-cmd --zone=docker --permanent --add-source=172.18.5.0/24 | firewall-cmd --zone=docker --permanent --add-source=172.18.5.0/24 |
# Permettre l'accès aux sites web public depuis un container (voir si la règle ci-dessous fonctionne dans le temps) | # Permettre l'accès aux sites web public depuis un container (en entrée et sortie). Ici valable uniquement pour le réseau "nginx-proxy" qui est fixe. Nécessite d'ajouter des entrées pour chaque réseau d'IP => peut être plus simple d'ouvrir les services "http,https" sur toute la zone. |
firewall-cmd --zone=docker --permanent --add-rich-rule='rule family=ipv4 source address=172.18.5.0/24 accept' | firewall-cmd --zone=docker --permanent --add-rich-rule='rule family=ipv4 source address=172.18.5.0/24 accept' |
| # Donner l'accès au web en entré et sortie sur toute la zone Docker (utile si les containers ne sont pas tous dans le réseau "nginx-proxy") |
| # firewall-cmd --zone=docker --permanent --add-service={http,https} |
# Il est peut être nécessaire d'ajouter la règle suivante sur la zone "docker" en plus/à la place de celle existant sur "public". | # Il est peut être nécessaire d'ajouter la règle suivante sur la zone "docker" en plus/à la place de celle existant sur "public". |
firewall-cmd --zone=docker --permanent --add-masquerade | firewall-cmd --zone=docker --permanent --add-masquerade |
| |
===== Problème : "psql: error: could not connect to server: Connection refused" ===== | ===== Problème : "psql: error: could not connect to server: Connection refused" ===== |
* **Contexte** : Depuis le container Borgmatic de l'instance //db-srv//, il est impossible d'accéder à Postgresql. La commande suivante ''<nowiki> psql -h 172.18.0.1 -p 5432 -U postgres --no-password </nowiki>'' génère l'erreur :<code> | * **Contexte** : Depuis le container Borgmatic de l'instance //db-srv//, il est impossible d'accéder à Postgresql. La commande suivante ''<nowiki> psql -h 172.18.5.1 -p 5432 -U postgres --no-password </nowiki>'' génère l'erreur :<code> |
psql: error: could not connect to server: Connection refused | psql: error: could not connect to server: Connection refused |
Is the server running on host "172.18.5.1" and accepting | Is the server running on host "172.18.5.1" and accepting |
TCP/IP connections on port 5432? | TCP/IP connections on port 5432? |
</code> | </code> |
* **Solution** : sur l'hôte, afficher les IPs sur lesquelles Postgresql écoute avec la commande ''ss -lntu'' et vérifier qu'il y ait bien une ligne : <code> | * **Solution #1 :** sur l'hôte, afficher les IPs sur lesquelles Postgresql écoute avec la commande ''ss -lntu'' et vérifier qu'il y ait bien une ligne : <code> |
tcp LISTEN 0 128 172.18.0.1:5432 0.0.0.0:* | tcp LISTEN 0 128 172.18.0.1:5432 0.0.0.0:* |
</code> Il faut Postgresql (port 5432) écoute sur l'IP de la gateway du bridge de Docker (ici 172.18.0.1). Si cette ligne est absente, redémarrer Postgresql ''systemctl restart postgresql''. Elle devrait apparaitre. Si pour une raison ou une autre le service Docker n'est pas démarré au moment du démarrage de Postgresql (ordre du démarrage des services par la machine lors de son lancement), Postgresql n'écoutera pas sur l'IP 172.18.0.1 car non existante... | </code> Il faut Postgresql (port 5432) écoute sur l'IP de la gateway du bridge de Docker (ici 172.18.0.1). Si cette ligne est absente, redémarrer Postgresql ''systemctl restart postgresql''. Elle devrait apparaitre. Si pour une raison ou une autre le service Docker n'est pas démarré au moment du démarrage de Postgresql (ordre du démarrage des services par la machine lors de son lancement), Postgresql n'écoutera pas sur l'IP 172.18.0.1 car non existante... |
| * **Solution #2 :** vérifier également via (Portainer) que le réseau nginx-proxy a bine un gateway définie à 172.18.5.1. Il faut également que les containers Dockers dans le réseau 172.18.x.x n'occupent pas les IP 172.18.5.1 et 172.18.5.0. Si le réseau est mal configuré, il faut le supprimer et le recréer correctement (voir section //Zone "docker"//). |
===== Problème : aucun accès à internet depuis le container ===== | ===== Problème : aucun accès à internet depuis le container ===== |
* ** Erreur** : <code> | * ** Erreur** : <code> |