ค้นหาเว็บไซต์

วิธีการตั้งค่า Local DNS โดยใช้ไฟล์ /etc/hosts ใน Linux


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

บทความนี้จะอธิบายวิธีการตั้งค่า DNS ในเครื่องโดยใช้ไฟล์โฮสต์ (/etc/hosts) ในระบบ Linux สำหรับการแก้ไขโดเมนในเครื่องหรือทดสอบเว็บไซต์ก่อนที่จะเผยแพร่

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

/etc/hosts เป็นไฟล์ระบบปฏิบัติการที่แปลชื่อโฮสต์หรือชื่อโดเมนเป็นที่อยู่ IP สิ่งนี้มีประโยชน์สำหรับการทดสอบการเปลี่ยนแปลงเว็บไซต์หรือการตั้งค่า SSL ก่อนที่จะเผยแพร่เว็บไซต์สู่สาธารณะ

โปรดทราบ: วิธีนี้จะใช้ได้เฉพาะในกรณีที่โฮสต์มีที่อยู่ IP แบบคงที่ ดังนั้นตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าที่อยู่ IP แบบคงที่สำหรับโฮสต์ Linux หรือโหนดที่ใช้ระบบปฏิบัติการอื่น

เพื่อวัตถุประสงค์ของบทความนี้ เราจะใช้โดเมน ชื่อโฮสต์ และที่อยู่ IP ต่อไปนี้ (ใช้ค่าที่ใช้กับการตั้งค่าท้องถิ่นของคุณ)

Domain:     tecmint.lan
Host 1:     ubuntu.tecmint.lan	 192.168.56.1
Host 2:     centos.tecmint.lan	 192.168.56.10

ทำความเข้าใจการสลับบริการชื่อใน Linux

ก่อนที่จะดำเนินการใดๆ เพิ่มเติม คุณควรทำความเข้าใจบางสิ่งเกี่ยวกับไฟล์สำคัญอื่นซึ่งก็คือ /etc/nsswitch.conf มีฟังก์ชัน สวิตช์บริการชื่อ ซึ่งควบคุมลำดับการสอบถามบริการสำหรับการค้นหาบริการชื่อ

การกำหนดค่าจะขึ้นอยู่กับคำสั่งซื้อ หากไฟล์อยู่ก่อน DNS หมายความว่าระบบจะค้นหาไฟล์ /etc/hosts ก่อนที่จะตรวจสอบ DNS สำหรับคำขอบริการชื่อ แต่ถ้า DNS อยู่ก่อนไฟล์ กระบวนการค้นหาโดเมนจะปรึกษา DNS ก่อนบริการหรือไฟล์ที่เหมาะสมอื่นๆ

ในสถานการณ์สมมตินี้ เราต้องการสอบถามบริการ “ไฟล์” หากต้องการตรวจสอบคำสั่งซื้อ ให้พิมพ์

cat /etc/nsswitch.conf
OR
grep hosts /etc/nsswitch.conf

กำหนดค่า DNS ภายในเครื่องโดยใช้ไฟล์ /etc/hosts ใน Linux

ตอนนี้ให้เปิดไฟล์ /etc/hosts โดยใช้โปรแกรมแก้ไขที่คุณเลือกดังต่อไปนี้

sudo vi /etc/hosts

จากนั้นเพิ่มบรรทัดด้านล่างที่ส่วนท้ายของไฟล์ดังที่แสดงในภาพหน้าจอด้านล่าง

192.168.56.1   ubuntu.tecmint.lan
192.168.56.10  centos.tecmint.lan

จากนั้น ทดสอบว่าทุกอย่างทำงานได้ดีตามที่คาดไว้หรือไม่ โดยใช้ คำสั่ง ping จาก โฮสต์ 1 คุณสามารถ ping โฮสต์ 2 โดยใช้ชื่อโดเมนได้ เช่น ดังนั้น.

ping -c 4 centos.tecmint.lan 
OR
ping -c 4 centos

ใน โฮสต์ 2 เรามีการตั้งค่าเซิร์ฟเวอร์ Apache HTTP ดังนั้นเราจึงสามารถทดสอบได้ว่าบริการแปลชื่อทำงานดังนี้หรือไม่โดยไปที่ URL http://centos.tecmint.lan

ข้อสำคัญ: หากต้องการใช้ชื่อโดเมนบนโฮสต์ใดๆ บนเครือข่าย คุณต้องกำหนดการตั้งค่าข้างต้นในไฟล์ /etc/hosts

สิ่งนี้หมายความว่าอย่างไร ในตัวอย่างข้างต้น เราได้กำหนดค่าเฉพาะไฟล์โฮสต์ของ โฮสต์ 1 และเราสามารถใช้ได้เฉพาะชื่อโดเมนบนไฟล์นั้นเท่านั้น หากต้องการใช้ชื่อเดียวกันบน โฮสต์ 2 เราต้องเพิ่มที่อยู่และชื่อลงในไฟล์โฮสต์ด้วย

สุดท้าย คุณควรใช้คำสั่งโฮสต์หรือคำสั่ง nslookup เพื่อทดสอบว่าบริการแปลชื่อใช้งานได้จริงหรือไม่ คำสั่งเหล่านี้จะค้นหาเฉพาะ DNS และมองข้ามการกำหนดค่าใดๆ ใน /etc/hosts และ /etc/nsswitch .conf ไฟล์

คุณอาจต้องการอ่านบทความที่เกี่ยวข้องต่อไปนี้

  1. ติดตั้งและกำหนดค่าเซิร์ฟเวอร์ DNS สำหรับแคชเท่านั้นใน RHEL/CentOS 7
  2. ตั้งค่าเซิร์ฟเวอร์ DNS แคชแบบเรียกซ้ำขั้นพื้นฐานและกำหนดค่าโซนสำหรับโดเมน
  3. 8 คำสั่ง Linux Nslookup เพื่อแก้ไขปัญหา DNS (เซิร์ฟเวอร์ชื่อโดเมน)
  4. ตัวอย่างคำสั่ง 'โฮสต์' ที่เป็นประโยชน์สำหรับการสืบค้นการค้นหา DNS

แค่นั้นแหละ! แบ่งปันความคิดหรือคำถามเพิ่มเติมใด ๆ เกี่ยวกับหัวข้อนี้กับเราผ่านส่วนความคิดเห็นด้านล่าง