không thể kết nối với ví dụ rds postgresql công khai


23

Tôi đã tạo một bản thử nghiệm cơ bản PostgreSQL RDS trong một VPC có một mạng con công cộng duy nhất và nó sẽ có sẵn để kết nối qua internet công cộng. Nó sử dụng nhóm bảo mật mặc định, mở cho cổng 5432. Khi tôi cố gắng kết nối, nó không thành công. Tôi phải thiếu một cái gì đó rất đơn giản - nhưng tôi khá lạc lõng với điều này.

Đây là cài đặt cơ sở dữ liệu, lưu ý rằng nó được đánh dấu là Publicly Accessible: Cài đặt RDS

Dưới đây là cài đặt nhóm bảo mật, lưu ý rằng nó được mở rộng (được xác nhận trong cài đặt RDS ở trên bằng gợi ý "được ủy quyền" màu xanh lá cây bên cạnh điểm cuối): Cài đặt nhóm bảo mật

Đây là lệnh tôi đang cố sử dụng để kết nối:

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

Và đây là kết quả mà tôi nhận được khi cố gắng kết nối từ MacBook Pro Yosemite (lưu ý, nó đang phân giải thành địa chỉ 54. * 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?

Tôi không kích hoạt bất kỳ loại tường lửa nào và có thể kết nối với các phiên bản PostgreQuery công khai trên các nhà cung cấp khác (ví dụ Heroku).

Bất kỳ mẹo khắc phục sự cố nào cũng sẽ được đánh giá cao, vì tôi bị mất khá nhiều ở đây.

Cập nhật

Mỗi bình luận, đây là các quy tắc ACL gửi đến cho VPC mặc định: Cấu hình mạng ACL


1
Bạn đã xảy ra sự cố với NetworkACLs? Tôi sẽ xem xét một thiết lập có thể có thể chặn truy cập internet.
Optichip

Cảm ơn vi đa trả lơi! Các ACL dường như không chặn bất cứ điều gì, vì quy tắc đầu tiên là cho phép tất cả các cổng từ tất cả các nguồn, được đính kèm.
Edward Q. Cầu nối

Câu trả lời:


27

Vấn đề là quy tắc gửi đến trong Nhóm bảo mật đã chỉ định một nhóm bảo mật làm nguồn. Thay đổi nó thành CIDR bao gồm địa chỉ IP của tôi đã khắc phục sự cố.


6
Đối với bất cứ ai không biết CIDR hoạt động như thế nào; nếu địa chỉ IP của bạn là 91.61.76.202 (có thể tìm thấy địa chỉ của bạn bằng myipaddress.com ), hãy đặt nguồn của bạn là 91.61.76.202 / 32
Tom G

Bạn có sẵn sàng chụp ảnh màn hình của giải pháp này không?
smaccoun

Tôi sẽ rất vui, nhưng tôi không còn có trường hợp này trực tuyến nữa.
Edward Q. Bridges

11

Đã đối mặt với vấn đề tương tự, và đây là cách tôi giải quyết nó:

Nhấp vào nhóm bảo mật cho phiên bản RDS và kiểm tra các quy tắc gửi đến. Bạn có thể thấy một cái gì đó như thế này:

nhập mô tả hình ảnh ở đây

Phải đặt phạm vi IP để chứa IP của bạn hoặc chỉ chọn "Bất cứ nơi nào" trong danh sách thả xuống Nguồn, để có thể truy cập được từ localhost hoặc bất cứ nơi nào:

nhập mô tả hình ảnh ở đây


Có cái này hoạt động. Tôi đã giữ quy tắc Tùy chỉnh ở đó và thêm quy tắc mới tự động nhận địa chỉ IP của tôi.
MSC

1

Tôi đã có vấn đề tương tự trong khi kết nối với postgres. Sự kiện mặc dù tôi đã truy cập công khai đúng sự thật, tôi không thể kết nối.

Tôi đã thêm một quy tắc gửi đến trong nhóm bảo mật và bây giờ nó đang hoạt động rất tốt.

nhập mô tả hình ảnh ở đây


0

Chỉ muốn thêm những phát hiện của tôi để tiết kiệm thời gian cho ai đó. Giải pháp này được mô tả ở trên hoạt động trên một ví dụ dev ec2 nhưng sau khi tôi di chuyển sang một máy chủ mới, nó đã ngừng hoạt động. Hóa ra cả phiên bản RDS của tôi và phiên bản EC2 đều nằm trong cùng một VPC nên đối tượng RDS không thể thấy IP công khai mà tôi đã thêm vào nhóm bảo mật của nó. Để làm việc này, bạn cần thêm vào nhóm bảo mật RDS, ip riêng của đối tượng EC2 mà bạn có thể tìm thấy chi tiết.


-1

Sau khi tôi tạo cá thể Postgres, nhóm bảo mật mặc định của tôi (rds-launch-wizard) chỉ liệt kê địa chỉ IP của tôi, vì vậy tôi phải thêm Loại lưu lượng truy cập và nguồn của mọi nơi trước khi tôi có thể kết nối. Tôi không phải là chuyên gia về mạng, nhưng thật lạ là tôi không thể kết nối với địa chỉ IP của riêng mình như một quy tắc gửi đến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.