วิธีการตั้งค่า 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 ไฟล์
คุณอาจต้องการอ่านบทความที่เกี่ยวข้องต่อไปนี้
- ติดตั้งและกำหนดค่าเซิร์ฟเวอร์ DNS สำหรับแคชเท่านั้นใน RHEL/CentOS 7
- ตั้งค่าเซิร์ฟเวอร์ DNS แคชแบบเรียกซ้ำขั้นพื้นฐานและกำหนดค่าโซนสำหรับโดเมน
- 8 คำสั่ง Linux Nslookup เพื่อแก้ไขปัญหา DNS (เซิร์ฟเวอร์ชื่อโดเมน)
- ตัวอย่างคำสั่ง 'โฮสต์' ที่เป็นประโยชน์สำหรับการสืบค้นการค้นหา DNS
แค่นั้นแหละ! แบ่งปันความคิดหรือคำถามเพิ่มเติมใด ๆ เกี่ยวกับหัวข้อนี้กับเราผ่านส่วนความคิดเห็นด้านล่าง