Private hosted zone (AWS) วิธีสร้าง hosted zone ส่วนตัวสำหรับใช้ local DNS ภายใน AWS
สวัสดีครับ ต้า ครับ
วันนี้เราจะมาทำ Private hosted zone สำหรับการสร้างชื่อ hosted zone สำหรับใช้ภายใน AWS กันครับ
หรือจะพูดให้เห็นภาพคือ
เราจะใช้ EC2 เชื่อมต่อเข้าหา EC2 อีกตัวนึง
แต่เทนที่เราจะเชื่อมต่อด้วย IP (EC2 > XXX.XXX.XXX.XXX)
เราจะใช้เป็น Hosted zone name ในการเข้าถึงแทนครับ (EC2 > my.ec2.aws)
โครงสร้างที่จะทดสอบ
สำหรับโครงสร้างที่ผมจะทดสอบในบทความนี้จะมีตามด้านล่างนี้ครับ
สำหรับใครที่สร้าง 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 ได้
ตั้งค่า Private hosted zone
ไปที่ Route 53 Console
ไปที่ Hosted zones
ไปที่ Create hosted zone
ตั้งชื่อที่ Hosted zone ที่เราต้องการ (ในกรณีของบทความนี้คือ ec2.aws)
เลือก Private hosted zone
อธิบาย: หากเราเลือก Public hosted zone เราจำเป็นต้องทำการซื้อ Domain มาก่อนถึงจะสามารถระบุชื่อ hosted zone ตามที่เราสร้างขึ้นมาใช้งาน(เพราะใช้กันในระบบสาธารณะ)
แต่หากเราใช้ Private hosted zone เราสามารถตั้งชื่ออะไรก็ได้ เพราะเป็นชื่อที่ใช้กันใน private ในวง VPC ที่เราสร้างขึ้นกันเท่านั้น(ขอแค่ไม่ซ้ำกันใน VPC)
เลือก Region และ VPC ที่เราสร้างขึ้น
แล้วกด Create hosted zone
เข้าไปที่ Hosted zone ที่เราสร้างขึ้น
กด Create Record
Record name: my
เลือกเป็น Type: A Record
Value: ให้ใส่เป็น Private IP ของ EC2 (2) ที่อยู่ใน Private Subnet(ในกรณีนี้คือ 10.222.1.222)
กด Create records
ถ้าได้ตามภาพด้านล่างแบบนี้คือ OK
หลังจากนั้น ให้เราเปิด 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 ต่อ รอติดตามกันไปครับ
แล้วเจอกันในบทความต่อไป สวัสดีครับ