impossible de se connecter à l'instance publique postgresql rds

23

J'ai créé une instance de test de base PostgreSQL RDS dans un VPC qui a un seul sous-réseau public et qui devrait être disponible pour se connecter via Internet public. Il utilise le groupe de sécurité par défaut, qui est ouvert pour le port 5432. Lorsque j'essaie de me connecter, il échoue. Je dois manquer quelque chose de très simple - mais je suis assez perdu à ce sujet.

Voici les paramètres de la base de données, notez qu'il est marqué comme Publicly Accessible: Paramètres RDS

Voici les paramètres du groupe de sécurité, notez qu'il est grand ouvert (confirmé dans les paramètres RDS ci-dessus par le conseil vert "autorisé" à côté du point de terminaison): Paramètres du groupe de sécurité

Voici la commande que j'essaie d'utiliser pour me connecter:

psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \
     --port=5432 
     --username=masteruser 
     --password 
     --dbname=testdb

Et voici le résultat que j'obtiens en essayant de me connecter à partir d'un MacBook Pro de Yosemite (notez qu'il se résout en une adresse IP 54. *):

psql: could not connect to server: Operation timed out
    Is the server running on host "myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com" (54.xxx.xxx.xxx) and accepting
    TCP/IP connections on port 5432?

Je n'ai aucun type de pare-feu activé et je peux me connecter aux instances publiques de PostgreSQL sur d'autres fournisseurs (par exemple Heroku).

Tout conseil de dépannage serait très apprécié, car je suis à peu près perdu ici.

Mise à jour

Par commentaire, voici les règles ACL entrantes pour le VPC par défaut: Configuration ACL réseau

Edward Q. Bridges
la source
1
Vous est-il arrivé de jouer avec les NetworkACL? J'y chercherais un paramètre possible qui pourrait bloquer l'accès à Internet.
Optichip
Merci pour la réponse! Les listes de contrôle d'accès semblent ne rien bloquer, car la première règle consiste à autoriser tous les ports de toutes les sources, par attaché.
Edward Q.Bridges du

Réponses:

27

Le problème était que la règle entrante dans le groupe de sécurité spécifiait un groupe de sécurité comme source. Le changer en un CIDR qui comprenait mon adresse IP a résolu le problème.

Edward Q. Bridges
la source
6
Pour tous ceux qui ne savent pas comment fonctionne le CIDR; si votre adresse IP est 91.61.76.202 (pouvez trouver la vôtre en utilisant myipaddress.com ), définissez votre source comme 91.61.76.202/32
Tom G
Seriez-vous prêt à prendre une capture d'écran de ce à quoi ressemble cette solution?
smaccoun
J'en serais ravi, mais je n'ai plus cette instance en ligne.
Edward
11

J'étais confronté à un problème similaire, et voici comment je l'ai résolu:

Cliquez sur le groupe de sécurité pour l'instance RDS et vérifiez les règles entrantes. Vous pourriez voir quelque chose comme ceci:

entrez la description de l'image ici

Vous devez définir la plage IP pour contenir votre adresse IP ou simplement sélectionner "N'importe où" dans la liste déroulante Source, pour la rendre accessible depuis localhost ou n'importe où:

entrez la description de l'image ici

Miguel Mota
la source
Oui ça marche. J'ai gardé la règle personnalisée qui était là et j'ai ajouté une nouvelle règle qui récupérait automatiquement mon adresse IP.
MSC
1

J'ai eu un problème similaire lors de la connexion à PostgreSQL. Bien que j'aie eu un accès public vrai, je n'ai pas pu me connecter.

J'ai ajouté une règle entrante de règle dans le groupe de sécurité et maintenant cela fonctionne parfaitement bien.

entrez la description de l'image ici

Abhash Kumar
la source
0

Je voulais juste ajouter mes découvertes pour faire gagner du temps à quelqu'un. Cette solution décrite ci-dessus a fonctionné sur une instance de dev ec2 mais après avoir migré vers un nouveau serveur, elle a cessé de fonctionner. Il s'est avéré que mon instance RDS et mon instance EC2 étaient dans le même VPC, de sorte que l'instance RDS ne pouvait pas voir l'adresse IP publique que j'avais ajoutée à son groupe de sécurité. Pour que cela fonctionne, vous devez ajouter au groupe de sécurité des instances RDS, l'IP privée de l'instance EC2 que vous pouvez trouver en détail.

Muhammed Bilal Iqbal
la source
-1

Après avoir créé mon instance Postgres, mon groupe de sécurité par défaut (rds-launch-wizard) n'a répertorié que mon adresse IP, j'ai donc dû ajouter un type de tout le trafic et une source de n'importe où avant de pouvoir me connecter. Je ne suis pas un expert en réseau, mais il est étrange que je ne puisse pas me connecter avec ma propre adresse IP en tant que règle entrante.

jones-chris
la source