วิธีการตั้งค่าเซิร์ฟเวอร์ DNS/DHCP โดยใช้ dnsmasq บน CentOS/RHEL 8/7
เซิร์ฟเวอร์ Dynamic Host Configuration Protocol (DHCP) กำหนดที่อยู่ IP และพารามิเตอร์การกำหนดค่าเครือข่ายอื่นๆ แบบไดนามิกให้กับแต่ละอุปกรณ์บนเครือข่าย ตัวส่งต่อ DNS บน LAN ส่งต่อการสืบค้น DNS สำหรับชื่อโดเมนที่ไม่ใช่ในเครื่องไปยังเซิร์ฟเวอร์ DNS อัปสตรีม (นอกเครือข่ายนั้น) เซิร์ฟเวอร์แคช DNS ตอบกลับคำขอแบบเรียกซ้ำจากไคลเอนต์เพื่อให้สามารถแก้ไขการสืบค้น DNS ได้เร็วขึ้น ซึ่งจะช่วยปรับปรุงความเร็วในการค้นหา DNS ไปยังไซต์ที่เยี่ยมชมก่อนหน้านี้
dnsmasq เป็นระบบย่อยโฆษณาเราเตอร์สำหรับเครือข่ายขนาดเล็กที่มีน้ำหนักเบาและง่ายต่อการกำหนดค่า DNS Forwarder, ซอฟต์แวร์เซิร์ฟเวอร์ DHCP และระบบย่อยโฆษณาเราเตอร์สำหรับเครือข่ายขนาดเล็ก Dnsmasq รองรับ Linux, *BSD, Mac OS X และ Android
มีระบบย่อย DNS ที่ให้บริการเซิร์ฟเวอร์ DNS ในเครื่องสำหรับเครือข่าย พร้อมการส่งต่อประเภทการสืบค้นทั้งหมดไปยังเซิร์ฟเวอร์ DNS แบบเรียกซ้ำต้นน้ำ และการแคชประเภทบันทึกทั่วไป ระบบย่อย DHCP รองรับ DHCPv4, DHCPv6, BOOTP, PXE และเซิร์ฟเวอร์ TFTP และระบบย่อยโฆษณาเราเตอร์รองรับการกำหนดค่าอัตโนมัติขั้นพื้นฐานสำหรับโฮสต์ IPv6
ในบทความนี้ เราจะแนะนำวิธีการติดตั้งและตั้งค่าเซิร์ฟเวอร์ DNS/DHCP โดยใช้ dnsmasq บน CentOS/RHEL 8/7 การแจกแจง
การติดตั้ง DNSmasq ใน CentOS และ RHEL Linux
1. แพ็คเกจ dnsmasq มีอยู่ในที่เก็บเริ่มต้น และสามารถติดตั้งได้อย่างง่ายดายโดยใช้ตัวจัดการแพ็คเกจ YUM ดังที่แสดง
yum install dnsmasq
2. เมื่อการติดตั้งแพ็คเกจ dnsmasq เสร็จสมบูรณ์ คุณจะต้องเริ่มบริการ dnsmasq ในตอนนี้ และเปิดใช้งานให้เริ่มโดยอัตโนมัติเมื่อบูตระบบ นอกจากนี้ ให้ตรวจสอบสถานะเพื่อให้แน่ใจว่ามันเปิดใช้งานอยู่โดยใช้คำสั่ง systemctl ต่อไปนี้
systemctl start dnsmasq
systemctl enable dnsmasq
systemctl status dnsmasq
การกำหนดค่าเซิร์ฟเวอร์ dnsmasq ใน CentOS และ RHEL Linux
3. เซิร์ฟเวอร์ dnsmasq สามารถกำหนดค่าได้ผ่านไฟล์ /etc/dnsmasq.conf (ซึ่งประกอบด้วยตัวเลือกที่มีการแสดงความคิดเห็นและอธิบายไว้อย่างดี) และผู้ใช้ ไฟล์การกำหนดค่าที่กำหนดไว้สามารถเพิ่มลงในไดเร็กทอรี /etc/dnsmasq.d ได้
DNS ถูกเปิดใช้งานตามค่าเริ่มต้น ดังนั้นก่อนทำการเปลี่ยนแปลงใดๆ ตรวจสอบให้แน่ใจว่าได้สร้างการสำรองข้อมูลของไฟล์ /etc/dnsmasq.conf
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
4. ตอนนี้ให้เปิดไฟล์ /etc/dnsmasq.conf โดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบ และทำการตั้งค่าที่แนะนำต่อไปนี้
vi /etc/dnsmasq.conf
listen-address
ตัวเลือกนี้ใช้เพื่อตั้งค่าที่อยู่ IP โดยที่ dnsmasq จะรับฟัง หากต้องการใช้เซิร์ฟเวอร์ CentOS/RHEL ของคุณเพื่อฟังคำขอ DHCP และ DNS บน LAN ให้ตั้งค่า listen-address
ไปยังที่อยู่ IP ของ LAN (อย่าลืมรวม 127.0.0.1) ตามที่แสดง โปรดทราบว่า IP ของเซิร์ฟเวอร์ต้องเป็นแบบคงที่
listen-address=::1,127.0.0.1,192.168.56.10
เกี่ยวข้องกับที่กล่าวมาข้างต้น คุณสามารถจำกัดอินเทอร์เฟซที่ dnsmasq ฟังโดยใช้ตัวเลือกอินเทอร์เฟซ (เพิ่มบรรทัดเพิ่มเติมสำหรับอินเทอร์เฟซมากกว่าหนึ่งรายการ)
interface=eth0
5. หากคุณต้องการให้ โดเมน (ซึ่งคุณสามารถตั้งค่าตามที่แสดงถัดไป) เพิ่มลงในชื่อธรรมดาในไฟล์โฮสต์โดยอัตโนมัติ ให้ยกเลิกการใส่เครื่องหมายข้อคิดเห็น expand- ตัวเลือกโฮสต์
expand-hosts
6. ในการตั้งค่าโดเมนสำหรับ dnsmasq ซึ่งหมายความว่าไคลเอนต์ DHCP จะมีชื่อโดเมนแบบเต็มตราบใดที่โดเมนที่ตั้งไว้ตรงกัน และตั้งค่า “โดเมน ” ตัวเลือก DHCP สำหรับไคลเอนต์ทั้งหมด
domain=tecmint.lan
7. ถัดไป ให้กำหนดเซิร์ฟเวอร์ DNS อัปสตรีมสำหรับโดเมนที่ไม่ใช่ภายในเครื่องโดยใช้ตัวเลือก เซิร์ฟเวอร์ (ในรูปแบบ server=dns_server_ip) ดังที่แสดง .
Google's nameservers
server=8.8.8.8
server=8.8.4.4
8. จากนั้น คุณสามารถบังคับโดเมนท้องถิ่นของคุณให้เป็นที่อยู่ IP โดยใช้ตัวเลือก ที่อยู่ ตามที่แสดง
address=/tecmint.lan/127.0.0.1
address=/tecmint.lan/192.168.56.10
9. บันทึกไฟล์และตรวจสอบไวยากรณ์ของไฟล์การกำหนดค่าเพื่อหาข้อผิดพลาดดังที่แสดง
dnsmasq --test
การกำหนดค่า dnsmasq ด้วยไฟล์ /etc/resolv.conf
10. ในขั้นตอนนี้ คุณต้องทำให้การสืบค้นทั้งหมดถูกส่งไปยัง dnsmasq โดยการเพิ่มที่อยู่ localhost เป็นเนมเซิร์ฟเวอร์เดียวในไฟล์ /etc/resolv.conf
vi /etc/resolv.conf
11. ไฟล์ /etc/resolv.conf ได้รับการดูแลโดย daemon ในเครื่อง โดยเฉพาะ NetworkManager ดังนั้นการเปลี่ยนแปลงที่ผู้ใช้ทำจะถูกเขียนทับ เพื่อป้องกันสิ่งนี้ ให้ป้องกันการเขียนโดยการตั้งค่าแอตทริบิวต์ไฟล์ที่ไม่เปลี่ยนรูป (ปิดใช้งานการเข้าถึงการเขียนไฟล์) โดยใช้คำสั่ง chattr ดังที่แสดง
chattr +i /etc/resolv.conf
lsattr /etc/resolv.conf
การกำหนดโฮสต์ DNS และชื่อ
12. Dnsmasq อ่านโฮสต์ DNS และชื่อทั้งหมดจากไฟล์ /etc/hosts ดังนั้นให้เพิ่มที่อยู่ IP และคู่ชื่อโฮสต์ DNS ของคุณ ตามที่ปรากฏ.
127.0.0.1 dnsmasq
192.168.56.10 dnsmasq
192.168.56.1 gateway
192.168.56.100 maas-controller
192.168.56.20 nagios
192.168.56.25 webserver1
ข้อสำคัญ: ชื่อ DNS ภายในเครื่องสามารถกำหนดได้โดยการนำเข้าชื่อจากระบบย่อย DHCP หรือโดยการกำหนดค่าประเภทบันทึกที่มีประโยชน์หลายประเภท
13. หากต้องการใช้การเปลี่ยนแปลงข้างต้น ให้เริ่มบริการ dnsmasq ใหม่ดังที่แสดง
systemctl restart dnsmasq
14. หากคุณมีบริการ ไฟร์วอลล์ ทำงานอยู่ คุณจะต้องเปิดบริการ DNS และ DHCP ในการกำหนดค่าไฟร์วอลล์ เพื่ออนุญาตให้คำขอจากโฮสต์บน LAN ของคุณส่งผ่านไปยังเซิร์ฟเวอร์ dnsmasq
firewall-cmd --add-service=dns --permanent
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload
การทดสอบ DNS ในเครื่อง
15. เพื่อทดสอบว่าเซิร์ฟเวอร์ DNS ภายในเครื่องหรือการส่งต่อทำงานได้ดีหรือไม่ คุณต้องใช้เครื่องมือ เช่น dig หรือ nslookup เพื่อทำการสืบค้น DNS เครื่องมือเหล่านี้มาจากแพ็กเกจ bind-utils ซึ่งอาจไม่ได้ติดตั้งไว้ล่วงหน้าบน CentOS/RHEL 8 แต่คุณสามารถติดตั้งได้ตามที่แสดง
yum install bind-utils
16. เมื่อคุณติดตั้งแล้ว คุณสามารถเรียกใช้แบบสอบถามง่ายๆ บนโดเมนท้องถิ่นของคุณดังที่แสดง
dig tecmint.lan
OR
nslookup tecmint.lan
17. คุณยังสามารถลองค้นหา FQDN ของเซิร์ฟเวอร์ตัวใดตัวหนึ่งได้
dig webserver1.tecmint.lan
OR
nslookup webserver1.tecmint.lan
18. หากต้องการทดสอบการค้นหา IP แบบย้อนกลับ ให้รันคำสั่งที่คล้ายกัน
dig -x 192.168.56.25
OR
nslookup 192.168.56.25
เปิดใช้งานเซิร์ฟเวอร์ DHCP โดยใช้ dnsmasq
19. คุณสามารถเปิดใช้งานเซิร์ฟเวอร์ DHCP ได้โดยยกเลิกการใส่หมายเหตุตัวเลือก dhcp-range
และระบุช่วงของที่อยู่ที่มีให้เช่าและอาจระบุเวลาการเช่าก็ได้ เช่น (ทำซ้ำมากกว่าหนึ่งเครือข่าย)
dhcp-range=192.168.0.50,192.168.0.150,12h
20. ตัวเลือกต่อไปนี้จะกำหนดตำแหน่งที่เซิร์ฟเวอร์ DHCP จะเก็บฐานข้อมูลการเช่า ซึ่งจะช่วยให้คุณตรวจสอบที่อยู่ IP ที่ได้รับการกำหนดได้อย่างง่ายดาย
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases
21. หากต้องการให้เซิร์ฟเวอร์ DHCP เข้าสู่โหมดที่เชื่อถือได้ ให้ยกเลิกการใส่เครื่องหมายข้อคิดเห็นตัวเลือก
dhcp-authoritative
22. บันทึกไฟล์และรีสตาร์ทบริการ dnsmasq เพื่อใช้การเปลี่ยนแปลงล่าสุด
systemctl restart dnsmasq
นั่นนำเราไปสู่จุดสิ้นสุดของคู่มือนี้ หากต้องการติดต่อเราหากมีคำถามหรือความคิดเห็นที่คุณต้องการแชร์เกี่ยวกับคู่มือนี้ ให้ใช้แบบฟอร์มคำติชมด้านล่าง