แก้ไขปัญหาเซิร์ฟเวอร์ DNS สำหรับ Linux และ Windows

การจำแนกชื่อเป็นส่วนสำคัญของเครือข่ายสมัยใหม่ บริการแก้ไขชื่อเชื่อมโยงชื่อที่ผู้คนจดจำได้ง่ายกับที่อยู่ IP ที่จำยาก

การแก้ไขชื่อใช้ระเบียนที่อยู่ (A) เพื่อแก้ไขชื่อเป็นที่อยู่ IPv4 และระเบียน quad A (AAAA) เพื่อเชื่อมโยงชื่อกับที่อยู่ IPv6

ภาพหน้าจอของระเบียน A และ AAAA
บันทึก A และ AAAA

ผู้ใช้ปลายทางอาศัยการจำแนกชื่อเพื่อไปยังส่วนต่างๆ ของเว็บไซต์ของคุณ ช่างเทคนิคคอมพิวเตอร์สามารถใช้ชื่อในการแมปเครื่องพิมพ์เครือข่ายหรือไดรฟ์ และผู้ดูแลระบบสามารถเชื่อมต่อกับเซิร์ฟเวอร์หรือ VM จากระยะไกลได้โดยใช้ชื่อ

ขั้นตอนแรกในการแก้ไขปัญหาการแก้ปัญหาชื่อคือการทำความเข้าใจในการแก้ปัญหาชื่อ บทความแรกในชุดนี้ระบุการจำแนกชื่อและให้ตัวอย่างคุณลักษณะต่างๆ เช่น ไฟล์โฮสต์และ DNS บทความที่สองครอบคลุมถึงวิธีการใช้เครื่องมือต่างๆ เช่น ping, nslookup, host และ dig เพื่อแก้ไขปัญหาการแก้ปัญหาชื่อจากมุมมองของไคลเอ็นต์

บทความนี้อธิบายการแก้ไขปัญหาบริการ DNS บนเซิร์ฟเวอร์ของคุณ โดยเฉพาะอย่างยิ่ง จะครอบคลุมถึงวิธีการตรวจสอบสถานะบริการและไฟล์การกำหนดค่าพื้นฐานบนเซิร์ฟเวอร์ DNS ของ Linux และ Windows

การแก้ไขปัญหา DNS บน Linux

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

บริการแก้ไขชื่อสำหรับ Linux ปัจจุบันเป็นเวอร์ชัน 9 คือ Berkeley Internet Name Domain (BIND)

1. ตรวจสอบให้แน่ใจว่าได้ติดตั้ง BIND แล้ว

เมื่อแก้ไขปัญหาเซิร์ฟเวอร์การจำแนกชื่อ ตรวจสอบให้แน่ใจว่าติดตั้งและใช้งาน BIND แล้ว ตรวจสอบว่าติดตั้ง BIND9 โดยใช้คำสั่งต่อไปนี้:

$ named -v

ผลลัพธ์ควรระบุว่ามีการติดตั้ง BIND9 และแสดงหมายเลขเวอร์ชัน หากไม่ได้ติดตั้ง การสอบถามการแก้ปัญหาชื่อไปยังเซิร์ฟเวอร์นี้จะล้มเหลว

บน Red Hat, Fedora และการแจกแจงที่คล้ายกัน ให้ติดตั้ง BIND9 โดยพิมพ์:

$ sudo dnf install -y bind bind-utils

บน Ubuntu, Debian และการแจกแจงที่คล้ายกัน ให้พิมพ์:

$ sudo apt install bind9 bind9-utils bind9-dnsutils

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

2. ตรวจสอบให้แน่ใจว่า BIND กำลังทำงาน

สมมติว่าคุณติดตั้ง BIND ไว้ ขั้นตอนต่อไปคือตรวจสอบให้แน่ใจว่าบริการกำลังทำงานอยู่ ใช้ ระบบควบคุม คำสั่งที่มีไวยากรณ์ต่อไปนี้:

$ sudo systemctl status bind9

ผู้ดูแลระบบสามารถใช้: เริ่มระบบ, หยุด, เริ่มต้นใหม่, ทำให้มันเป็นไปได้ และ ขัดขวาง คำสั่งในการจัดการบริการ

อย่าลืมตั้งค่าไฟร์วอลล์ของคุณเพื่ออนุญาตพอร์ต 53/udp สำหรับการสืบค้น และพอร์ต 53/tcp สำหรับการโอนโซน

3. ตรวจสอบการกำหนดค่าโซน

ไดเร็กทอรีดีฟอลต์สำหรับจัดเก็บไฟล์คอนฟิกูเรชัน BIND9 มักจะเป็น /etc/bind และ /var/cache/bind. ไฟล์การกำหนดค่าบริการหลักคือ ชื่อ.conf, ชื่อ.conf.default-zones, ชื่อ.conf.local และ ชื่อ .conf.options. ไฟล์เหล่านี้กำหนดวิธีการทำงานของบริการแก้ไขชื่อ

ชื่อไดเรกทอรีและไฟล์ที่แน่นอนและตำแหน่งอาจแตกต่างกันไปตามการแจกจ่าย ซึ่งไม่ใช่เรื่องแปลกสำหรับระบบลีนุกซ์ สามารถเป็นประโยชน์สำหรับ grep ขนาดนั้น /ฯลฯ และ / เคยเป็น ไดเร็กทอรีของสตริงที่มี ชื่อ.

ตัวอย่างภาพหน้าจอจากไฟล์ /etc/named.conf
ตัวอย่างของไฟล์ /etc/named.conf

ไฟล์โซนประกอบด้วยบันทึกทรัพยากรจริงที่เชื่อมโยงชื่อโฮสต์เฉพาะกับที่อยู่ IP ไฟล์โซนมักจะอยู่ใน: /var/cache/bind. เร็กคอร์ดทรัพยากรมาตรฐาน เช่น เรกคอร์ดการเริ่มต้นของอำนาจ (SOA) และเนมเซิร์ฟเวอร์ (NS) จะถูกเก็บไว้ที่นี่พร้อมกับเรกคอร์ด A และตัวชี้ (PTR) ที่ใช้ในการสอบถามการแก้ปัญหาชื่อ หากเซิร์ฟเวอร์แก้ไขการสืบค้นเป็นหลายอาณาจักร แต่ละขอบเขตจะมีไฟล์ของตัวเอง

สกรีนช็อตของไฟล์ named.localhost
ไฟล์ชื่อ .localhost ตรวจสอบบันทึกทรัพยากร SOA, NS, A และ AAAA

ตรวจสอบการกำหนดค่าไฟล์โซนด้วยคำสั่งต่อไปนี้: ที่นี่ โกหก ชื่อของโซน DNS ที่ผู้ดูแลระบบกำลังแก้ไขปัญหา

$ sudo named-checkzone zonename.com db.zonename.com

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

ผลลัพธ์ควรระบุว่าขอบเขตตอบสนองอย่างถูกต้องโดยระบุรหัสทางออก 0. หากเช็คส่งคืนรหัสทางออก หนึ่งให้ตรวจสอบเนื้อหาของไฟล์โซนเพื่อหาข้อผิดพลาด ผู้ดูแลระบบอาจพบข้อผิดพลาดต่อไปนี้:

  • ชื่อขอบเขตไม่ถูกต้อง
  • ไฟล์โซนอาจมีบันทึกทรัพยากร A และ PTR ที่ไม่ถูกต้อง
  • อาจมีการสะกดผิดในบันทึก

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

การแก้ไขปัญหา DNS บน Windows

Microsoft Active Directory Domain Services (AD DS) ให้การรักษาความปลอดภัยและความสามารถในการจัดการโดยการรวมบริการต่างๆ อย่างแรกคือโซนที่รวม DNS AD คุณลักษณะนี้ช่วยให้สามารถจำลองฐานข้อมูล DNS กับฐานข้อมูล AD (การออกแบบการจำลองแบบที่ครอบคลุมมากขึ้น) บริการที่สองคือ Dynamic Host Configuration Protocol (DHCP) ซึ่งเป็นเจ้าของการอัปเดตระเบียน A และ PTR แบบไดนามิก DHCP เช่าการกำหนดค่าที่อยู่ IP แล้วลงทะเบียนชื่อโฮสต์และที่อยู่ IP ของไคลเอ็นต์ใน DNS เพื่อให้แน่ใจว่าโซน DNS มีการเติมข้อมูลที่ถูกต้อง เนื่องจากบริการทั้งสามนี้ทำงานร่วมกัน จึงควรรวมไว้บนเซิร์ฟเวอร์เดียวกัน

การแก้ไขปัญหาการแก้ปัญหาชื่อใด ๆ ต้องมี AD DS และ DHCP ด้วย โปรดคำนึงถึงสิ่งนี้เมื่อตรวจสอบข้อความ Event Viewer หรือพยายามจำกัดปัญหาในการแก้ปัญหาชื่อให้แคบลง

คอนโซลหลายตัวและ cmdlet ของ Windows PowerShell พร้อมใช้งานสำหรับการแก้ไขปัญหา DNS

1. ตรวจสอบให้แน่ใจว่าได้ติดตั้ง DNS แล้ว

ก่อนอื่นให้ตรวจสอบตัวจัดการเซิร์ฟเวอร์ของคุณเพื่อดูว่ามีการติดตั้ง DNS บนเซิร์ฟเวอร์ของคุณหรือ บริการ คอนโซล หากจำเป็น ให้เพิ่มบทบาท DNS และกำหนดค่าเซิร์ฟเวอร์ให้เป็นส่วนหนึ่งของโดเมน AD

สกรีนช็อตของตัวจัดการเซิร์ฟเวอร์เพื่อเข้าถึงคอนโซล DNS
เข้าถึงคอนโซล DNS จากเมนูเครื่องมือในตัวจัดการเซิร์ฟเวอร์

บริการทั้งหมดรวมถึง DNS บริการ คอนโซล เครื่องมือ นี่คือเมนูตัวจัดการเซิร์ฟเวอร์ ผู้ดูแลระบบสามารถตรวจสอบสถานะการบริการและเริ่มต้นใหม่ได้จากคอนโซลนี้

สกรีนช็อตของคอนโซลบริการเพื่อเข้าถึงการตั้งค่าบริการ DNS
เข้าถึงการตั้งค่าบริการ DNS ในคอนโซลบริการ

2. ตรวจสอบโซน

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

สกรีนช็อตของคอนโซล DNS Manager
คอนโซล DNS Manager แสดงโซนที่มีอยู่

3. แก้ไขปัญหาการกำหนดค่าโดยใช้ PowerShell

ตราบใดที่ผู้ดูแลระบบจดจำ cmdlet และพารามิเตอร์ที่เหมาะสม สภาพแวดล้อมบรรทัดคำสั่งเช่น PowerShell จะมีประสิทธิภาพมากกว่าและโดยทั่วไปเร็วกว่าการนำทาง GUI เห็นได้ชัดว่าข้อได้เปรียบหลักของอินเทอร์เฟซบรรทัดคำสั่งคือการเขียนสคริปต์ ผู้ดูแลระบบยังสามารถสร้างสคริปต์การแก้ปัญหาการแก้ปัญหาชื่อของตนเองได้

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

ต่อไปนี้คือตัวอย่างการใช้ PowerShell เพื่อแก้ไขปัญหาการกำหนดค่าหรือดึงข้อมูล

ใช้ cmdlet ต่อไปนี้เพื่อล้างแคชตัวแก้ไข DNS

> Clear-DnsServerCache

ใช้ cmdlet ต่อไปนี้เพื่อดึงระเบียนทรัพยากรจากเซิร์ฟเวอร์และตรวจสอบว่ามีระเบียนอยู่หรือไม่

> Get-DnsServerResourceRecord -ComputerName DC1 -ZoneName myzone.local

เพิ่มข้อมูลต่อไปนี้เพื่อดึงบันทึก A จากเซิร์ฟเวอร์ DNS ที่ระบุ -RR ประเภท A พารามิเตอร์:

> Get-DnsServerResourceRecord -ComputerName DC1 -ZoneName myzone.local -RRType A
สกรีนช็อตของ Get-DnsServerResourceRecord cmdlet
Get-DnsServerResourceRecord cmdlet แสดงข้อมูลโซนและระเบียนทรัพยากร

4. ตรวจสอบการกำหนดค่า DNS

ในตัวจัดการเซิร์ฟเวอร์ เครื่องมือ เลือกเมนู DNS เปิด ตัวจัดการ DNS คอนโซล ผู้ดูแลระบบสามารถขยายโหนดเพื่อแสดงโซน DNS ทั้งหมดที่เซิร์ฟเวอร์รู้จัก ต่อไปนี้คือบางพื้นที่ที่ต้องตรวจสอบโดยขึ้นอยู่กับสถานการณ์การแก้ไขปัญหาของคุณ:

  • ตรวจสอบให้แน่ใจว่าได้ระบุขอบเขตที่ถูกต้อง
  • ค้นหาข้อผิดพลาดในการพิมพ์ในบันทึกทรัพยากรแบบคงที่
  • ตรวจสอบให้แน่ใจว่าคุณมีบันทึกทรัพยากร A และ PTR ที่ถูกต้อง
  • ตรวจสอบให้แน่ใจว่าไฟร์วอลล์ของคุณอนุญาตการรับส่งข้อมูล DNS

ผู้ดูแลระบบยังสามารถใช้คอนโซล DNS เพื่อดูคุณสมบัติของโซน เช่น การกำจัดและการส่งต่อ การตั้งค่าเหล่านี้ส่งผลต่อวิธีที่ DNS จัดการกับข้อความค้นหาการแก้ปัญหาชื่อ

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

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

สกรีนช็อตของวิธีกำหนดค่าการเสื่อมสภาพและการกำจัดเพื่อลบบันทึกทรัพยากรที่ล้าสมัย
กำหนดค่าการเสื่อมสภาพและการกำจัดเพื่อลบระเบียนทรัพยากรที่ล้าสมัย

การส่งต่อจะส่งแบบสอบถามที่ยังไม่ได้แก้ไขไปยังเซิร์ฟเวอร์อื่น การกำหนดค่านี้ช่วยให้แน่ใจว่าเซิร์ฟเวอร์ DNS ภายในที่น่าจะอยู่ร่วมกับ AD DC (ตัวควบคุมโดเมน) ไม่สามารถเข้าถึงอินเทอร์เน็ตได้โดยตรง แทนที่, ผู้ส่งต่อ อยู่ในเครือข่ายย่อยการคัดกรองอินเทอร์เน็ตหรือ DMZ ของเครือข่ายของคุณ เซิร์ฟเวอร์ DNS ภายในส่งต่อการสืบค้นทรัพยากรอินเทอร์เน็ตภายนอกไปยังผู้ส่งต่อ

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

การตั้งค่าอื่นที่จะตรวจสอบคือการส่งต่อแบบมีเงื่อนไข การส่งต่อแบบมีเงื่อนไข DNS ช่วยให้ผู้ดูแลระบบสามารถเชื่อมโยงชื่อโดเมนเฉพาะกับเซิร์ฟเวอร์ DNS ที่รู้จัก เมื่อเซิร์ฟเวอร์ DNS ได้รับข้อความค้นหาที่เกี่ยวข้องกับชื่อโดเมนนั้น การสืบค้นจะถูกส่งไปยังเซิร์ฟเวอร์ DNS ที่อยู่ในรายการโดยตรง โดยไม่ต้องแก้ไขผ่านเซิร์ฟเวอร์อื่นๆ ตรวจสอบว่าชื่อโดเมนที่ระบุถูกต้องและระบุที่อยู่ IP ของเซิร์ฟเวอร์ DNS ที่เหมาะสม

5. พื้นที่โหลดซ้ำ

จากนั้นโหลดพื้นที่ใหม่ ผู้ดูแลระบบยังสามารถเริ่มบริการ DNS ใหม่ได้ อย่างไรก็ตาม สิ่งนี้ยังเริ่มต้น AD DS ใหม่และอาจส่งผลต่อระบบไคลเอนต์ เพื่อลดผลกระทบจากการไม่สามารถใช้ DC ได้ครั้งละหนึ่ง DC สมมติว่าคุณมี AD DC มากกว่าหนึ่งรายการในไซต์ของคุณ

6. ตรวจสอบบันทึกตัวแสดงเหตุการณ์

จากนั้นตรวจสอบบันทึก DNS ของ Event Viewer ผู้ดูแลระบบอาจต้องตรวจสอบรายการ DNS รวมถึงเหตุการณ์ AD DS และเหตุการณ์ DHCP ตรวจสอบรายการที่ระบุปัญหาการเริ่มต้น DNS ที่สำคัญกว่านั้น ให้ตรวจสอบทั้ง DNS และ AD DS เพื่อหาข้อผิดพลาดในการจำลองแบบ

ภาพหน้าจอ Event Viewer สำหรับข้อความ DNS และรายการ AD และ DHCP
Event Viewer แสดงข้อความ DNS และรายการ AD และ DHCP ที่เกี่ยวข้อง

Windows มีอินเทอร์เฟซบริการ DNS หลายแบบ ผู้ดูแลระบบสามารถจัดการบริการผ่าน: บริการ การแก้ไขปัญหา DNS ส่วนใหญ่เกิดขึ้นในคอนโซล แต่ ตัวจัดการ DNS คอนโซล คอนโซลนี้เปิดใช้งานการจัดการโซน แสดงระเบียนทรัพยากร และแก้ไขการตั้งค่าบริการ เช่น การกำจัดและการส่งต่อ โซนที่รวม AD ช่วยปรับปรุงความปลอดภัยและประสิทธิภาพของการจำลองโซน DNS และเปิดใช้งานการรวมที่เข้มงวดยิ่งขึ้นระหว่าง DNS และ DHCP ดังนั้น อย่าลืมตรวจสอบการจำลอง AD และการตั้งค่า DHCP ในขณะที่แก้ไขปัญหา DNS

สรุป

เซิร์ฟเวอร์ DNS ให้บริการที่สำคัญที่สุดอย่างหนึ่งในเครือข่าย การแก้ไขชื่อทำให้ผู้ใช้สามารถทำงานกับชื่อที่จำได้ง่าย ภายใน ระบบจะเชื่อมโยงชื่อเหล่านี้กับที่อยู่ IP ที่ TCP/IP ต้องการ บริการหลายอย่างพึ่งพา DNS รวมถึงอีเมล การท่องเว็บ การแชร์ไฟล์ การแชร์เครื่องพิมพ์ และ AD

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