การตั้งค่าแคชเซิร์ฟเวอร์ DNS ใน Ubuntu Server 14.04
บริการชื่อโดเมน (DNS) เป็นบริการตั้งชื่อที่จับคู่ที่อยู่ IP และชื่อโดเมนแบบเต็มเข้าด้วยกัน คอมพิวเตอร์ที่ใช้ DNS เรียกว่าเนมเซิร์ฟเวอร์
ที่นี่ ฉันได้ติดตั้งและกำหนดค่าเซิร์ฟเวอร์แคชโดยใช้ตัวส่งต่อ การค้นหาแบบส่งต่อ และการค้นหาแบบสำรอง ในสถานที่ส่วนใหญ่ เราต้องการการค้นหากำลังสำรอง เซิร์ฟเวอร์แคชจะไม่เก็บชื่อโดเมนใด ๆ แต่จะทำงานเป็นเซิร์ฟเวอร์พอยต์เท่านั้น ก่อนที่จะเจาะลึกเราจำเป็นต้องรู้เกี่ยวกับเซิร์ฟเวอร์ DNS และวิธีการทำงาน
DNS คืออะไร?
นี่เป็นวิธีง่ายๆ ในการทำความเข้าใจ DNS และวิธีการทำงาน
หากเราจำเป็นต้องเข้าถึง linux-console.net ในเบราว์เซอร์ ระบบจะค้นหา linux-console.net ที่ส่วนท้ายของ .com จะมี (.) แล้วนี่คืออะไร ?
(.) แสดงถึงเนมสเปซเซิร์ฟเวอร์รูท มีเซิร์ฟเวอร์รูททั้งหมด 13 เซิร์ฟเวอร์ที่พร้อมใช้งานทั่วโลก ขณะที่เราเข้าถึง linux-console.net ระบบจะถามชื่อเซิร์ฟเวอร์ตามการกำหนดค่าระบบปฏิบัติการ ใน Ubuntu เราเคยกำหนดค่าเนมเซิร์ฟเวอร์ใน /etc/resolv.conf ในขณะที่เข้าถึง linux-console.net เบราว์เซอร์ของฉันจะถามถึงรูทเนมเซิร์ฟเวอร์ ถ้าเนมเซิร์ฟเวอร์รูทไม่ทำ มีข้อมูลโดเมนที่ฉันร้องขอ มันจะแคชข้อมูลที่ร้องขอของฉันและส่งต่อคำขอของฉันไปยัง (TLD) โดเมนระดับบนสุด เนมเซิร์ฟเวอร์ แม้ในเซิร์ฟเวอร์ชื่อ TLD คำขอของฉันก็ไม่ใช่ พร้อมใช้งาน โดยจะถูกแคชและส่งต่อไปยังเนมเซิร์ฟเวอร์ ผู้มีอำนาจ
ในขณะที่การจดทะเบียนโดเมน ผู้ลงทะเบียนโดเมนของเราจะกำหนดว่าโดเมนของเราควรใช้เนมเซิร์ฟเวอร์ที่เชื่อถือได้ใด ดังนั้น เนมเซิร์ฟเวอร์ที่เชื่อถือได้จะมีข้อมูลโดเมนของเรา ในขณะที่คำขอของเราไปถึง ANS ก็จะตอบกลับการสืบค้นที่ linux-console.net มี 111.111.222.1 ในเวลาเดียวกัน แคชไว้ในเนมเซิร์ฟเวอร์ที่เชื่อถือได้และส่งคำขอกลับไปยังเบราว์เซอร์ ทุกขั้นตอนข้างต้นเสร็จสิ้นภายในมิลลิวินาที
หวังว่าตอนนี้คุณคงเข้าใจแล้วว่า DNS คืออะไร และมันทำงานอย่างไร ตอนนี้ให้เราตั้งค่า แคชเซิร์ฟเวอร์ DNS ใน Ubuntu Server 14.04 LTS
ขั้นตอนที่ 1: การติดตั้งเซิร์ฟเวอร์ DNS
ขั้นแรก โปรดดูข้อมูลเซิร์ฟเวอร์ DNS ในเครื่องของฉัน เช่น ที่อยู่ IP แบบคงที่และชื่อโฮสต์ ซึ่งใช้เพื่อจุดประสงค์ในบทความนี้
IP Address: 192.168.0.100
Hostname: dns.tecmintlocal.com
เพื่อตรวจสอบว่าการตั้งค่าข้างต้นถูกต้อง เราสามารถใช้คำสั่ง 'hostnamectl' และ 'ifconfig'
hostnamectl
ifconfig eth0 | grep inet
ต่อไป เราจะอัปเดตพื้นที่เก็บข้อมูลเริ่มต้นและดำเนินการอัปเกรดระบบ ก่อนที่จะตั้งค่าเซิร์ฟเวอร์แคช DNS
sudo apt-get update && sudo apt-get upgrade -y
ตอนนี้ ให้ติดตั้งแพ็คเกจ DNS bind และ dnsutils โดยใช้คำสั่งต่อไปนี้
sudo apt-get install bind9 dnsutils -y
เมื่อติดตั้ง DNS แล้ว ให้ย้ายไปยังไดเร็กทอรีการกำหนดค่าการเชื่อมโยงภายใต้ /etc/bind
/etc/bind/
ls -l
ขั้นตอนที่ 2: การตั้งค่าเซิร์ฟเวอร์แคช DNS
ก่อนอื่น เราตั้งค่าและกำหนดค่าเซิร์ฟเวอร์แคชที่นี่ เปิดและแก้ไขไฟล์ named.conf.options โดยใช้โปรแกรมแก้ไข vim
sudo vim named.conf.options
ตอนนี้ คำว่า 'ผู้ส่งต่อ' ใช้เพื่อแคชคำขอชื่อโดเมน ดังนั้น เราจะใช้เราเตอร์ของฉันเป็นตัวส่งต่อ ยกเลิกการใส่เครื่องหมาย // ที่อยู่ด้านหน้าบรรทัดตามที่แสดงในภาพ
forwarders {
192.168.0.1;
};
บันทึกและออกจากไฟล์โดยใช้ wq! ตอนนี้ถึงเวลาที่จะเริ่มเซิร์ฟเวอร์การผูกสำหรับการทดสอบเล็กๆ น้อยๆ
sudo /etc/init.d/bind9 start
หากเราต้องทดสอบว่าแคชทำงานหรือไม่ เราสามารถใช้ คำสั่ง dig และตรวจสอบว่าแคชทำงานหรือไม่
ตัวอย่างเช่น เราจะขุด ubuntu.com ตอนนี้ ในตอนแรกมันจะไม่เป็นแคช ดังนั้นอาจใช้เวลาสักครู่หนึ่งมิลลิวินาที เมื่อแคชแล้ว มันจะเร็วปานสายฟ้า
dig @127.0.0.1 ubuntu.com
คำสั่ง dig เป็นเครื่องมือสำหรับการค้นหา DNS หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง Dig โปรดอ่านหัวข้อด้านล่าง
- 10 ตัวอย่างคำสั่ง Dig ที่เป็นประโยชน์
ในภาพด้านบนนี้ ในตอนแรกที่ขุดใช้เวลา 1965 มิลลิวินาทีในการสืบค้น และแสดงว่า ipaddress ใดที่เชื่อมโยงกับ ubuntu.com
ให้เราลองขุดอีกครั้งและดูเวลาสืบค้น
เจ๋ง! ในการลองครั้งที่สองเราได้รับข้อความค้นหาภายใน 5 มิลลิวินาที หวังว่าคุณจะรู้ว่าเซิร์ฟเวอร์แคชคืออะไรตอนนี้ ภาพด้านบนแสดงให้เห็นว่าเซิร์ฟเวอร์รูททั้งหมด 13 กำลังแคช Ubuntu.com เนื่องจากมีผู้คนนับล้านเข้าถึงเว็บไซต์อย่างเป็นทางการของ Ubuntu แล้ว
ขั้นตอนที่ 3: การตั้งค่าเซิร์ฟเวอร์ DNS หลัก
สร้าง MASTER DNS Server ฉันกำลังกำหนดชื่อโดเมนเป็น tecmintlocal.com แก้ไขไฟล์ named.conf.local โดยใช้ vim editor
sudo vim /etc/bind/named.conf.local
ป้อนรายการ DNS-Master ดังที่แสดงด้านล่าง
zone "tecmintlocal.com" {
type master;
file "/etc/bind/db.tecmintlocal.com";
};
- โซน: รายละเอียดโฮสต์ในโดเมน
.
- ประเภท: DNS หลัก
- ไฟล์: ตำแหน่งในการจัดเก็บข้อมูลโซน
สร้างไฟล์โซน db.tecmintlocal.com (การค้นหาล่วงหน้า) จากการทำสำเนาจาก db.local
sudo cp db.local db.tecmintlocal.com
ตอนนี้เปิดและแก้ไขไฟล์โซนที่คัดลอกโดยใช้โปรแกรมแก้ไขเป็นกลุ่ม
sudo vim db.tecmintlocal.com
จากนั้น ให้เพิ่มรายการตัวอย่างต่อไปนี้ ซึ่งฉันได้ใช้เพื่อวัตถุประสงค์ในการสอน ฉันใช้แบบเดียวกันนี้กับการตั้งค่าเครื่องเสมือนอื่นๆ ด้วย แก้ไขรายการด้านล่างตามความต้องการของคุณ
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA tecmintlocal.com. root.tecmintlocal.com. (
2014082801 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.tecmintlocal.com.
ns IN A 192.168.0.100
clt1 IN A 192.168.0.111
ldap IN A 192.168.0.200
ldapc IN A 192.168.0.211
mail IN CNAME clt1.tecmintlocal.com.
บันทึกและออกจากไฟล์โดยใช้ wq!
สุดท้ายให้รีสตาร์ทบริการผูก DNS โดยใช้คำสั่งด้านล่าง
sudo service bind9 restart
เราจำเป็นต้องยืนยันว่าการตั้งค่าโซนด้านบนของเราใช้งานได้หรือไม่ ให้เราตรวจสอบโดยใช้คำสั่ง dig รันคำสั่งดังต่อไปนี้จากแบบสอบถาม localhost
dig @127.0.0.1 mail.tecmintlocal.com
มา ping และทดสอบ clt1.tecmintlocal.com กัน ก่อนหน้านั้นเราจำเป็นต้องเปลี่ยนรายการเซิร์ฟเวอร์ DNS เป็น localhost ในเครื่องเซิร์ฟเวอร์ DNS ของเรา และรีสตาร์ทเครือข่ายเพื่อให้มีผล .
เปิดและแก้ไขการตั้งค่าอินเทอร์เฟซเครือข่ายและป้อนรายการ DNS
sudo vim /etc/network/interfaces
เปลี่ยนรายการ DNS ในอินเทอร์เฟซดังต่อไปนี้
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
network 192.168.0.0
broadcast 192.168.0.255
dns-nameservers 127.0.0.1
dns-search tecmintlocal.com
หลังจากเพิ่มรายการแล้ว ให้รีสตาร์ทเครือข่ายโดยใช้คำสั่งต่อไปนี้
sudo ifdown eth0 && sudo ifup eth0
หากการรีสตาร์ทเครือข่ายไม่มีผล เราต้องทำการรีสตาร์ท ตอนนี้เรามา ping และตรวจสอบ clt1.tecmintlocal.com ในขณะที่มันตอบกลับ เราจำเป็นต้องได้รับที่อยู่ IP ที่เรากำหนดไว้สำหรับชื่อโฮสต์ clt1
ping clt1.tecmintlocal.com -c 3
การตั้งค่าการค้นหา DNS แบบย้อนกลับ
เปิดและแก้ไขไฟล์ named.conf.local อีกครั้ง
sudo vim /etc/bind/named.conf.local
ตอนนี้เพิ่มรายการค้นหา DNS แบบย้อนกลับต่อไปนี้ดังที่แสดง
zone "0.168.192.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.tecmintlocal192";
};
บันทึกและออกจากไฟล์โดยใช้ wq! ตอนนี้ให้สร้างไฟล์ db.tecmintlocal192 ตามที่ฉันได้กล่าวถึงในไฟล์หลักด้านบนสำหรับการค้นหาแบบย้อนกลับ ให้คัดลอก db.127 ไปที่ db.tecmintlocal192 โดยใช้คำสั่งต่อไปนี้
sudo cp db.127 db.tecmintlocal192
ตอนนี้ ให้เปิดและแก้ไขไฟล์ db.tecmintlocal192 เพื่อตั้งค่าการค้นหาแบบย้อนกลับ
sudo vim db.tecmintlocal192
ป้อนข้อมูลต่อไปนี้ตามด้านล่าง แก้ไขรายการด้านล่างตามความต้องการของคุณ
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.tecmintlocal.com. root.tecmintlocal.com. (
2014082802 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
100 IN PTR ns.tecmintlocal.com.
111 IN PTR ctl1.tecmintlocal.com.
200 IN PTR ldap.tecmintlocal.com.
211 IN PTR ldapc.tecmintlocal.com.
เริ่มบริการผูกใหม่โดยใช้
ตอนนี้ ตรวจสอบรายการค้นหาสำรอง
host 192.168.0.111
แม้ว่าเราจะค้นหาแบบย้อนกลับโดยใช้ที่อยู่ IP ดังที่แสดงด้านบน แต่ต้องการตอบกลับด้วยชื่อตามที่แสดงไว้ด้านบน
มาตรวจสอบโดยใช้คำสั่ง dig กัน
dig clt1.tecmintlocal.com
ที่นี่ เราจะเห็น คำตอบ สำหรับ ข้อความค้นหาในส่วนคำตอบ ของเรา เนื่องจากชื่อโดเมน clt1.tecmintlocal.com มีที่อยู่ IP 192.168.0.111.
ขั้นตอนที่ 4: การตั้งค่าเครื่องไคลเอนต์
เพียงเปลี่ยนที่อยู่ IP และรายการ DNS ในเครื่องไคลเอนต์เป็นเซิร์ฟเวอร์ DNS ในพื้นที่ของเรา 192.168.0.100 หากเป็นเช่นนั้น เครื่องไคลเอนต์ของเราจะได้รับชื่อโฮสต์ที่กำหนดจากเซิร์ฟเวอร์ DNS ในพื้นที่
ให้เราตรวจสอบชื่อโฮสต์ของไคลเอนต์ของเราโดยใช้ชุดคำสั่งต่อไปนี้
ifconfig eth0 | grep inet
hostname
dig -x 192.168.0.100
ทำความเข้าใจเกี่ยวกับรายการไฟล์โซนใน DNS รูปภาพนี้จะให้คำอธิบายเล็กๆ น้อยๆ เกี่ยวกับสิ่งที่เรากำหนดไว้ในรายการไฟล์โซน
แค่นั้นแหละ! ในบทความนี้ เราได้เห็นวิธีตั้งค่าเซิร์ฟเวอร์ DNS ในเครื่องสำหรับใช้ในสำนักงานหรือที่บ้านแล้ว
ในไม่ช้าคุณสามารถอ่านบทความเกี่ยวกับวิธีแก้ปัญหาเซิร์ฟเวอร์ DNS โดยใช้เครื่องมือต่าง ๆ และแก้ไขได้ มีเครื่องมือมากมายที่ใช้ในการแก้ไขปัญหาเซิร์ฟเวอร์ DNS อ่านบทความด้านล่างเพื่อทราบเคล็ดลับการแก้ปัญหาบางประการ
8 คำสั่ง Nslookup สำหรับการแก้ไขปัญหา DNS