Private hosted zone (AWS) วิธีสร้าง hosted zone ส่วนตัวสำหรับใช้ local DNS ภายใน AWS

วิธีการสร้าง Private hosted zone ใน AWS ถูกสรุปให้เข้าใจง่ายๆในบทความนี้แล้วเชิญรับชมรับอ่านกันได้ครับ
2024.03.14

สวัสดีครับ ต้า ครับ
วันนี้เราจะมาทำ Private hosted zone สำหรับการสร้างชื่อ hosted zone สำหรับใช้ภายใน AWS กันครับ
หรือจะพูดให้เห็นภาพคือ
เราจะใช้ EC2 เชื่อมต่อเข้าหา EC2 อีกตัวนึง
แต่เทนที่เราจะเชื่อมต่อด้วย IP (EC2 > XXX.XXX.XXX.XXX)
เราจะใช้เป็น Hosted zone name ในการเข้าถึงแทนครับ (EC2 > my.ec2.aws)

โครงสร้างที่จะทดสอบ

สำหรับโครงสร้างที่ผมจะทดสอบในบทความนี้จะมีตามด้านล่างนี้ครับ
https://devio2023-media.developers.io/wp-content/uploads/2024/03/er0_1.png

สำหรับใครที่สร้าง EC2 หรือ VPC ไม่เป็นสามารถตรวจสอบจากบทความต่อไปนี้ได้ครับ

โดยสิ่งที่สำคัญสำหรับ VPC และ EC2 ในบทความนี้จะมีต่อไปนี้ครับ

VPC

  • มี 2 Subnet (1 Public, 1 Private)
  • Range ของ CIDR จะตามด้านตามบน ↑

EC2

  • มี EC2 Amazon Linux 2023 AMI 2 ตัว
    • EC2 (1) อยู่ที่ Public Subnet (เปิด port SSH เพื่อให้ เราสามารถเชื่อมต่อเข้าถึงได้)
    • EC2 (2) อยู่ที่ Private Subnet (เพื่อความเข้าใจง่ายผมจะตั้งค่า Private ให้เป็น 10.222.1.222 ตามภาพด้านล่าง)
      • เพื่อความเข้าใจง่ายในการทดสอบ EC2 (2) ที่อยู่ที่ Private Subnet จะเปิด Port All ICMPT - IPv4 10.222.0.0/16 ตามภาพด้านล่าง เพื่อให้สามารถ Ping ได้

https://devio2023-media.developers.io/wp-content/uploads/2024/03/er2.png
https://devio2023-media.developers.io/wp-content/uploads/2024/03/er3_1.png

ตั้งค่า Private hosted zone

ไปที่ Route 53 Console
ไปที่ Hosted zones
ไปที่ Create hosted zone

https://devio2023-media.developers.io/wp-content/uploads/2024/03/r12.png

ตั้งชื่อที่ Hosted zone ที่เราต้องการ (ในกรณีของบทความนี้คือ ec2.aws)
เลือก Private hosted zone

อธิบาย: หากเราเลือก Public hosted zone เราจำเป็นต้องทำการซื้อ Domain มาก่อนถึงจะสามารถระบุชื่อ hosted zone ตามที่เราสร้างขึ้นมาใช้งาน(เพราะใช้กันในระบบสาธารณะ)
แต่หากเราใช้ Private hosted zone เราสามารถตั้งชื่ออะไรก็ได้ เพราะเป็นชื่อที่ใช้กันใน private ในวง VPC ที่เราสร้างขึ้นกันเท่านั้น(ขอแค่ไม่ซ้ำกันใน VPC)

เลือก Region และ VPC ที่เราสร้างขึ้น
แล้วกด Create hosted zone

https://devio2023-media.developers.io/wp-content/uploads/2024/03/er4.png

เข้าไปที่ Hosted zone ที่เราสร้างขึ้น
กด Create Record

https://devio2023-media.developers.io/wp-content/uploads/2024/03/e5.png

Record name: my เลือกเป็น Type: A Record
Value: ให้ใส่เป็น Private IP ของ EC2 (2) ที่อยู่ใน Private Subnet(ในกรณีนี้คือ 10.222.1.222)
กด Create records

https://devio2023-media.developers.io/wp-content/uploads/2024/03/e6.png

ถ้าได้ตามภาพด้านล่างแบบนี้คือ OK

https://devio2023-media.developers.io/wp-content/uploads/2024/03/e7.png

หลังจากนั้น ให้เราเปิด EC2 (1) ที่อยู่ Public Subnet แล้วใช้คำสั่ง dig my.ec2.aws สอบถาม DNS nameservers เกี่ยวกับข้อมูลของ host addresses, mail exchanges, nameservers, และ ข้อมูลที่เกี่ยวข้อง จะเห็นว่า เราจะได้ข้อมูล Private IP ของ EC2 (2) ที่เราใส่เราไป

$ dig my.ec2.aws

; <<>> DiG 9.16.48-RH <<>> my.ec2.aws
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17319
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;my.ec2.aws.                    IN      A

;; ANSWER SECTION:
my.ec2.aws.             300     IN      A       10.222.1.222

;; Query time: 0 msec
;; SERVER: 10.222.0.2#53(10.222.0.2)
;; WHEN: Mon Mar 11 10:50:15 UTC 2024
;; MSG SIZE  rcvd: 55

และเมื่อเราทำการ ping my.ec2.aws จะเห็นได้ว่า เป้าหมายในการ ping จะไปหา EC2 (2) ที่เราสร้างขึ้นใน Private Subnet

[ec2-user@ip-10-222-0-171 ~]$ ping my.ec2.aws
PING my.ec2.aws (10.222.1.222) 56(84) bytes of data.
64 bytes from ip-10-222-1-222.ap-southeast-1.compute.internal (10.222.1.222): icmp_seq=1 ttl=127 time=0.192 ms
64 bytes from ip-10-222-1-222.ap-southeast-1.compute.internal (10.222.1.222): icmp_seq=2 ttl=127 time=0.528 ms
64 bytes from ip-10-222-1-222.ap-southeast-1.compute.internal (10.222.1.222): icmp_seq=3 ttl=127 time=0.203 ms
64 bytes from ip-10-222-1-222.ap-southeast-1.compute.internal (10.222.1.222): icmp_seq=4 ttl=127 time=0.206 ms
64 bytes from ip-10-222-1-222.ap-southeast-1.compute.internal (10.222.1.222): icmp_seq=5 ttl=127 time=0.193 ms
64 bytes from ip-10-222-1-222.ap-southeast-1.compute.internal (10.222.1.222): icmp_seq=6 ttl=127 time=0.314 ms

อยากให้ลองทำดู: ใครที่ทำตามบทความของผมจนมาถึงตรงนี้แล้ว ลอง ใช้คำสั่ง ping my.ec2.aws จาก Computer ของตัวเองดู จะเห็นได้ว่า เราจะไม่เจอ my.ec2.aws เพราะว่าเป็น DNS ที่ใช้ภายในวง VPC ที่เราสร้างขึ้นนั่นเอง

เท่านี้ก็เป็นการพิสูจน์ให้เห็นได้ว่าเราเข้าถึง EC2 (2) เราด้วย hosted zone name ได้แล้วนั่นเองครับ

สรุป

ก็จบกันไปแล้วนะครับ สำคัญ อธิบายให้เข้าใจง่ายๆ และ ลงมือทำเกี่ยวกับ Private hosted zone
เดี๋ยวจบบทความนี้ผมจะเขียนอีกบทความเกี่ยวกับPrivate hosted zone ต่อ รอติดตามกันไปครับ
แล้วเจอกันในบทความต่อไป สวัสดีครับ

บทความอ้างอิง