PostgreSQL : connexion TCP impossible depuis l'extérieur

Bonjour,

Je cherche à me connecter sans succès à un base de donnée SQL (postgre) hébergée sur une Debian. La connexion à la base fonctionne en local mais pas depuis un autre poste.

Connexion ok le poste Debian répond bien au ping.

J’ai fait un test de connexion TCP avec netcat et ça ne fonctionne pas non plus, en revanche la connexion vers une autre machine du réseau fonctionne. Ce qui me fait penser que Debian n’accepte pas les connexions entrantes.

Je n’ai pas fait de règles de iptables pour l’instant. Je viens de lire sur un site que par défaut Debian laissait passer tout, pouvez-vous me confirmer ceci ?
Pensant que cela venait du parefeu j’ai essayé de créer une règles pour accepter les connexions sur un port et essayer ensuite une connexion en netcat mais ça n’a rien donné. Je ne suis pas spécialiste de iptables donc j’ai pu me tromper dans la commande :

Merci pour votre aide

Que renvoie cette commande (en root) ?

tcp 0 0 0.0.0.0:55535 0.0.0.0:* LISTEN 985/rpc.statd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 973/portmap tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1400/cupsd tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1607/postgres tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1954/exim4 tcp 0 0 0.0.0.0:43902 0.0.0.0:* LISTEN 3534/netcat tcp6 0 0 ::1:631 :::* LISTEN 1400/cupsd tcp6 0 0 ::1:25 :::* LISTEN 1954/exim4

D’après ce que on peut lire netcat écoute sur 43902 mais ce n’est pourtant pas ce port que j’ai spécifié dans ma commande…

Et Postgre n’écoute que sur l’adresse de rebouclage…

Comment faire en sorte que postgre accepte les connexions externes ?

C’était précisément pour vérifier ça que je t’ai demandé le netstat… :wink:

Malheureusement je ne connais pas vraiment PostgreSQL, va falloir fouiller un peu par toi-même. La plupart des daemons de ce genre ont une option à mettre dans leur fichier de configuration genre “listen-address” / “bind-address” etc. À toi de trouver l’option exacte et sa syntaxe, à moins que quelqu’un familier avec PostgreSQL passe ici avant (mais je pense que ça ira plus vite si tu cherches dans la doc).
Si tu trouves en premier n’hésite pas à poster la réponse ici-même, ça pourrait resservir à d’autres…

PS: je me suis permis de mettre un titre un peu plus précis pour le sujet, pour essayer d’attirer plus de monde. :slightly_smiling:

Pour répondre à la question sur iptables, par défaut, il accepte tout :

si tu tapes “iptables -L”, sans avoir appliqué aucune règle, tu devrais obtenir ceci :

root@debian : iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Oui merci pour ton aide…

Ce qui m’étonnait c’est de ne pas avoir de connexion depuis netcat.
En fait ça vient d’une erreur dans mes options la version debian de netcat rend obligatoire l’option -p pour spécifier le port. Certaine distribution accepte netcat -l 8965 Sur Debian comme sur BSD il faut netcat -l -p 8965 voilà pourquoi ça ne marchait pas. Le problème vient bien de la configuration de postgre c’est ce qui m’a amené a faire ces tests (voir si c’était un problème de parefeu ou de postgre).

Je crois me souvenir du fichier conf en question je vais voir ça.

Oui c’est ce qu’il me semblait…

Encore merci

L’option pour écouter à l’extérieur, c’est « listen_adresses » dans postgresql.conf.

Il faut aussi autoriser les comptes qui doivent se connecter de l’extérieur dans pg_hba.conf : docs.postgresql.fr/9.1/client-au … g-hba-conf

Merci !

Je suis sur la version 8.4 par contre je vais regarder.

Ma remarque est totalement HS, mais perso je préfère iptables -S : -L renvoie des infos assez incomplètes je trouve, tandis que -S renvoie (presque) les mêmes règles que celles que tu lui donnes en entrée, ce qui facilite beaucoup la compréhension. :wink:

Tout fonctionne à présent merci à vous tous