Donc, j'utilise AWS avec EC2 et j'essaie d'ouvrir un port pour Postgresql. Je l'ai déjà ouvert dans AWS:
TCP
Port (Service) Source Action
0 - 65535 sg-92aadda2 (default) Delete
22 (SSH) 0.0.0.0/0 Delete
80 (HTTP) 0.0.0.0/0 Delete
5432 0.0.0.0/0 Delete
Lorsque je fais netstat, il semble que le port écoute:
# netstat -an | grep 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
Lorsque je fais un nmap localhost, je reçois ce qui suit:
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
5432/tcp open postgresql
Et voici où commence le plaisir. Quand je fais un nmap à partir d'un hôte alternatif, j'obtiens ce qui suit:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
5432/tcp closed postgresql
J'ai aussi regardé mes iptables pour voir s'il me manquait quelque chose, mais les iptables ont l'air vides (ce qui devrait signifier qu'ils ne font pas vraiment beaucoup)
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere 127.0.0.0/8 reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:postgresql
ACCEPT icmp -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Est-ce que je manque quelque chose parce que je n'arrive pas à comprendre comment accéder à l'ip. Chaque fois que j'essaye, j'obtiens l'erreur suivante:
Is the server running on Host "xx.xx.xx.xx" and accepting TCP/IP connections on port 5432?
Comment faire pour que je puisse ouvrir le port afin que les serveurs externes y aient accès? Merci d'avance =) Laisse-moi savoir si tu as besoin de données supplémentaires.
EDIT: Comme demandé ci-dessous, j'ai testé le telnet, et j'ai pu établir une connexion telnet avec l'hôte local, mais lorsque j'essaie de l'extérieur, je reçois:
$ telnet xx.xx.xx.xx 5432
Trying xx.xx.xx.xx...
telnet: Unable to connect to remote Host: Connection refused
De plus, j’ai vérifié deux fois et j’ai pu correctement utiliser telnet en ssh:
$ telnet xx.xx.xx.xx 22
Trying xx.xx.xx.xx...
Connected to xx.xx.xx.xx.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
Éditez /etc/postgresql/<version>/main/postgresql.conf
et réglez le listen_addresses
sur votre interface sortante ou sur toutes. Redémarrez postgresql: Sudo service postgresql restart
.
Cela fonctionne pour moi la dernière méthode (thks Julio):
Modifier: postgresql.conf
Sudo nano /etc/postgresql/9.3/main/postgresql.conf
Activer ou ajouter:
listen_addresses = '*'
Redémarrez le moteur de base de données:
Sudo service postgresql restart
En outre, vous pouvez vérifier le fichier: pg_hba.conf
Sudo nano /etc/postgresql/9.3/main/pg_hba.conf
Et ajoutez votre adresse réseau ou hôte:
Host all all 192.168.1.0/24 md5
Si vous avez édité postgresql.conf et main/pg_hba.conf et que vous rencontrez toujours un problème, veuillez essayer Vous pouvez également autoriser 5432/tcp à débloquer le port psql