DNS เซิร์ฟเวอร์ (ระบบชื่อโดเมน) ช่วยให้เราเข้าถึงที่อยู่ IP เฉพาะจากชื่อโดเมน ด้วยวิธีนี้ เราสามารถเข้าถึงเว็บไซต์ต่างๆ ได้โดยใส่ชื่อโดเมนของคุณลงในแถบที่อยู่ของเว็บเบราว์เซอร์โดยตรง นอกจากนี้เรายังมีความเป็นไปได้ในการตั้งค่าเซิร์ฟเวอร์ DNS ในบ้านหรือเครือข่ายท้องถิ่นระดับมืออาชีพ เพื่อเข้าถึงคอมพิวเตอร์เครื่องต่างๆ ในเครือข่ายท้องถิ่นผ่านชื่อโดเมนเฉพาะ โดยไม่ต้องจำที่อยู่ IP ส่วนตัวเสมอไป วันนี้ในบทความนี้เราจะแสดงให้คุณเห็นว่าเราสามารถกำหนดค่าเซิร์ฟเวอร์ DNS บน a . ได้อย่างไร ลินุกซ์ เซิร์ฟเวอร์ที่ใช้ Bind9 ซึ่งเป็นเซิร์ฟเวอร์ DNS ที่ได้รับความนิยมและใช้มากที่สุด
ผูกคืออะไร?
Bind หรือที่เรียกว่า Berkeley Internet Name Domain เป็นซอฟต์แวร์ที่รับผิดชอบในการปฏิบัติงานของเซิร์ฟเวอร์ DNS Bind เป็นมาตรฐานในปัจจุบันและมีการใช้กันอย่างแพร่หลายในระบบปฏิบัติการ Linux และ Unix ดังนั้นหากคุณมีเซิร์ฟเวอร์ที่ใช้ Linux หรือ Unix และคุณต้องการเซิร์ฟเวอร์ DNS เพื่อจัดการการสืบค้นจากเครือข่ายท้องถิ่น Bind จะเป็น สิ่งที่คุณต้องใช้ Bind เวอร์ชันปัจจุบันคือเวอร์ชัน Bind9 และเป็นเวอร์ชันที่ใช้กันทั่วไปในเซิร์ฟเวอร์ทั้งหมด เวอร์ชันก่อนหน้าถือว่าไม่ปลอดภัยและ "เลิกใช้แล้ว" จึงไม่แนะนำให้ใช้
Bind ไม่ได้แทนที่เซิร์ฟเวอร์ DNS เช่นเดียวกับที่เราสามารถใช้ได้จาก Google (8.8.8.8), Cloudflare (1.1.1.1) หรืออื่น ๆ แต่ช่วยเสริมให้สมบูรณ์ ลูกค้าของเครือข่ายท้องถิ่นจะมีเซิร์ฟเวอร์ Bind เป็นเซิร์ฟเวอร์ DNS ที่เรากำหนดค่าในเซิร์ฟเวอร์ Linux ในภายหลังใน Bind นี้ เราจะสามารถกำหนดค่ากฎต่างๆ เพื่อเข้าถึงคอมพิวเตอร์ในพื้นที่ผ่านที่อยู่ IP ส่วนตัวของพวกเขา หากไคลเอนต์ในเครือข่ายท้องถิ่นส่งคำขอ DNS ไปยังเว็บไซต์อินเทอร์เน็ต ตามหลักเหตุผลแล้ว เซิร์ฟเวอร์ DNS จะไม่มีที่อยู่ IP อินเทอร์เน็ตทั้งหมดในฐานข้อมูล ในกรณีนี้ เซิร์ฟเวอร์ DNS สาธารณะจะได้รับการกำหนดค่าให้จัดการกับคำขอเหล่านี้ โดยการส่งต่อ เซิร์ฟเวอร์ที่มีการผูกคำขอและเราจะส่งคืนโดยอัตโนมัติไปยังไคลเอนต์ที่ส่งคำขอ
เวอร์ชันที่ใช้อยู่ในปัจจุบันคือ Bind 9 ซึ่งเขียนขึ้นตั้งแต่ต้นเพื่อหลีกเลี่ยงปัญหาของเวอร์ชันก่อนๆ นอกจากนี้ยังมีฟีเจอร์ที่สำคัญมาก เช่น DNSSEC ในการมอบความปลอดภัยให้กับโดเมนโดยใช้การเข้ารหัส รวมถึงการปรับปรุงการประมวลผลแบบขนานของต่างๆ การสืบค้น DNS การสนับสนุนอย่างเต็มที่สำหรับเครือข่าย IPv6 และอีกมากมาย แน่นอนว่า Bind เวอร์ชันล่าสุดนี้มีการปรับปรุงด้านความปลอดภัยที่สำคัญมาก ด้วยวิธีนี้ เราจะได้รับการป้องกันจากการโจมตีที่อาจเกิดขึ้นในเวอร์ชันก่อนหน้า
ข้อกำหนดเบื้องต้นก่อนการติดตั้ง Bind
ก่อนที่จะเริ่มต้นด้วยการกำหนดค่าเซิร์ฟเวอร์ DNS ที่มี Bind9 ในระบบปฏิบัติการของเรา ขอแนะนำให้ใส่ IP แบบคงที่บนเซิร์ฟเวอร์ของเรา มิฉะนั้น หากเซิร์ฟเวอร์ DHCP เปลี่ยนที่อยู่ IP ของเรา ลูกค้าของเครือข่ายท้องถิ่นจะสูญเสียการเข้าถึงของเรา เซิร์ฟเวอร์ DNS เพราะจะไม่ "ชี้" ไปยังที่อยู่ IP ส่วนตัวของเรา ในการใส่ IP คงที่ เรามีความเป็นไปได้สองประการ:
- กำหนดค่า Static DHCP ในเราเตอร์ / ไฟร์วอลล์ที่เรามี โดยใส่ที่อยู่ MAC ของการ์ดเครือข่ายและที่อยู่ IP ที่เราต้องการให้ได้รับเสมอ
- กำหนดค่าเซิร์ฟเวอร์ Linux ของเราแบบคงที่ ในกรณีนี้ เซิร์ฟเวอร์ DHCP ของเราเตอร์ / ไฟร์วอลล์ควรมีช่วง DHCP ที่อยู่นอกที่อยู่ IP ส่วนตัวที่เราตั้งไว้
ในการกำหนดค่าที่อยู่ IP แบบคงที่ใน Linux เราต้องแก้ไขไฟล์การกำหนดค่า “/ etc / network / interfaces” และใส่ข้อมูลต่อไปนี้:
auto lo
iface lo inet loopback
รถ ens33
iface eth0 inet static
ที่อยู่ 192.168.1.2
255.255.255.0 netmask
192.168.1.1 เกตเวย์
dns-nameservers 192.168.1.2
ต่อไป เราต้องเริ่มบริการใหม่เพื่อใช้การเปลี่ยนแปลงอย่างถูกต้อง (หากเราเปลี่ยน IP ที่เรามีในปัจจุบัน):
sudo service networking restart
เมื่อแก้ไขที่อยู่ IP ของเครือข่ายท้องถิ่นแล้ว เราก็สามารถติดตั้ง Bind ได้
ผูกการติดตั้งบน Linux และการเริ่มต้นระบบ
สิ่งแรกที่เราต้องทำเพื่อกำหนดค่าเซิร์ฟเวอร์ DNS (ผูก) ใน Linux คือการติดตั้งจากที่เก็บ เราจะติดตั้งทั้งเซิร์ฟเวอร์ Bind9 DNS เช่นเดียวกับแพ็คเกจที่แนะนำโดยระบบปฏิบัติการ Debian ดังนั้นเรา ต้องวางไว้ในคอนโซลต่อไป:
sudo apt install bind9 bind9-doc resolvconf python-ply-doc
เมื่อเราติดตั้งแพ็คเกจก่อนหน้าทั้งหมดแล้ว เราต้องไปที่ไดเร็กทอรีของโปรแกรม ซึ่งเป็นที่ที่เราจะต้องเริ่มกำหนดค่าไฟล์ที่จำเป็น:
cd /etc/bind/
ขอแนะนำให้ เข้าถึงไดเร็กทอรีนี้เป็นรูท (sudo su) เพื่อหลีกเลี่ยงปัญหาการอนุญาตถูกปฏิเสธเมื่อคัดลอกไฟล์หรือแก้ไขไฟล์ที่มีอยู่ หากเราทำ “ls -l” เพื่อแสดงรายการไฟล์ทั้งหมดที่เรามีที่นี่ เราจะเห็นสิ่งต่อไปนี้:
อย่างที่คุณเห็น เรามีไฟล์คอนฟิกูเรชันที่แตกต่างกันจำนวนมาก โดยแต่ละไฟล์นั้นเน้นไปที่งานโดยเฉพาะ ในเอกสารทางการของ Bind9 คุณจะพบว่าแต่ละไฟล์มีไว้เพื่ออะไร สมมติว่าต่อจากนี้ไปคุณจะอยู่ในโหมดผู้ใช้ขั้นสูง (รูท) เพื่อแก้ไขหรือคัดลอกไฟล์โดยไม่มีข้อจำกัด
กำหนดค่า Bind forwarders โดยใช้เซิร์ฟเวอร์ DNS สาธารณะ
สิ่งแรกที่เราจะทำคือกำหนดค่าการส่งต่อเซิร์ฟเวอร์ DNS นั่นคือเซิร์ฟเวอร์ DNS สาธารณะเพื่อส่งต่อการสืบค้นไปยังอินเทอร์เน็ต ไฟล์คอนฟิกูเรชันที่รับผิดชอบงานนี้คือ “named.conf.options” สิ่งแรกที่เราทำคือสร้างสำเนาสำรองของไฟล์ ในกรณีที่เราแก้ไขผิดและทุกอย่างหยุดทำงาน:
cp /etc/bind/named.conf.options /etc/bind/named.conf.options.copia
ตอนนี้เราแก้ไขไฟล์โดยเพิ่มเซิร์ฟเวอร์ DNS ในส่วนผู้ส่งต่อ ดังที่คุณเห็นที่นี่:
forwarders {
8.8.8.8;
1.1.1.1;
};
มันจะเป็นดังนี้:
เมื่อเราแก้ไขแล้ว เราจะเริ่มบริการ Bind9 ใหม่เพื่อตรวจสอบว่าทุกอย่างทำงานอย่างถูกต้องและไม่ส่งคืนข้อผิดพลาดใดๆ:
sudo service bind9 restart
ตอนนี้เราจะตรวจสอบว่าทำงานอย่างถูกต้องหรือไม่ ในการดำเนินการนี้ เราดำเนินการคำสั่ง nslookup และเราควรเห็นว่าเซิร์ฟเวอร์ DNS ของเราแก้ไขโดเมนได้อย่างถูกต้อง ในกรณีของเรา ที่อยู่ IP ของเซิร์ฟเวอร์คือ 192.168.231.130:
เมื่อเรากำหนดค่า Bind เพื่อส่งต่อความละเอียดของเว็บไซต์อินเทอร์เน็ตไปยัง DNS สาธารณะ เราจะไปดูวิธีกำหนดค่าเพื่อแก้ไขโดเมนภายใน
กำหนดค่า Bind สำหรับความละเอียดในเครื่อง
ไฟล์คอนฟิกูเรชันที่เราต้องกำหนดค่าตอนนี้คือ named.conf.local ขอแนะนำให้ทำสำเนาสำรองในกรณีที่มีสิ่งผิดปกติเกิดขึ้นขณะกำหนดค่า สำหรับสิ่งนี้เราดำเนินการ:
cp /etc/bind/named.conf.local /etc/bind/named.conf.local.copia
เมื่อเราสำรองข้อมูลเสร็จแล้ว เราจะต้องแก้ไขไฟล์การกำหนดค่า named.conf.local เพื่อดำเนินการกำหนดค่าต่อไป ในไฟล์คอนฟิกูเรชันนี้ เราจะต้องใส่โซนที่เราอ้างถึง และไฟล์คอนฟิกูเรชันการโยงที่มีคอนฟิกูเรชันทั้งหมด ดังนั้น เราสามารถปล่อยให้มันเป็นดังนี้:
zone "redlocal.com" {
type master;
file "/etc/bind/db.redlocal";
};
เป็นสิ่งสำคัญที่ “ไฟล์” หมายถึงไฟล์การกำหนดค่าที่เรานำเข้าและเรากำลังจะกำหนดค่าในขณะนี้
ตอนนี้เราต้องคัดลอกฐานข้อมูลที่เรามีใน "db.local" ให้ชื่อ " db.redlocal ” ที่เราได้กำหนดไว้ในไฟล์ที่แล้ว
cp /etc/bind/db.local /etc/bind/db.redlocal
ตอนนี้เราแก้ไขไฟล์การกำหนดค่าที่มาพร้อมกับข้อมูลจำนวนมากโดยค่าเริ่มต้น และปรับให้เข้ากับความสนใจของเรา
สิ่งแรกที่เราต้องทำคือแก้ไข SOA ที่มาในส่วนบนด้วยชื่อโดเมนที่เราเลือกไว้ในเครื่อง ในกรณีนี้ จะเป็น "red.redlocal.com" จากนั้นเราจะแก้ไขไฟล์ configuration ทั่วไป กับโดเมนและโดเมนย่อยที่เราต้องการ ไฟล์การกำหนดค่าของเราจะเป็นดังนี้:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.redlocal.com. root.red.redlocal.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ ใน NS ns1.redlocal.com
@ ใน 192.168.231.130
ns1 ใน 192.168.231.130
เราเตอร์ใน A 10.11.1.1
pc1 ใน 10.11.1.2
เมื่อเราบันทึกไฟล์การกำหนดค่าแล้ว เราจะตรวจสอบไวยากรณ์ด้วยคำสั่งต่อไปนี้:
named-checkzone redlocal.com /etc/bind/db.redlocal
ตอนนี้เราเริ่มกระบวนการผูกใหม่ด้วยคำสั่งต่อไปนี้:
sudo service bind9 restart
เรามีทุกอย่างพร้อมสำหรับการทดสอบแบตเตอรีและตรวจสอบว่าเราได้ทำทุกอย่างถูกต้องแล้ว เพื่อตรวจสอบว่าทุกอย่างทำงานได้ดี เราต้องรันคำสั่งต่อไปนี้:
host router.redlocal.com
มันจะแสดงให้เราเห็นต่อไปนี้ที่อยู่ IP ของเราเตอร์:
[email protected]:/etc/bind# host router.redlocal.com
router.redlocal.com has address 10.11.1.1
เราสามารถทำเช่นเดียวกันกับ PC1:
host pc1.redlocal.com
เราจะเห็นสิ่งนี้:
[email protected]:/etc/bind# host pc1.redlocal.com
pc1.redlocal.com has address 10.11.1.2
เมื่อเราจัดการแก้ไขโดเมนภายในอย่างถูกต้องแล้ว โดยส่งคืนที่อยู่ IP ที่เกี่ยวข้อง เราสามารถ ping ผ่านโดเมนได้โดยไม่มีปัญหา:
[email protected]:/etc/bind# ping router.redlocal.com
PING router.redlocal.com (10.11.1.1) 56(84) bytes of data.
64 bytes from 10.11.1.1 (10.11.1.1): icmp_seq=1 ttl=128 time=0.413 ms
64 bytes from 10.11.1.1 (10.11.1.1): icmp_seq=2 ttl=128 time=0.401 ms
^C
--- router.redlocal.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 28ms
rtt min/avg/max/mdev = 0.401/0.407/0.413/0.006 ms
ตอนนี้เรากำลังจะกำหนดค่าความละเอียดย้อนกลับของโดเมน
การแก้ปัญหาโดเมนย้อนกลับ
ตอนนี้ เราจะกำหนดค่าเซิร์ฟเวอร์ DNS เพื่อแก้ไขโดเมนแบบย้อนกลับ ใส่ที่อยู่ IP และบอกเราว่าที่อยู่ IP นั้นเป็นของโดเมนใด เพื่อให้บรรลุเป้าหมายของเรา เราต้องเพิ่ม บรรทัดต่อไปนี้ไปยังไฟล์ /etc/bind/named.conf.local ที่เราใช้ก่อนหน้านี้:
zone "192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
เรายังต้องคัดลอกไฟล์การกำหนดค่าเริ่มต้นเพื่อแก้ไข จากไฟล์ db.127 เราสร้าง db.192:
cp /etc/bind/db.127 /etc/bind/db.192
เมื่อเราสร้างเสร็จแล้ว ให้แก้ไขด้วยข้อมูลต่อไปนี้:
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.redlocal.com. root.red.redlocal.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.redlocal.com.
ns1 IN A 192.168.231.130
130.231.168 IN PTR redlocal.com
เมื่อเราบันทึกไฟล์การกำหนดค่าแล้ว เราจะตรวจสอบไวยากรณ์ด้วยคำสั่งต่อไปนี้:
named-checkzone 192.168.231.130 /etc/bind/db.192
เราควรจะได้รับสิ่งนี้:
named-checkzone 168.192.in-addr.arpa db.192
zone 168.192.in-addr.arpa/IN: loaded serial 1
OK
ตอนนี้เราเริ่มกระบวนการผูกใหม่ด้วยคำสั่งต่อไปนี้:
sudo service bind9 restart
และเราตรวจสอบว่าทำงานอย่างถูกต้อง:
host 192.168.231.130
เราหวังว่าบทแนะนำ Bind ฉบับสมบูรณ์นี้จะช่วยให้คุณตั้งค่าเซิร์ฟเวอร์ DNS ของคุณเองในเครื่องได้