ฉันมีอินสแตนซ์ RDS ที่ทำงานบนเครือข่ายย่อยหนึ่งที่ไม่มี NAT และอินสแตนซ์ EC2 ที่ทำงานบนเครือข่ายย่อยอื่นที่มีการกำหนดค่าอินเทอร์เน็ตเกตเวย์ ซึ่งทั้งคู่อยู่ใน VPC เดียวกัน ฉันได้กำหนดค่าอินสแตนซ์ RDS ไม่ให้เข้าถึงได้แบบสาธารณะ

ฉันใช้คำสั่งต่อไปนี้ใน EC2 ระยะไกลของฉัน (ทำงานบนเครือข่ายย่อยที่สอง) เพื่อเชื่อมต่อกับอินสแตนซ์ RDS:

mysql -h xxxx.eu-central-1.rds.amazonaws.com -P 3306 -u root -p

ฉันป้อนรหัสผ่านที่ถูกต้องซึ่งฉันได้ตั้งไว้เมื่อกำหนดค่า RDS แต่ได้รับข้อผิดพลาดดังต่อไปนี้:

ERROR 2003 (HY000): Can't connect to MySQL server on 'XXX.eu-central-1.rds.amazonaws.com' (110)

ฉันตรวจสอบแล้ว มันไม่ใช่ปัญหาในการแก้ไขชื่อ ec2 แปลงปลายทางเป็น IP ภายในที่ถูกต้อง


นี่คือการตั้งค่าของฉัน:

RDS

VPC : เหมือนกับ EC2

โซนห้องว่าง :eu-central-1b

SUBNET : ในแผง RDS ฉันสามารถเห็นซับเน็ตทั้งหมดได้ แต่ฉันเห็นว่ามีไอพีน้อยกว่าหนึ่งไอพีในซับเน็ตส่วนตัวของโซน b

SECURITY GROUP : กลุ่มความปลอดภัยส่วนตัว (ไม่มีกฎขาออก และในกฎขาเข้า กฎเดียวที่มีพอร์ต mysql และกลุ่มความปลอดภัยสาธารณะเป็นแหล่งที่มา)

สามารถเข้าถึงได้โดยสาธารณะ : ไม่

MULTI AZ : ไม่

EC2

VPC : เหมือนกับ RDS

โซนห้องว่าง :eu-central-1b

SUBNET : ซับเน็ตสาธารณะของโซน b

SECURITY GROUP : กลุ่มความปลอดภัยสาธารณะ (พอร์ตทั้งหมดจากแหล่งใด ๆ เป็นกฎขาเข้าและพอร์ต ssh, http และ https จากแหล่งใด ๆ เป็นกฎขาออก)

ฉันสามารถเข้าถึงอินสแตนซ์ EC2 โดยใช้ http และ ssh มันทำงานได้ตามที่คาดไว้

VPC

VPC : ทั้ง RDS และ EC2 ใช้เหมือนกัน

SUBNETS : สาธารณะหนึ่งรายการและส่วนตัวหนึ่งรายการสำหรับ AZ แต่ละรายการ รวมทั้งหมด 4 รายการ

DHCP : ค่าเริ่มต้น ( domain-name = eu-central-1.compute.internal domain-name-servers = AmazonProvidedDNS)

ROUTE TABLES : สำหรับเครือข่ายย่อยสาธารณะ เส้นทางไปยังlocal(โดยอัตโนมัติ) และไปยังอินเทอร์เน็ต สำหรับส่วนตัว เฉพาะlocal(โดยอัตโนมัติ)

ACLs : สาธารณะ: allow allทั้งในขาเข้าและขาออก ส่วนตัว: allow allขาเข้าเท่านั้น นอกจากนี้ยังมีบรรทัดที่มี id *ด้วยdeny allบน ACL ทั้งสองทั้งขาเข้าและขาออก แต่ฉันค่อนข้างแน่ใจว่าควรจะอยู่ที่นั่น ฉันไม่สามารถลบได้

ผมทำอะไรผิดหรือเปล่า? ฉันพลาดอะไรไปรึเปล่า?

answer

ตรวจสอบกลุ่มความปลอดภัยของคุณว่าเป็นผู้ร้าย โฮสต์ภายใน VPC ที่ใช้ชื่อ DNS จะใช้ IP ส่วนตัวของทรัพยากรระยะไกลเสมอ ดังนั้นส่วน NAT / IG จึงไม่สำคัญ

คุณต้องตรวจสอบให้แน่ใจว่ากลุ่มความปลอดภัย VPC/EC2 และ NACL ของคุณอนุญาตการเข้าถึงที่เหมาะสม

ฉันมีบทช่วยสอนที่ครอบคลุมการตั้งค่ากลุ่มความปลอดภัย EC2/RDSคุณอาจพบว่ามีประโยชน์

นอกจากนี้คุณควรตรวจสอบกับคำตอบเกี่ยวกับเรื่องนี้ดังนั้น