ทำความเข้าใจเบื้องต้น เกี่ยวกับการทำงานของระบบ DNS (Domain Name System) Server

Ake_.Net JPK
6 min readFeb 11, 2024

--

ทำความเข้าใจเบื้องต้น เกี่ยวกับการทำงานของระบบ DNS (Domain Name System) Server

DNS (Domain Name System) Server เป็น Server ที่ใช้เพื่อแปลงชื่อโดเมน (Domain Name) เป็นที่อยู่ IP Address (Internet Protocol) เพื่อใช้ในการติดต่อสื่อสารกันในระบบอินเทอร์เน็ต

แต่มนุษย์มักจะสะดวกกับการใช้ชื่อโดเมนที่เข้าใจและจำได้ง่าย เช่น example.net แทนที่จะจำ IP address เช่น 1.2.3.4 หรือที่เรียกกันว่า Type A

ดังนั้น DNS Server มีหน้าที่แปลงชื่อโดเมนเป็น IP Address หรือทำกลับกันก็ได้ เช่นแปลง IP Address กลับไปเป็นชื่อ ที่เรียกกันว่า Type PTR record หรือ Type MX record ที่ใช้สำหรับระบบ Email Exchange เป็นต้น

ในช่วงเริ่มต้นของการใช้ชื่อทดแทน IP Address, ระบบฐานข้อมูลที่ใช้เก็บข้อมูลเครื่องคอมพิวเตอร์และที่อยู่ IP Address ถูกจัดเก็บในฐานข้อมูลเดียวกัน

ฐานข้อมูลนี้ถูกดูแลโดย SRI-NIC ซึ่งเป็นศูนย์สารสนเทศของสถาบันวิจัย Stanford ( Stanford Research Institute’s Network Information Center ) ข้อมูลเช่น ชื่อโฮสและ IP Address ถูกจัดเก็บในไฟล์ HOST.txt และเครือข่ายที่ต้องการใช้ข้อมูลนี้จะใช้โปรโตคอล FTP เพื่อดึงข้อมูลและนำไปใช้

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

นอกจากนี้ โครงสร้างของฐานข้อมูลที่ใช้เก็บชื่อในลักษณะเดิม ทำให้มีปัญหาในการจัดการเมื่อมีการขอใช้ชื่อที่ซ้ำกัน

cr. รูปจาก https://www.google.com/search?q=Paul+Mockapetris

ด้วยปัญหาที่เกิดขึ้นในระบบการแปลงชื่อที่ใช้ฐานข้อมูลที่อยู่ในไฟล์เดียวกัน จึงมีการปรับปรุงและพัฒนาระบบ DNS ขึ้นมาใหม่ เริ่มต้นที่ Information Sciences Institute (ISI) ใน University of California, San Diego โดย Paul Mockapetris ในปี 1983 ในระหว่างทำงานในโครงการ ARPANET

การพัฒนานี้เป็นการตอบสนองต่อความต้องการในการจัดการข้อมูลชื่อและ IP Address ให้เป็นระบบอัตโนมัติครับ

โดย Paul Mockapetris ได้พัฒนาและออกเอกสารการวิจัย RFC 882 และ RFC 883 ที่นำมาเป็นพื้นฐานของระบบ DNS ที่ใช้วิธีการกระจายฐานข้อมูลและสามารถปรับปรุงข้อมูลโดยอัตโนมัติ. รายละเอียดเกี่ยวกับคุณ Paul Mockapetris อ่านได้ที่ https://www.internethalloffame.org/inductee/paul-mockapetris/ นอกจาก Paul Mockapetris แล้ว ยังมีบุคคลสำคัญอื่นๆ ที่เกี่ยวข้องในการพัฒนาระบบ DNS ได้แก่

  • Jon Postel เป็นผู้พัฒนามาตรฐาน DNS ร่วมกับ Paul Mockapetris รายละเอียดเกี่ยวกับคุณ Jon Postel อ่านได้ที่ https://www.internethalloffame.org/inductee/jon-postel/
  • Paul Vixie เป็นผู้พัฒนาซอฟต์แวร์ DNS เวอร์ชันที่ได้รับความนิยมในปัจจุบัน โปรแกรมนั้นชื่อว่า BIND ( Berkeley Internet Name Domain ) ดูวิธีการติดตั้งโปรแกรม BIND9 เพื่อใช้ทำเครื่อง Name Server ได้ในบทความนี้ -> https://medium.com/@akenetjpk/c2b9c17fa833 และรายละเอียดเกี่ยวกับคุณ Paul Vixie อ่านได้ที่ https://www.internethalloffame.org/inductee/paul-vixie/

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

รูปแสดง แต่ละส่วนของ FQDN cr. รูปจาก https://images.slideplayer.com/25/7677269/slides/slide_3.jpg

รูปแบบการเขียน
การเขียนชื่อคอมพิวเตอร์ประจำโดเมนใดๆจะเริ่มต้นจากชื่อเครื่องตามด้วยชื่อโดเมนย่อยที่คั่นด้วยจุดและปิดท้ายด้วยจุดซึ่งแสดงถึงจุดบนสุดหรือเรียกว่า ราก (root)

เครื่องหมายจุดเป็นสัญลักษณ์ที่ใช้ระบุว่าชื่อได้สิ้นสุดโดยไม่มีชื่อต่อท้ายอีก และเรียกชื่อชื่อนั้นว่าเป็นชื่อสัมบูรณ์ (absolute name) ทั้งนี้เพื่อป้องกันความสับสนกับชื่อที่เขียนแบบสัมพัทธ์ (relative name) ตัวอย่างเช่นชื่อ “www.ntplc.co.th.” มีความหมายดังต่อไปนี้

· www ชื่อเครื่อง (host name)
· ntplc ชื่อโดเมนองค์กร
· co ชื่อโดเมนในหมวดนั้นๆ
· th ชื่อโดเมนสัญชาติไทย
· . สัญลักษณ์แทนราก ( root )

รูปแบบการเขียนชื่อคอมพิวเตอร์ที่ระบุทั้งชื่อเครื่องและชื่อโดเมนที่สังกัดเต็มรูปแบบโดยปิดท้ายด้วยเครื่องหมายจุด เป็นรูปแบบการเขียนที่สมบูรณ์ และซึ่งเราจะเรียกชื่อที่เขียนในลักษณะนี้ว่า FQDN (Fully Qualified Domain Name)

cr. รูปจาก https://kinsta.com/wp-content/uploads/2022/07/structure-of-url.png

ประโยชน์จากการใช้ชื่อตามโครงสร้างแบบนี้คือ ทำให้ชื่อในโดเมนหนึ่งจะมีได้เพียงชื่อเดียวโดยไม่ซ้ำซ้อนกัน ไม่ว่าอินเทอร์เน็ตจะมีขนาดใหญ่เพียงใด หรือมีจำนวนโดเมนย่อยเท่าใด

เพราะเครื่องที่อยู่ต่างโดเมน ถึงแม้จะมีชื่อเครื่องหรือชื่อโดเมนย่อยเหมือนกัน แต่การที่อยู่ในชื่อโดเมนระดับบนที่ต่างกัน ย่อมมี FQDN ที่แตกต่างกัน และถือว่ามีชื่อต่างกัน ตัวอย่างเช่น www.name.co.th ถือว่ามีชื่อโดเมนต่างจาก www.name.com

ในอีกมุมนึงแล้วประโยชน์ของชื่อโดเมนแบบโครงสร้าง ( tree ) คือช่วยให้สามารถตั้งชื่อเครื่องได้หลากหลายในหมวดชื่อโดเมนต่างๆ

รูปแสดง โครงสร้างลำดับชั้น ของระบบ DNS cr.รูปจาก https://net.cloudinfrastructureservices.co.uk/wp-content/uploads/2021/10/DNS-hierarchical-tree.jpg

ระบบชื่อโดเมนในอินเทอร์เน็ต

ระบบชื่อโดเมนในอินเทอร์เน็ตมีการจัดแบ่งตามโครงสร้างลำดับชั้น (Hierarchical) และใช้ฐานข้อมูลแบบกระจาย (Distributed)

ระบบฐานข้อมูลแบบกระจายช่วยให้บริการชื่อโดเมนในองค์กรใดๆ ที่เป็นส่วนหนึ่งของระบบชื่อโดเมน ไม่จำเป็นต้องเก็บรักษาสำเนาข้อมูลชื่อโดเมนที่มีอยู่ทั้งหมด

หากแต่ระบบสามารถเชื่อมถึงกันทางเครือข่ายเพื่อสืบค้นและแลกเปลี่ยนข้อมูลรวมทั้งใช้ฐานข้อมูลร่วมกันโดยอัตโนมัติ

โครงสร้างตามลำดับชั้นของระบบชื่อโดเมน เปรียบเทียบได้กับการแบ่งองค์กร เช่น ภายในบริษัทอาจแบ่งออกเป็นแผนกย่อย แต่ละแผนกอาจแบ่งย่อยเป็นฝ่าย หรืออาจเปรียบเทียบกับการแบ่งพื้นที่ทางภูมิศาสตร์ออกเป็นประเทศ จังหวัด อำเภอ ตำบล เป็นต้น

รูปแสดง โครงสร้างลำดับชั้น ของระบบ DNS ( หรือเรียกว่า Domain Name Space ) cr.รูปจาก https://www.cpe.ku.ac.th/~nguan/articles/Internet/DNS/image001.gif

Internet DNS มีโครงสร้างตามลำดับชั้น แบบโครงสร้างต้นไม้กลับหัว โครงสร้างอยู่ภายใต้ต้นไม้รากเดี่ยวและแตกกิ่งก้านมาเป็นลำดับ

ส่วนปลายสุดเป็นจุดที่ไม่สามารถแตกกิ่งออกไปได้อีก จะเป็น ชื่อเครื่อง ตัวอย่างเช่น www.ntplc.co.th หมายถึง เครื่อง www ของโดเมน ntplc.co.th ครับ

โครงสร้างต้นไม้ทั้งโครงสร้าง เรียกโดยทั่วไปว่า โดเมนเนมสเปซ (domain name space) หรือเรียกสั้นๆว่า เนมสเปซ ( name space ) หรือหากต้องการกล่าวเจาะจงถึงอินเทอร์เน็ตก็เรียกว่า Internet name space ครับ

แต่ละโหนดใน Name space จะมีชื่อกำกับเพื่อใช้เรียก ยกเว้น ราก ( root ) ซึ่งอยู่บนสุด ไม่ต้องมีชื่อกำกับ

ซึ่งโหนดหนึ่งอาจแตกออกไปเป็นโหนดย่อย ( Sub domain ) ลงไประดับล่างได้หลายชั้น ซึ่งจะมีชื่อกำกับ ซึ่งชื่อนั้น เราเรียกว่า ชื่อโดเมน หรือ Domain name

โดยเราจะเรียก โดยไล่ลำดับจากโหนดล่างสุด ขึ้นไปจนสุดที่ราก เช่น ntplc.co.th เป็นโดเมนย่อย ( Sub domain ) ของ .th และเช่น www.ntplc.co.th เป็นโดเมนย่อย ( Sub domain ) ของ ntplc.co.th ครับ

จำนวนโดเมนย่อย ( Sub domain ) ขึ้นอยู่กับผู้ดูแลระบบกำหนดได้ตามต้องการ เพื่อใช้บ่งบอก หรือ ระบุ Host นั้นๆตามต้องการ

โดเมนระดับบนสุด Top-level Domains (TLDs) คือ โดเมนที่ระบุถึงกลุ่มโดเมนระดับบน ซึ่งกลุ่มโดเมนเหล่านี้จะไม่อยู่ภายใต้สังกัดใด หลักๆแล้ว แบ่งออกเป็น 3 ประเภทคือ

1.โดเมนทั่วไป (Generic Top Level Domains : gTLDs)

เป็นชื่อโดเมนที่จัดตามกลุ่มองค์กร เช่น .com .edu .gov .org

2.โดเมนรหัสประเทศ (Country Code Top Level Domains : ccTLDs)

ชื่อโดเมนจากรหัสประเทศ โดยอิงชื่อตามมาตรฐาน ISO 3166–1 เช่น .th .jp .au

3.โดเมนอาร์พา (ARPA domain)

ชื่อโดเมนสำหรับใช้แปลง IP Address ไปหาชื่อเครื่อง จะมีความจำเป็นในการใช้งานกับโปรแกรมบางโปรแกรมที่ต้องการตรวจสอบว่า IP address ที่ใช้งานมีชื่อโดเมนหรือชื่อโฮสต์ว่าอะไร

จากเรื่อง Name space ในตอนต้นนั้น แต่ละโหนดจะมีชื่อกำกับเพื่อใช้ค้นหา IP Address ดังนั้นในทางกลับกัน หากต้องการค้นหาชื่อโดเมนจาก IP Address ก็จะต้องมีชื่อกำกับให้โหนด โดยต้องแปลง IP address ให้เป็นเสมือนชื่อโดเมน ตามลำดับชั้น โดยให้อยู่ภายใต้ชื่อกำกับที่เราสร้างขึ้นมาครับ ซึ่งชื่อกำกับนั้นก็คือ .in-addr.arpa

โดยปกติ IP address จะแสดงความเจาะจง จากซ้ายไปขวา เช่น 192.168.1.1 คือ 192 จะเป็นการระบุไม่เจาะจงมาก(คือแบบกว้างๆ) ก็คือ ยังระบุโฮสต์ที่ต้องการไม่ได้นั่นเองครับ จนขยับไปที่ .168.1.1 คือขวาสุด ก็จะระบุถึงโฮสต์ที่ต้องการได้ครับ

แต่กับระบบโดเมน การระบุเฉพาะเจาะจง จะระบุจากขวามาทางซ้าย เช่น www.ntplc.co.th คือ ntplc.co.th เป็นการระบุแบบกว้างๆ ส่วน www. ที่อยู่ซ้ายสุด คือระบุว่าเป็นโฮสต์เฉพาะเจาะจง ที่ชื่อว่า www.

ดังนั้น การที่จะค้นหาจาก IP Address เพื่อหาชื่อโดเมนนั้น ในระบบ Domain name space เราเลยต้องเขียนโดเมนของ IP Address แบบสลับลำดับกันเพื่อให้เข้าหลักการเดียวกันกับชื่อโดเมน

เช่น 192.168.1.1 เป็น IP address ของเครื่อง www.ntplc.co.th จะมีชื่อในระบบ Domain name space คือ 1.1.168.192.ip-addr.arpa

เมื่อมีการสืบค้นจาก IP Address : 192.168.1.1 จะเริ่มจาก .arpa -> .in-addr -> .192 -> .168 -> .1 -> .1 ซึ่ง Address ลักษณะเราจึงเรียกว่า แอดเดรสผกผัน หรือ ที่เรียกกันว่า Reverse address หรือ Reverse DNS หรือ Reverse Zone ครับ

ซึ่งจะตรงข้ามกับ ชื่อโดเมนแบบปกติ ที่เราเรียกกันว่า Forward address หรือ Forward DNS หรือ Forward Zone ครับ

Reverse DNS มีการนำมาใช้งานสำคัญในหลายด้าน เช่น :

- ตรวจสอบความถูกต้องของอีเมล์ (Email Validation): การตรวจสอบ Reverse DNS สามารถช่วยลดการส่งอีเมล์ที่ไม่ถูกต้องหรือสแปม โดยระบบอีเมล์บางตัวอาจต้องการ Reverse DNS ที่ถูกต้องก่อนที่จะรับอีเมล์จากเซิร์ฟเวอร์นั้น ๆ

- การตรวจสอบความถูกต้องของเซิร์ฟเวอร์ (Server Verification): Reverse DNS ช่วยในการตรวจสอบความถูกต้องของเซิร์ฟเวอร์ที่ทำงานบนเครือข่ายอินเทอร์เน็ต และสามารถช่วยป้องกันการปลอมแปลง (spoofing) หรือการป้องกันการโจมตีจากเซิร์ฟเวอร์ที่ไม่ถูกต้อง

- เพิ่มความปลอดภัย (Security Enhancement): Reverse DNS มักถูกนำมาใช้เพื่อเพิ่มความปลอดภัยในระบบเครือข่าย โดยการตรวจสอบและกำหนดนโยบายในการทำ Reverse DNS สามารถช่วยลดโอกาสของการโจมตีหลายประการ

- บันทึกเหตุการณ์ (Logging): Reverse DNS นั้นยังสามารถใช้เพื่อบันทึกข้อมูลที่เกี่ยวข้องกับการเชื่อมต่อที่เกิดขึ้นในเครือข่าย นอกจากนี้ยังสามารถให้ข้อมูลที่เป็นประโยชน์ในการวิเคราะห์และการดูแลรักษาระบบเครือข่ายได้

การบริหารระบบ Domain และ Zone

จากระบบ Domain Name Space หรือโครงสร้างต้นไม้กลับหัว นั้น เป็นการแสดงถึงภาพรวมของ DNS ในระบบ Internet เท่านั้น ไม่มีหน่วยงานใดที่มีฐานข้อมูล ทั้งหมดที่ครอบคลุมทั้งโครงสร้างได้

ดังนั้นแล้วจึงมีการ มอบอำนาจในการดูแลโดเมน ( Domain delegation ) ซึ่งหน่วยงานที่กำหนด TLD Server คือ IANA (Internet Assigned Numbers Authority) ซึ่งเป็นหน่วยงานของ ICANN (Internet Corporation for Assigned Names and Numbers) ที่มีหน้าที่รับผิดชอบในการกำหนดและจัดการรหัสที่ใช้ในระบบอินเทอร์เน็ต รวมถึงการกำหนด TLD Server สำหรับแต่ละ Top-Level Domain ที่ให้บริการบนอินเทอร์เน็ต

กล่าวคือ ผู้ดูแลโดเมนระดับบน Top-level Domain Server (TLD Server) จะไม่จัดการโดเมนระดับล่างโดยตรง แต่จะมีการมอบหมายให้ผู้ดูแลโดเมนระดับล่างนั้นได้มีสิทธิ์จัดการข้อมูลในการกำหนดโดเมนย่อยต่างๆได้เองตามต้องการ

ซึ่งโดเมนย่อยนั้น เราจะเรียกอีกชื่อว่า โซน ( Zone ) โดยแต่ละ Zone นั้นจะมี Name Server เพื่อทำหน้าที่เก็บรักษาข้อมูลของ Zone นั้นๆ ซึ่งผู้ดูแลโซน จะติดตั้ง Name Server เพื่อสร้างฐานข้อมูลเพื่อเก็บชื่อเครื่องกับ IP address ของ Zone นั้นๆด้วยตนเอง

ผู้ดูแลโซน จะติดตั้ง Master Name Server และ Slave Name Server เพื่อใช้เก็บข้อมูลของ Zone นั้นๆ ซึ่งผู้ดูแล DNS จะเพิ่มหรือลบชื่อโฮสต์ หรือ เปลี่ยนแปลงข้อมูลได้นั้น จะต้องแก้ไขที่ข้อมูล Master Name Server เท่านั้น

ส่วน Slave Name Server จะทำการสำเนาข้อมูลจาก Master มาเองอัตโนมัติเพื่อให้ข้อมูลตรงกัน เราเรียกกระบวนการนี้ว่า Zone Transfer ( การถ่ายโอนโซน )

ตัวอย่างเช่น ผู้ที่มี อำนาจหน้าที่ ( Authority ) ในการดูแลโดเมนระดับบนสุด TLDs เช่น .com .net คือ บริษัท Verisign เป็นบริษัทที่ได้รับมอบหมายจาก ICANN (Internet Corporation for Assigned Names and Numbers)

และเช่น .th (สำหรับประเทศไทย) ดูแลโดยบริษัท T.H.NIC Co., Ltd. ซึ่งจุดเริ่มต้นของ มูลนิธิศูนย์สารสนเทศเครือข่ายไทย หรือ Thai Network Information Center Foundation — THNIC Foundation ถือกำเนิดขึ้นเมื่อ ศาสตราจารย์ ดร.กาญจนา กาญจนสุต และคณะ ก่อตั้ง ศูนย์สารสนเทศเครือข่ายแห่งประเทศไทย (THNIC: Thailand Network Information Center) ซึ่งตั้งอยู่ภายใต้ สถาบันเทคโนโลยีแห่งเอเชีย (AIT: Asian Institute of Technology) ตั้งแต่ปี พ.ศ. 2531 เพื่อทำหน้าที่เป็นหน่วยงานดูแลระบบทะเบียนและให้บริการจดทะเบียนชื่อโดเมน ตอบสนองต่อการขยายตัวของการจดทะเบียนโดเมนเนมในประเทศไทย สามารถอ่านข้อมูลรายละเอียดได้ที่ https://www.thnic.or.th/aboutus-th/

รูปแสดง ลำดับขั้นตอนการทำงานของระบบ DNS โดยเครื่อง Recursive DNS Server โดยยกตัวอย่างโดเมน www.ntplc.co.th
รูปแสดง ตัวอย่างการตั้งค่า DNS Server ที่ Users เพื่อใช้งาน จากรูป Network Diagram เครื่อง Users ยกตัวอย่างใช้งานระบบปฏิบัติการ Windows โดยตั้งค่า DNS Server เป็น 192.168.1.4 ( Resolver DNS ) ซึ่งคือ Users จะส่ง DNS Request ไปที่เครื่อง IP .190 นั่นเอง เพื่อสอบถามว่า เว็บไซต์/โดเมน ต่างๆที่เราต้องการเข้าถึงนั้นมี IP Address อะไร เราก็จะเข้าถึงเว็บไซต์/โดเมนเนม นั้นๆได้ เพราะในเครือข่าย Internet จะเข้าถึงกันได้ด้วยระบบ IP

การทำงานของ DNS สามารถอธิบายเบื้องต้น ได้ดังนี้ :

  1. เริ่มจาก การสอบถาม (Query , Request ) : เมื่อ User ต้องการเข้าถึงเว็บไซต์หรือไม่ทราบ IP address ของโดเมนที่ต้องการ, คำสั่ง Query , Request จาก User จะถูกส่งไปยัง Resolver DNS Server ( หรือเรียกว่า Recursive DNS Server / Caching DNS Server / Local DNS Server / DNS Server ก็ได้ครับ ) ที่ติดตั้งบนอุปกรณ์ของผู้ใช้หรือที่ผู้ใช้ได้ตั้งค่าไว้ที่หน้าการตั้งค่า IP Address / Subnet / Gateway / DNS Server ว่าจะใช้ DNS Server ใด
  2. Resolver DNS Server / Recursive DNS Server / Local DNS Server / DNS Server : จะทำหน้าที่ทำการถามข้อมูลจากตัวเอง โดยเริ่มถามค่าจาก Root คือ . (จุด) ว่าต้องเริ่มถามค่าต่อไปจาก Root Server , Root DNS ใดใน 13 Root Server
  3. Root Server : ถ้า Resolver DNS ไม่มีข้อมูลเกี่ยวกับโดเมนนั้นๆที่ถูกสอบถามใน Caching ของตนเอง เช่น โดเมน ntplc.co.th แล้วนั้น Resolver จะเริ่มส่งคำถาม ไปยัง Root Server จากนั้น Root server ตรวจสอบค่าที่อยู่หน้า . (จุด) ซึ่งตัวอย่างนี้คือ th. จากนั้นจะตอบกลับว่า คำถามนี้เกี่ยวข้องกับโดเมนระดับสูง Top Level Domains (TLD Server) ซึ่ง Root Server จะบอกว่า th. นั้นถูกเก็บไว้ที่ TLD Server ใด
  4. Top-level Domain Server (TLD Server) : จากข้อมูลที่ได้จาก Root Server แล้วนั้น Resolver DNS จะส่งไปถาม th. ไปยัง TLD Server ที่ Root Server ตอบกลับมา (TLD คือส่วนท้ายของชื่อโดเมน เช่น .com, .org, .net.) TLD Server จะตรวจสอบต่อไปว่า Record นี้ ntplc.co.th. อยู่ที่ Authoritative Name Server ใด
  5. Authoritative Name Server : TLD server จะตอบกลับ Resolver DNS จากนั้น Resolver DNS จะส่งคำถาม ntplc.co.th. ไปยัง Authoritative Name Server ได้ที่รับจาก TLD Server ขอข้อมูลเพิ่มเติมเกี่ยวกับโดเมนนั้น. กล่าวคือ จะตรวจสอบ sub domain record ต่างๆ ที่อยู่ด้านหน้าของ xxxx.ntplc.co.th ว่ามีค่าใดๆหรือไม่ ซึ่งในที่นี้คือ www. ก็จะตรวจสอบใน Name Server นี้ ดูวิธีการติดตั้งโปรแกรม BIND9 เพื่อใช้ทำเครื่อง Name Server ได้ในบทความนี้ -> https://medium.com/@akenetjpk/c2b9c17fa833
  6. การค้นหาข้อมูล (Query Resolution) : Authoritative name server จะส่งคำตอบกลับ Resolver DNS พร้อมกับข้อมูลที่เกี่ยวข้องกับโดเมนนั้นๆ . Resolver DNS จะจดจำข้อมูลนี้เพื่อ ทำการ Caching ไว้ตามค่า Cache Size , Cache TTL ที่กำหนดไว้ของแต่ละ Resolver DNS นั้นๆ สำหรับการใช้งานในอนาคตและส่งคำตอบกลับไปยัง Users
รูปแสดง Root Server cr. รูปจาก https://root-servers.org/

Root Server นั้นแม้จะมีเพียง 13 โดเมนเท่านั้น แต่ได้มีการติดตั้งไว้หลายประเทศหลายสถานที่ทั่วโลกเพื่อรองรับการใช้านได้เพียงพอ ตามรูปด้านบน

รูปแสดง Root Server ในประเทศไทย cr. รูปจาก https://root-servers.org/

สำหรับในประเทศไทยมีการติดตั้ง Root Server อยู่ใน บริเวณจังหวัดกรุงเทพ , เชียงใหม่ และ สุราษฎร์ธานีด้วย สามารถเข้าดูรายละเอียดได้ที่ https://root-servers.org/

เพื่อให้เห็นการทำงานของระบบ DNS สามารถใช้โปรแกรม dig ที่มีอยู่ใน Ubuntu Server Linux หรือ Linux ตระกูลใดๆอยู่แล้ว โดยทดสอบดูว่า ลำดับขั้นตอนเป็นอย่างไร เพื่อความเข้าใจได้มากขึ้นดังนี้ครับ

รูปแสดงการใช้คำสั่ง dig เพื่อแสดงขั้นตอนการ query ข้อมูลจาก Resolver DNS Server โดยยกตัวอย่างโดเมน www.ntplc.co.th

โดยผมได้ทำการใช้คำสั่ง dig +trace www.ntplc.co.th ใน Ubuntu Server Linux เพื่อสอบถามไปยัง DNS Server / Local DNS Server / Resolver DNS Server แล้วแต่จะสะดวกเรียกครับ

มีโปรแกรมหลายตัวที่สามารถทำหน้าที่เป็น DNS Resolver หรือ DNS client ได้บนระบบปฏิบัติการต่างๆ ซึ่งเป็นโปรแกรมที่ใช้เชื่อมต่อกับ DNS server เพื่อทำการแปลงชื่อโดเมน (domain name) เป็นที่อยู่ IP (IP address) และนำไปใช้ในการติดต่อกับเว็บไซต์หรือบริการอื่นๆ ที่ต้องการ.

นี่คือตัวอย่างของโปรแกรมที่ใช้กันแพร่หลาย ในการทำระบบ DNS resolver สามารถติดตั้ง และตั้งค่าใช้งานได้ใน Linux ทุกๆ Distro ได้เลยครับ :

- Systemd-Resolved:

โปรแกรมตัวนี้เป็นส่วนหนึ่งของ systemd ในระบบปฏิบัติการ Linux. ซึ่งตัวอย่างเครื่อง Resolver DNS ในบทความนี้ ใช้ Ubuntu Server จะมีโปรแกรม Systemed-Resolved ติดตั้งมากับระบบปฏิบัติการให้ใช้งานอยู่แล้วโดย Default ซึ่งโปรแกรมนี้ใช้สำหรับการ Resolution เพื่อแปลงชื่อโดเมนและมีการจัดการคอนฟิกในส่วนของ DNS cache ได้

- nscd (Name Service Cache Daemon):

ตัวนี้เป็น daemon ที่จัดการ caching ข้อมูลแบบหลายระบบ (ทั้งหมด, passwd, group, และ services) ซึ่งรวมถึง DNS

- dnsmasq , BIND9 :

หลักๆแล้ว 2 โปรแกรมนี้จะใช้ทำ Name Server เพื่อเก็บ Record ของการ map address ซึ่งตัวที่เป็นที่นิยมก็คือโปรแกรม Bind9 ซึ่งนอกจากจะเป็น Name Server ได้แล้ว ยังสามารถทำหน้าที่เป็น DNS resolver ได้ด้วย ดูวิธีการติดตั้งโปรแกรม BIND9 ได้ในบทความนี้ -> https://medium.com/@akenetjpk/c2b9c17fa833

ซึ่งตาม Network Diagram นี้ เครื่อง Ubuntu Server นี้ได้ตั้งค่าชี้ DNS Server เป็นตัวเองซึ่งคือ ip: 192.168.1.4 เมื่อโปรแกรม dig ทำงาน มันจะถามว่าโดเมน www.ntplc.co.th มีข้อมูลอะไร ตัวโปรแกรม dig จะแสดงผลการ query/สอบถาม/lookup/resolver เพื่อหาคำตอบ ซึ่งคำตอบที่ได้ ได้ตามรูปด้านบนครับ

รูปแสดง ลำดับขั้นตอนการทำงานของระบบ DNS โดยเครื่อง Recursive DNS Server โดยยกตัวอย่างโดเมน www.ntplc.co.th

นอกจากนี้, DNS Server ยังมีบทบาทในการบล็อกโดเมนที่เป็นอันตรายหรือที่มีความเสี่ยงต่อความปลอดภัย และมีความสามารถในการแจกจ่ายหรือจัดเก็บข้อมูล DNS query logs สำหรับการตรวจสอบหรือการวิเคราะห์ได้ต่อไปครับ เช่นการใช้โปรแกรม AdGuardHome สามารถอ่านวิธีติดตั้งได้ในบทความนี้ -> https://medium.com/@akenetjpk/3af491dc7c0d

--

--

Ake_.Net JPK

ชอบเขียนบทความเกี่ยวกับระบบ Computer Network เพื่อทบทวนความรู้ความเข้าใจให้กับตนเองเป็นหลัก และให้ผู้ที่สนใจสามารถเข้ามาอ่านได้ครับ ขอขอบคุณที่ติดตามครับ