nie można połączyć się z publiczną instancją postgresql rds

23

Stworzyłem podstawową testową instancję PostgreSQL RDS w VPC, która ma jedną publiczną podsieć i która powinna być dostępna do połączenia przez publiczny internet. Używa domyślnej grupy zabezpieczeń, która jest otwarta dla portu 5432. Gdy próbuję się połączyć, nie działa. Tęsknię za czymś bardzo prostym - ale jestem na to zagubiony.

Oto ustawienia bazy danych, pamiętaj, że jest oznaczony jako Publicly Accessible: Ustawienia RDS

Oto ustawienia grupy zabezpieczeń, zwróć uwagę, że jest szeroko otwarte (potwierdzone w powyższych ustawieniach RDS zieloną „autoryzowaną” wskazówką obok punktu końcowego): Ustawienia grupy zabezpieczeń

Oto polecenie, którego próbuję użyć do połączenia:

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

I to jest wynik, który otrzymuję, gdy próbuję połączyć się z Yosemite MacBook Pro (uwaga, rozwiązuje się na 54. * adres IP):

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?

Nie mam włączonej żadnej zapory ogniowej i mogę łączyć się z publicznymi instancjami PostgreSQL na innych dostawcach (np. Heroku).

Wszelkie wskazówki dotyczące rozwiązywania problemów byłyby bardzo mile widziane, ponieważ jestem tutaj bardzo zagubiony.

Aktualizacja

Dla komentarza, oto przychodzące reguły ACL dla Domyślnego VPC: Konfiguracja ACL sieci

Edward Q. Mosty
źródło
1
Czy zdarzyło ci się zadzierać z NetworkACL? Szukałem tam możliwego ustawienia, które mogłoby blokować dostęp do Internetu.
Optichip
Dziękuję za odpowiedź! Listy ACL wydają się niczego nie blokować, ponieważ pierwszą zasadą jest zezwalanie na wszystkie porty ze wszystkich źródeł na jeden przyłączony.
Edward Q. Mosty

Odpowiedzi:

27

Problem polegał na tym, że reguła ruchu przychodzącego w grupie zabezpieczeń określała grupę zabezpieczeń jako źródło. Zmiana na CIDR, który zawierał mój adres IP, rozwiązała problem.

Edward Q. Mosty
źródło
6
Dla każdego, kto nie wie, jak działa CIDR; jeśli twój adres IP to 91.61.76.202 (możesz go znaleźć za pomocą myipaddress.com ), ustaw swoje źródło na 91.61.76.202/32
Tom G
Czy zechcesz zrobić zrzut ekranu przedstawiający to rozwiązanie?
smaccoun
Byłbym szczęśliwy, ale nie mam już tego wystąpienia online.
Edward Q. Bridges
11

Napotkałem podobny problem i tak to rozwiązałem:

Kliknij grupę zabezpieczeń dla instancji RDS i sprawdź reguły ruchu przychodzącego. Możesz zobaczyć coś takiego:

wprowadź opis zdjęcia tutaj

Musisz ustawić zakres adresów IP, aby zawierał adres IP lub po prostu wybierz „Anywhere” w menu Source, aby był dostępny z lokalnego hosta lub z dowolnego miejsca:

wprowadź opis zdjęcia tutaj

Miguel Mota
źródło
Tak, to działa. Zachowałem tam istniejącą regułę niestandardową i dodałem nową regułę, która automatycznie pobierała mój adres IP.
MSC,
1

Miałem podobny problem podczas łączenia z postgres. Wydarzenie, chociaż miałem publicznie dostęp do prawdy, nie mogłem się połączyć.

Dodałem jedną regułę reguły przychodzącej w grupie zabezpieczeń i teraz działa ona doskonale.

wprowadź opis zdjęcia tutaj

Abhash Kumar
źródło
0

Chciałem tylko dodać moje ustalenia, aby kogoś zaoszczędzić trochę czasu. To opisane powyżej rozwiązanie działało na instancji dev ec2, ale po migracji na nowy serwer przestało działać. Okazało się, że zarówno moja instancja RDS, jak i instancja EC2 były w tym samym VPC, więc instancja RDS nie widziała publicznego adresu IP, który dodałem do swojej grupy bezpieczeństwa. Aby to działało, należy dodać do grupy zabezpieczeń instancji RDS prywatny adres IP instancji EC2, który można znaleźć w szczegółach.

Muhammed Bilal Iqbal
źródło
-1

Po utworzeniu instancji Postgres moja domyślna grupa zabezpieczeń (rds-launch-wizard) wymieniła tylko mój adres IP, więc musiałem dodać typ całego ruchu i źródło dowolnego miejsca, aby móc się połączyć. Nie jestem ekspertem od sieci, ale to dziwne, że nie mogłem połączyć się z własnym adresem IP jako regułą przychodzącą.

Jones-Chris
źródło