ไม่สามารถเชื่อมต่อกับอินสแตนซ์ postgresql rds สาธารณะได้


23

ฉันสร้างอินสแตนซ์ทดสอบ PostgreSQL RDS ขั้นพื้นฐานใน VPC ที่มีซับเน็ตสาธารณะเดียวและควรจะสามารถเชื่อมต่อผ่านอินเทอร์เน็ตสาธารณะได้ ใช้กลุ่มความปลอดภัยเริ่มต้นซึ่งเปิดสำหรับพอร์ต 5432 เมื่อฉันพยายามเชื่อมต่อจะล้มเหลว ฉันต้องคิดถึงบางสิ่งที่ตรงไปตรงมามาก - แต่ฉันก็หลงทางไปแล้ว

นี่คือการตั้งค่าฐานข้อมูลโปรดทราบว่ามีการทำเครื่องหมายเป็นPublicly Accessible: การตั้งค่า RDS

นี่คือการตั้งค่ากลุ่มความปลอดภัยโปรดทราบว่ามันเปิดกว้าง (ยืนยันในการตั้งค่า RDS ข้างต้นโดยคำแนะนำ "อนุญาต" สีเขียวถัดจากจุดสิ้นสุด): การตั้งค่ากลุ่มความปลอดภัย

นี่คือคำสั่งที่ฉันพยายามใช้เพื่อเชื่อมต่อ:

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

และนี่คือผลลัพธ์ที่ฉันได้รับเมื่อพยายามเชื่อมต่อจาก Yosemite MacBook Pro (หมายเหตุมันแก้ไขไปที่ 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?

ฉันไม่ได้เปิดใช้งานไฟร์วอลล์ชนิดใดและสามารถเชื่อมต่อกับอินสแตนซ์ PostgreSQL สาธารณะในผู้ให้บริการรายอื่น (เช่น Heroku)

เคล็ดลับการแก้ไขปัญหาใด ๆ จะได้รับการชื่นชมมากเพราะฉันค่อนข้างเสียที่นี่

ปรับปรุง

ต่อความคิดเห็นนี่คือกฎ ACL ขาเข้าสำหรับ VPC เริ่มต้น: การกำหนดค่า ACL เครือข่าย


1
คุณเคยยุ่งกับ NetworkACLs หรือไม่ ฉันจะดูการตั้งค่าที่เป็นไปได้ที่อาจปิดกั้นการเข้าถึงอินเทอร์เน็ต
Optichip

ขอบคุณสำหรับการตอบกลับ! ACLs ดูเหมือนจะไม่บล็อกสิ่งใดเนื่องจากกฎข้อแรกคืออนุญาตพอร์ตทั้งหมดจากแหล่งที่มาทั้งหมดต่อหนึ่งไฟล์
Edward Q. Bridges

คำตอบ:


27

ปัญหาคือกฎขาเข้าในกลุ่มความปลอดภัยระบุกลุ่มความปลอดภัยเป็นแหล่งที่มา การเปลี่ยนเป็น CIDR ที่รวมที่อยู่ IP ของฉันแก้ไขปัญหาได้


6
สำหรับผู้ที่ไม่ทราบว่า CIDR ทำงานอย่างไร หากที่อยู่ IP ของคุณคือ 91.61.76.202 (สามารถค้นหาของคุณได้โดยใช้myipaddress.com ) ให้ตั้งค่าที่มาของคุณเป็น 91.61.76.202/32
Tom G

คุณยินดีที่จะจับภาพหน้าจอของโซลูชันนี้ที่มีลักษณะอย่างไร
smaccoun

ฉันจะมีความสุข แต่ฉันไม่มีอินสแตนซ์นี้อีกต่อไป
Edward Q. Bridges

11

พบปัญหาที่คล้ายกันและนี่คือวิธีที่ฉันแก้ไข:

คลิกที่กลุ่มความปลอดภัยสำหรับอินสแตนซ์ RDS และตรวจสอบกฎขาเข้า คุณอาจเห็นบางสิ่งเช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ต้องตั้งค่าช่วง IP เพื่อให้มี IP ของคุณหรือเพียงแค่เลือก "ที่ใดก็ได้" ในรายการแบบหล่นลงแหล่งที่มาเพื่อให้สามารถเข้าถึงได้จาก localhost หรือที่ใดก็ได้:

ป้อนคำอธิบายรูปภาพที่นี่


ใช่มันใช้งานได้ดี ฉันเก็บกฎที่กำหนดเองซึ่งอยู่ที่นั่นและเพิ่มกฎใหม่ซึ่งเลือกที่อยู่ IP ของฉันโดยอัตโนมัติ
MSC

1

ฉันมีปัญหาที่คล้ายกันขณะเชื่อมต่อกับ postgres แม้ว่าฉันจะเข้าถึงสาธารณะได้จริง แต่ฉันไม่สามารถเชื่อมต่อได้

ฉันได้เพิ่มกฎขาเข้าของกฎหนึ่งข้อในกลุ่มความปลอดภัยและตอนนี้ก็ทำงานได้อย่างสมบูรณ์แบบ

ป้อนคำอธิบายรูปภาพที่นี่


0

แค่อยากจะเพิ่มสิ่งที่ฉันค้นพบเพื่อช่วยชีวิตใครสักคน วิธีแก้ปัญหานี้อธิบายไว้ข้างต้นทำงานกับอินสแตนซ์ dev ec2 แต่หลังจากที่ฉันย้ายไปยังเซิร์ฟเวอร์ใหม่มันหยุดทำงาน ปรากฏว่าทั้งอินสแตนซ์ RDS ของฉันและอินสแตนซ์ EC2 อยู่ใน VPC เดียวกันดังนั้นอินสแตนซ์ RDS ไม่สามารถดู IP สาธารณะที่ฉันเพิ่มลงในกลุ่มความปลอดภัยได้ ในการทำให้การทำงานนี้คุณต้องเพิ่มในกลุ่มความปลอดภัยของอินสแตนซ์ RDS, IP ส่วนตัวของอินสแตนซ์ EC2 ที่คุณสามารถค้นหาโดยละเอียด


-1

หลังจากที่ฉันสร้างอินสแตนซ์ Postgres กลุ่มความปลอดภัยเริ่มต้นของฉัน (rds-launch-wizard) จะแสดงรายการที่อยู่ IP ของฉันเท่านั้นดังนั้นฉันจึงต้องเพิ่มประเภทของการรับส่งข้อมูลทั้งหมดและแหล่งที่มาของที่ใดก็ได้ก่อนที่ฉันจะสามารถเชื่อมต่อได้ ฉันไม่ใช่ผู้เชี่ยวชาญด้านเครือข่าย แต่แปลกที่ฉันไม่สามารถเชื่อมต่อกับที่อยู่ IP ของฉันเป็นกฎขาเข้าได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.