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

วิธีการตั้งค่าเซิร์ฟเวอร์ 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

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