ฉันต้องอินสแตนซ์ EC2 ทั้งคู่อยู่ใน VPC เดียวกัน และทั้งคู่มี IP สาธารณะที่ได้รับมอบหมาย

ปัญหาของฉันคือฉันต้องใช้ IP สาธารณะในกลุ่มความปลอดภัยของฉันเพื่อให้พวกเขาสามารถสื่อสารได้ หากฉันพยายามใช้ IP ส่วนตัว การเชื่อมต่อของพวกเขาจะถูกปฏิเสธ

ในที่สุดฉันจะลบ IP สาธารณะของพวกเขาและไม่ต้องการเปลี่ยนการตั้งค่ากลุ่มความปลอดภัยในภายหลัง

เหตุใดฉันจึงไม่สามารถใช้ IP ส่วนตัวเป็นแหล่งที่มาสำหรับสองเครื่องใน VPC เดียวกันได้

answer

tl;dr: เมื่อคุณเชื่อมต่อกับอินสแตนซ์โดยใช้ที่อยู่ IP สาธารณะ คุณจำเป็นต้องใช้ที่อยู่สาธารณะของเครื่องต้นทางเป็นที่อยู่ต้นทางด้วย (หรือของ NAT Gateway หากอินสแตนซ์ต้นทางไม่มี IP สาธารณะ) และ การรับส่งข้อมูลของคุณกำลังออกไปทางอินเทอร์เน็ตและกลับเข้ามาเมื่อคุณทำเช่นนี้ (แม้ว่าคุณจะยอมรับว่าคุณไม่ได้ออกไปสู่อินเทอร์เน็ตมากนัก)

ลองมาสองตัวอย่าง:

#1 public 203.0.113.1 private 172.31.3.1
#2 public 203.0.113.2 private 172.31.3.2

หากอินสแตนซ์ #1 เชื่อมต่อกับ #2 โดยใช้ IP สาธารณะของอินสแตนซ์ #2 203.0.113.2:

  • แพ็กเก็ต IP ปล่อยให้อินสแตนซ์ #1 มี IP ต้นทาง 172.31.3.1 และที่อยู่ปลายทาง 203.0.113.2
  • แพ็กเก็ตมาถึงตารางเส้นทาง VPC ซึ่งเห็นว่า 203.0.113.2 ไม่ใช่ที่อยู่ IP ภายใน VPC ดังนั้นตารางเส้นทางจึงส่งไปยังอินเทอร์เน็ตเกตเวย์
  • เกตเวย์อินเทอร์เน็ตเห็นการรับส่งข้อมูลที่มีที่อยู่ต้นทางเป็น 172.31.3.1 ซึ่งรู้ว่าจริง ๆ แล้วเป็นอินสแตนซ์ EC2 ที่มี IP สาธารณะ 203.0.113.1 ดังนั้นจึงเขียนที่อยู่ IP ต้นทางจาก 172.31.3.1 เป็น 203.0.113.1 และส่งไปยังอินเทอร์เน็ต
  • IP ต้นทางตอนนี้คือ 203.0.113.1 และ IP ปลายทางคือ 203.0.113.2
  • องค์ประกอบที่ไม่มีชื่อ (อาจเป็นกับ Internet Gateway เอง แต่อาจอยู่ระหว่าง Internet Gateway และโครงสร้างพื้นฐาน AWS ระดับภูมิภาคที่ไม่ค่อยมีใครพูดถึงที่เรียกว่าTransit Centerซึ่งแต่ละภูมิภาคมีอย่างน้อยสองแห่ง) เห็นว่า 203.0.113.2 เป็นของ Internet Gateway ของคุณ การรับส่งข้อมูลจะถูกตรึงกลับไปที่ Internet Gateway ของคุณเพื่อการจัดการ
  • อินเทอร์เน็ตเกตเวย์รู้ว่า 203.0.113.2 เป็นของอินสแตนซ์ #2 ของคุณ ดังนั้นมันจึงแปลที่อยู่ปลายทางเป็น 172.31.3.2 ณ จุดนี้ที่อยู่ต้นทางยังคงอยู่และจะยังคงอยู่ 203.0.113.1
  • อินสแตนซ์ #2 และกลุ่มความปลอดภัยเห็นว่าการรับส่งข้อมูลนี้มาจากอินเทอร์เน็ต โดยมี IP ต้นทาง 203.0.113.1 ดังนั้นนี่คือที่อยู่ที่กลุ่มความปลอดภัยต้องอนุญาต

หากอินสแตนซ์ #1 ใช้ 172.31.3.2 เพื่อเชื่อมต่อกับอินสแตนซ์ #2 โดยพื้นฐานแล้วจะไม่เกิดเหตุการณ์นี้ขึ้น ดังนั้นกลุ่มความปลอดภัยสำหรับ #2 จะเห็น 172.31.3.1 เป็นที่อยู่ต้นทาง

การใช้ IP ส่วนตัวของอินสแตนซ์เป้าหมายเป็นวิธีที่จะไป

โปรดทราบว่าเมื่อใช้ IP ส่วนตัว คุณสามารถแสดงรายการ ID กลุ่มความปลอดภัยของอินสแตนซ์ #1 ในกฎกลุ่มความปลอดภัยของอินสแตนซ์ #2 แทนที่จะแสดงรายการที่อยู่ IP ส่วนตัวของอินสแตนซ์ #1 มันอยู่ในที่เดียวกับ IP ในคอนโซล - พิมพ์sgในกล่องนั้นแล้วคุณควรจะเลือกได้ การรักษานี้น่าจะง่ายกว่าและทำงานได้ดีหากคุณใส่อินสแตนซ์ #1 ไว้ใน "กลุ่มหนึ่ง" ที่ปรับขนาดอัตโนมัติ เพื่อให้การปรับขนาดอัตโนมัติเข้ามาแทนที่เครื่องหากล้มเหลว

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