Coding Gun

DNS คืออะไร?

DNS(Domain Name System) คือบริการที่แปลง Domain Name ที่เราเขียนในรูปแบบของ URL เช่น https://codinggun.com ไปเป็น IP Address https://111.111.111.111 ซึ่งเป็นที่อยู่ที่เครื่องคอมพิวเตอร์ใช้ในการติดต่อสื่อสารกันบนเครือข่าย ซึ่งเราสามารถ Map Domain name และ IP Address ได้ทั้ง Private(ภายในองค์กร) และ Public Network(อินเตอร์เน็ตทั่วไป)

ทำไมต้องมี DNS

การที่เราจะเข้าถึง Website ต่างๆ เราไม่สามารถจดจำ IP Address ของแต่ละ Site ได้ดังนั้นเราจึงต้องใช้ DNS เพื่อแปลง Domain Name ที่จำได้ง่าย ไปเป็น IP Address

DNS Server

ใน Network กจำเป็นต้องมี DNS Server ที่คอยนำทางเราไปยัง IP Address ที่ถูกต้อง ยกตัวอย่างเช่น ในกรณีที่เราต้องการสร้าง WebSite ถ้าเราอยากมี Website เราต้องทำตามนี้

  1. สร้าง Website แล้วให้บริการผ่าน Public IP Address
  2. จด Domain Name(เลือกชื่อ Website)
  3. ไปบอก DNS Server ว่า Domain ของเรานั้นแปลงไปเป็น Public IP Address อะไรด้วยการเพิ่ม A Record เข้าไปใน DNS Server
  4. เมื่อผู้ใช้งานพิมพิ์ Domain Name บน URL DNS Server จะนำทางไปที่ Public IP Address ทันที

หรือถ้าในระบบที่เป็น Private Network ก็เหมือนกัน คือเราต้อง

  1. สร้าง Website ที่ให้บริการผ่าน IP ภายใน(Private IP Address)
  2. ไปสร้าง A Record ใน DNS Server เพื่อ Map Domain ที่ใช้ภายในองค์กร(ส่วนใหญ่จะมีนามสกุลเป็น .local)
  3. เมื่อผู้ใช้งานพิมพิ์ Domain Name ที่มีนามสกุล .local บน URL DNS Server จะนำทางไปที่ Private IP Address ปลายทางทันที

การทำงานของ DNS

การทำงานของ DNS มีขั้นตอนหลัก ๆ ดังนี้:

  1. ผู้ใช้พิมพ์ชื่อ Domain เช่น www.codinggun.com ลงในเบราว์เซอร์
  2. ระบบจะสอบถาม DNS Resolver ซึ่งมักจะเป็นของผู้ให้บริการอินเทอร์เน็ต (ISP)
  3. Resolver ตรวจสอบใน Cache ว่าเคยมีข้อมูลของ Domain นั้นหรือไม่ ถ้าไม่มีก็จะเริ่มกระบวนการค้นหาใหม่
  4. Resolver ติดต่อไปยัง Root DNS Server ซึ่งเป็นเซิร์ฟเวอร์ระดับสูงสุดของ DNS
  5. Root DNS Server ชี้ไปยัง Top-Level Domain (TLD) Server เช่น .com, .org, .th
  6. TLD Server ชี้ไปยัง Authoritative DNS Server ซึ่งเป็นแหล่งข้อมูลของชื่อโดเมนนั้น
  7. Authoritative Server ส่ง IP Address กลับมา
  8. Resolver ส่ง IP Address กลับให้เบราว์เซอร์ ซึ่งนำไปเชื่อมต่อกับเว็บไซต์เป้าหมาย

ประโยชน์ของ DNS

DNSSEC

ถึงแม้ DNS จะใช้งานอย่างกว้างขวาง แต่ก็มีช่องโหว่เช่นกัน ยกตัวอย่างเช่น

เพื่อป้องกันความเสี่ยงเหล่านี้ จึงมีเทคโนโลยีอย่าง DNSSEC (DNS Security Extensions) ที่ช่วยตรวจสอบความถูกต้องของข้อมูล DNS ให้

DNSSEC ย่อมาจาก Domain Name System Security Extensions เป็นเทคโนโลยีที่เพิ่มความปลอดภัยให้กับระบบ DNS โดยมีเป้าหมายเพื่อ ป้องกันการปลอมแปลงข้อมูลใน DNS Server

ทำไมต้องมี DNSSEC?

DNS เดิมถูกออกแบบมาให้ทำงานได้รวดเร็วและมีประสิทธิภาพ แต่ไม่มีระบบตรวจสอบความถูกต้องของข้อมูล นั่นหมายความว่า หากมีผู้ไม่หวังดีสามารถปลอมแปลงข้อมูลใน DNS (เช่น ทำให้ www.yourbank.com ชี้ไปยัง IP ปลอมที่มีหน้าเว็บเหมือนกับหน้าเว็บของธนาคาร) ผู้ใช้ก็จะถูกหลอกให้กรอก username หรือ password โดยไม่รู้ตัว

โดยที่ DNSSEC จะเพิ่ม “Digital Signature” ให้กับข้อมูลเมื่อ Browser ขอข้อมูลจาก DNS ไปใช้งาน จะสามารถตรวจสอบความถูกต้อง ถ้าข้อมูลไม่ถูกต้องก็จะไม่ยอมให้เข้าใช้งาน

DNSSEC ทำงานอย่างไร

  1. เจ้าของโดเมนเปิดใช้งาน DNSSEC กับ Registrar หรือ DNS provider
  2. ระบบจะสร้าง Private key และ Public key เพื่อใช้ลงลายเซ็นกับข้อมูลใน DNS Server
  3. เมื่อมีการร้องขอ
    • DNS Server จะส่งข้อมูลที่ลงลายเซ็นดิจิทัล(digital signature) มาด้วย
    • ฝั่งผู้ใช้จะตรวจสอบว่าลายเซ็นนั้นถูกต้องตาม Public key หรือไม่
    • หากลายเซ็นตรงกัน ถือว่าเป็นข้อมูลที่ถูกต้อง และไม่ถูกดัดแปลงระหว่างทาง

ประโยชน์ของ DNSSEC

ข้อควรระวัง

DNS Lookup

DNS Lookup คือกระบวนการค้นหาหมายเลข IP Address ที่สอดคล้องกับชื่อ Domain โดยอาศัยข้อมูลใน DNS Server เพื่อให้สามารถเชื่อมต่อไปยังเว็บไซต์หรือบริการต่างๆ บนอินเทอร์เน็ตได้

ประเภทของ DNS Lookup

DNS Lookup มี 2 ประเภทหลัก:

  1. Forward DNS Lookup (การแปลงจาก Domain Name ไปยัง IP)

    • ใช้ชื่อโดเมน เช่น www.codinggun.com เพื่อค้นหา IP Address ของเซิร์ฟเวอร์ที่ให้บริการเว็บไซต์นั้น
    • เป็นการ lookup แบบที่ผู้ใช้งานอินเทอร์เน็ตใช้บ่อยที่สุด
  2. Reverse DNS Lookup (การแปลงจาก IP ไปเป็น Domain Name)

    • ใช้ IP Address เพื่อค้นหาว่ามันชี้ไปยัง Domain ใด
    • มักใช้ในการทดสอบด้่าน Security หรือการวิเคราะห์ log เพื่อหาแหล่งที่มาของการโจมตี

ตัวอย่างการทำ DNS Lookup

เราสามารถใช้ NSLookup สำหรับทำ

ซึ่งนอกจาก NSLookup แล้วเรายังมีเครื่องมืออื่นๆ อีกหลายตัวที่สามารถทำ DNS Lookup ได้

DNS Record

DNS Record คือข้อมูลที่เก็บไว้ใน DNS Server ซึ่งใช้กำหนดว่าโดเมนนั้น ๆ ควรทำงานอย่างไร เช่น ชี้ไปยัง Server ไหน, ใช้ E-mail Server ใด, หรือใช้ยืนยันว่าเป็นเจ้าของ Domain

ประเภทของ DNS Record ที่พบบ่อย

ประเภท ชื่อเต็ม หน้าที่
A Address Record ชี้ชื่อโดเมนไปยัง IP Address แบบ IPv4 เช่น 111.111.111.111
AAAA IPv6 Address Record ชี้ชื่อโดเมนไปยัง IP Address แบบ IPv6 เช่น 2001:0db8::1
CNAME Canonical Name Record ใช้ตั้งชื่อโดเมนให้ชี้ไปยังอีกชื่อหนึ่ง เช่น example.comwww.example.com
MX Mail Exchange Record ระบุว่าให้ใช้ Server ใดในการรับอีเมลของ Domain นั้น
TXT Text Record เก็บข้อความ เช่น ข้อมูลยืนยันโดเมน หรือ SPF, DKIM, DMARC สำหรับความปลอดภัยของอีเมล
NS Name Server Record บอกว่าโดเมนนี้ใช้ DNS Server ตัวไหนในการจัดการ
SOA Start of Authority Record ข้อมูลเกี่ยวกับโดเมน เช่น ผู้ดูแล, เวลาการอัปเดต
PTR Pointer Record ใช้สำหรับ Reverse Lookup (จาก IP กลับไปเป็น Domain)

ตัวอย่าง DNS Record

ตัวอย่างของ A Record ที่ Map ระหว่าง IP Address กับ Domain ซึ่งถือได้ว่าเป็น Record แรกที่ทุกๆ Web ต้องมี

example.com.    IN    A    111.111.111.111

ซึ่งจะหมายความว่า example.com ชี้ไปยัง IP 111.111.111.111

Phanupong Permpimol
Follow me