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

วิธีการติดตั้งและกำหนดค่า 'แคชเซิร์ฟเวอร์ DNS เท่านั้น' ด้วย 'ไม่ถูกผูกไว้' ใน RHEL/CentOS 7


การแคชเนมเซิร์ฟเวอร์โดยใช้ 'Unbound' (เป็นซอฟต์แวร์เซิร์ฟเวอร์ DNS ที่ใช้ตรวจสอบ เรียกซ้ำ และแคช) ย้อนกลับไปใน RHEL/CentOS 6.x (โดยที่ x คือหมายเลขเวอร์ชัน) เราใช้ bind ซอฟต์แวร์เพื่อกำหนดค่าเซิร์ฟเวอร์ DNS

ในบทความนี้ เราจะใช้ซอฟต์แวร์แคช 'unbound' เพื่อติดตั้งและกำหนดค่าเซิร์ฟเวอร์ DNS ในระบบ RHEL/CentOS 7

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

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

การตั้งค่าเซิร์ฟเวอร์และไคลเอนต์ของฉัน

เพื่อจุดประสงค์ในการสาธิต ฉันจะใช้สองระบบ ระบบแรกจะทำหน้าที่เป็นเซิร์ฟเวอร์ Master (Primary) DNS และระบบที่สองจะทำหน้าที่เป็น DNS client ภายในเครื่อง แข็งแกร่ง>.

เซิร์ฟเวอร์ DNS หลัก
Operating System   :    CentOS Linux release 7.0.1406 (Core)
IP Address	   :	192.168.0.50
Host-name	   :	ns.tecmintlocal.com
เครื่องไคลเอนต์
Operating System   :	CentOS 6
IP Address	   :	192.168.0.100
Host-name	   :	client.tecmintlocal.com

ขั้นตอนที่ 1: ตรวจสอบชื่อโฮสต์และ IP ของระบบ

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

2. หลังจากนั้น ตั้งค่าชื่อโฮสต์และที่อยู่ IP แบบคงที่ให้ถูกต้อง คุณสามารถตรวจสอบได้โดยใช้คำสั่งต่อไปนี้

hostnamectl
ip addr show | grep inet

ขั้นตอนที่ 2: การติดตั้งและการกำหนดค่า Unbound

3. ก่อนที่จะติดตั้งแพ็คเกจ 'Unbound' เราต้องอัปเดตระบบของเราเป็นเวอร์ชันล่าสุด หลังจากนั้นเราจึงจะสามารถติดตั้งแพ็คเกจ Unbound ได้

yum update -y
yum install unbound -y

4. หลังจากติดตั้งแพ็คเกจแล้ว ให้ทำสำเนาของไฟล์การกำหนดค่าที่ยังไม่ได้ผูกไว้ก่อนที่จะทำการเปลี่ยนแปลงกับไฟล์ต้นฉบับ

cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.original

5. จากนั้น ใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบเพื่อเปิดและแก้ไขไฟล์การกำหนดค่า 'unbound.conf'

vim /etc/unbound/unbound.conf

เมื่อเปิดไฟล์เพื่อแก้ไขแล้ว ให้ทำการเปลี่ยนแปลงต่อไปนี้:

อินเทอร์เฟซ

ค้นหา อินเทอร์เฟซ และเปิดใช้งานอินเทอร์เฟซที่เราจะใช้ หรือหากเซิร์ฟเวอร์ของเรามีหลายอินเทอร์เฟซ เราจะต้องเปิดใช้งาน อินเทอร์เฟซ 0.0.0.0

ที่นี่ IP เซิร์ฟเวอร์ของเราคือ 192.168.0.50 ดังนั้น ฉันจะใช้ unbound ในอินเทอร์เฟซนี้

Interface 192.168.0.50
เปิดใช้งาน IPv4 และรองรับโปรโตคอล

ค้นหาสตริงต่อไปนี้และทำให้เป็น 'ใช่'

do-ip4: yes
do-udp: yes
do-tcp: yes
เปิดใช้งานการบันทึก

หากต้องการเปิดใช้งานบันทึก ให้เพิ่มตัวแปรตามด้านล่าง ซึ่งจะบันทึกทุกกิจกรรมที่ไม่ถูกผูกไว้

logfile: /var/log/unbound
ซ่อนข้อมูลประจำตัวและเวอร์ชัน

เปิดใช้งานพารามิเตอร์ต่อไปนี้เพื่อซ่อนข้อความค้นหา id.server และ hostname.bind

hide-identity: yes

เปิดใช้งานพารามิเตอร์ต่อไปนี้เพื่อซ่อนข้อความค้นหา version.server และ version.bind

hide-version: yes
การควบคุมการเข้าถึง

จากนั้นค้นหา access-control เพื่ออนุญาต นี่เป็นการอนุญาตให้ไคลเอ็นต์ใดได้รับอนุญาตให้สอบถามเซิร์ฟเวอร์ที่ไม่ถูกผูกไว้นี้

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

access-control: 0.0.0.0/0 allow

หมายเหตุ: แทนที่จะอนุญาต เราสามารถแทนที่มันด้วย allow_snoop ซึ่งจะเปิดใช้งานพารามิเตอร์เพิ่มเติมบางอย่าง เช่น dig และ รองรับทั้งแบบเรียกซ้ำและไม่เรียกซ้ำ

โดเมนไม่ปลอดภัย

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

domain-insecure: "tecmintlocal.com
โซนข้างหน้า

จากนั้นเปลี่ยน ตัวส่งต่อ สำหรับคำค้นหาที่เราร้องขอซึ่งเซิร์ฟเวอร์นี้ไม่สามารถตอบสนองได้ โดยจะส่งต่อไปยังโดเมนราก (. ) และแก้ไขคำค้นหา

forward-zone:
        name: "."
        forward-addr: 8.8.8.8
        forward-addr: 8.8.4.4

สุดท้าย ให้บันทึกและออกจากไฟล์การกำหนดค่าโดยใช้ wq!

6. หลังจากทำการกำหนดค่าข้างต้นแล้ว ให้ตรวจสอบไฟล์ unbound.conf เพื่อหาข้อผิดพลาดใดๆ โดยใช้คำสั่งต่อไปนี้

unbound-checkconf /etc/unbound/unbound.conf

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

systemctl start unbound.service
sudo systemctl enable unbound.service

ขั้นตอนที่ 3: ทดสอบแคช DNS ในเครื่อง

8. ตอนนี้ถึงเวลาตรวจสอบแคช DNS ของเราแล้ว โดยทำการ 'เจาะ' (สอบถาม) โดเมน 'india.com' หนึ่งโดเมน ในตอนแรกผลลัพธ์ของคำสั่ง 'drill' สำหรับโดเมน 'india.com' จะใช้เวลาสองสามมิลลิวินาที จากนั้นจึงทำการเจาะลึกครั้งที่สองและมีหมายเหตุเกี่ยวกับ เวลาสืบค้น ใช้เวลาในการฝึกซ้อมทั้งสองครั้ง

drill india.com @192.168.0.50

คุณเห็นในผลลัพธ์ข้างต้นหรือไม่ การสืบค้นครั้งแรกใช้เวลาเกือบ 262 มิลลิวินาที ในการแก้ไข และการสืบค้นครั้งที่สองใช้เวลา 0 มิลลิวินาที ในการแก้ไขโดเมน (india.com ข>)

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

ขั้นตอนที่ 4: ล้าง Iptables และเพิ่มกฎไฟร์วอลล์

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

iptables -F

10. หลังจากลบกฎ iptables อย่างถาวรแล้ว ตอนนี้ให้เพิ่มบริการ DNS ในรายการ ไฟร์วอลล์ อย่างถาวร

firewall-cmd --add-service=dns
firewall-cmd --add-service=dns --permanent

11. หลังจากเพิ่มกฎบริการ DNS แล้ว ให้ระบุกฎและยืนยัน

firewall-cmd --list-all

ขั้นตอนที่ 5: การจัดการและการแก้ไขปัญหา Unbound

12. หากต้องการรับสถานะเซิร์ฟเวอร์ปัจจุบัน ให้ใช้คำสั่งต่อไปนี้

unbound-control status

การทิ้งแคช DNS

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

 # unbound-control dump_cache > /tmp/DNS_cache.txt

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

unbound-control dump_cache < /tmp/DNS_cache.txt

ฟลัชชิงระเบียน DNS

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

unbound-control lookup google.com

16. บางครั้งหากเซิร์ฟเวอร์แคช DNS ของเราจะไม่ตอบคำถามของเรา ในระหว่างนี้เราสามารถใช้เพื่อล้างแคชเพื่อลบข้อมูลเช่น A, AAA , NS, SO, CNAME, MX, PTR ฯลฯ .. บันทึกจากแคช DNS เราสามารถลบข้อมูลทั้งหมดได้โดยใช้ flush_zone ซึ่งจะลบข้อมูลทั้งหมด

unbound-control flush linux-console.net
unbound-control flush_zone tecmintlocal.com

17. เพื่อตรวจสอบว่ามีการใช้การส่งต่อใดในปัจจุบันเพื่อแก้ไข

unbound-control list_forwards

ขั้นตอนที่ 6: การกำหนดค่า DNS ฝั่งไคลเอ็นต์

18. ที่นี่ ฉันใช้เซิร์ฟเวอร์ CentOS 6 เป็นเครื่องไคลเอนต์ของฉัน IP ของเครื่องนี้คือ 192.168.0.100 และฉันกำลังไป เพื่อใช้ IP เซิร์ฟเวอร์ DNS ที่ไม่ได้ผูกของฉัน (เช่น DNS หลัก) ในการกำหนดค่าอินเทอร์เฟซ

เข้าสู่ระบบเครื่องไคลเอนต์และตั้งค่า IP เซิร์ฟเวอร์ DNS หลัก เป็น IP ของเซิร์ฟเวอร์ที่ไม่ได้ผูกไว้ของเรา

เรียกใช้คำสั่งการตั้งค่าและเลือกการกำหนดค่าเครือข่ายจากผู้จัดการเครือข่าย TUI

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

Primary DNS	: 192.168.0.50
Secondary DNS	: 192.168.0.50

คลิก ตกลง –> บันทึก&ออก –> ออก

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

/etc/init.d/network restart

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

elinks aol.com
dig aol.com

บทสรุป

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