เนมเซิร์ฟเวอร์ที่สองใน /etc/resolv.conf ไม่รับโดย wget


14

resolv.conf ของฉันมีลักษณะเช่นนี้:

; generated by /sbin/dhclient-script
search mcdc
nameserver 10.0.4.48
nameserver 8.8.8.8

ถ้าฉันnslookup www.google.comทำงาน

nslookup www.google.com
;; Got SERVFAIL reply from 10.0.4.48, trying next server
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
www.google.com  canonical name = www.l.google.com.

แต่เมื่อฉันขด www.google.com มันไม่สามารถแก้ไขโฮสต์ได้

ฉันลองใช้ curl ภายใต้ strace และพบว่า curl ใช้ชื่อเซิร์ฟเวอร์แรกใน resolv.conf ไม่ใช่วินาทีเท่านั้น ถ้าฉันสลับ Nameserver สองบรรทัดรอบ ๆ www.google.com จะแก้ไข แต่ชื่อ DNS ภายในไม่ได้ดังนั้นจึงไม่ใช่วิธีแก้ปัญหาที่ดี

ฉันจะแก้ไข resolv.conf เพื่อใช้เนมเซิร์ฟเวอร์ทั้งสองได้อย่างไร

คำตอบ:


24

พฤติกรรมเริ่มต้นสำหรับ resolv.conf และตัวแก้ไขคือลองเซิร์ฟเวอร์ตามลำดับที่แสดง ตัวแก้ไขจะลองใช้เนมเซิร์ฟเวอร์ถัดไปเฉพาะถ้าเนมเซิร์ฟเวอร์แรกหมดเวลาเท่านั้น manpage resolv.confพูดว่า:

nameserver ที่อยู่ IP เซิร์ฟเวอร์

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

และ:

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

ดูเพิ่มเติมที่หน้าคู่มือตัวแก้ไข (5)สำหรับข้อมูลเพิ่มเติม

คุณสามารถเปลี่ยนพฤติกรรมของตัวแก้ไขการใช้rotateซึ่งจะทำการสืบค้น Nameservers ตามลำดับรอบตัว:

การหมุนตั้งค่า RES_ROTATE ใน _res.options ซึ่งทำให้เลือกเนมเซิร์ฟเวอร์จากกลุ่มที่ระบุ สิ่งนี้มีผลกระทบของการกระจายการโหลดคิวรีในเซิร์ฟเวอร์ที่ระบุไว้ทั้งหมดแทนที่จะให้ไคลเอนต์ทั้งหมดลองเซิร์ฟเวอร์ที่ระบุไว้เป็นรายแรกก่อนทุกครั้ง

อย่างไรก็ตาม nslookup จะใช้เนมเซิร์ฟเวอร์ที่สองหากได้รับSERVFAILจากเนมเซิร์ฟเวอร์แรก จากmans ค้นหา nslookup :

[ไม่] ล้มเหลวลองใช้เนมเซิร์ฟเวอร์ถัดไปหากเนมเซิร์ฟเวอร์ตอบกลับด้วย SERVFAIL หรือการอ้างอิง (nofail) หรือยุติการสืบค้น (ล้มเหลว) ในการตอบกลับดังกล่าว

(ค่าเริ่มต้น = nofail)


2

ใช่คุณสามารถใช้ "หมุน" และการตั้งค่าการหมดเวลาเพื่อปรับปรุงการค้นหา DNS ด้านล่างเป็นตัวอย่าง

Ex:

[root@centos-xxxxxx ~]# cat /etc/resolv.conf
options rotate
options timeout:1
search xyz.abc.local
nameserver 192.168.56.3
nameserver 10.0.2.4

1

10.0.4.48 เป็นเซิร์ฟเวอร์ตัวแก้ไข DNS ซ้ำหรือไม่

หรือเป็นเพียงเซิร์ฟเวอร์ที่เชื่อถือได้สำหรับโซนภายในของคุณ

คุณควรตั้งค่าตัวแก้ไขภายในที่อาจเก็บข้อมูลที่มีสิทธิ์ของคุณ


0

ดังนั้นเพื่อให้มันทำงานได้ตามที่คาดหวังติดตั้ง dnsmasq หรือตัวกระจายสัญญาณ DNS อื่น ๆ ที่มีน้ำหนักเบา (หรือเซิร์ฟเวอร์ DNS แบบเต็มเป่า) ดูการเปรียบเทียบของซอฟต์แวร์เซิร์ฟเวอร์ DNS

สำหรับการกำหนดค่า dnsmasq นั้นง่ายเหมือน:

server=10.0.4.48
server=8.8.8.8

คุณสามารถระบุโดเมนที่ควรใช้ DNS บางตัว เช่น:

server=/mcdc/10.0.4.48
server=8.8.8.8

ซึ่งก็จะทำให้ดู dnsmasq สำหรับ*.mcdcใน10.0.4.48DNS 8.8.8.8เซิร์ฟเวอร์และอื่น

ใน/etc/resolv.confคุณเพียงแค่ใช้ DNS ท้องถิ่นของคุณ:

nameserver 127.0.0.1

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่า dnsmasq ดูคำตอบของฉันที่นี่: /unix/55090/change-default-dns-on-openvpn-connect/545591#545591


-3

หากคุณสามารถฉันจะกำหนดค่าในแบบนี้

search mcdc
nameserver 127.0.0.1
nameserver 8.8.8.8


6
ส่วนใดของคำถามที่ระบุว่าพวกเขาเรียกใช้เซิร์ฟเวอร์ DNS บนเครื่องของพวกเขาหรือต้องการ
Jay


1
เบลค: โปรดทราบว่าโดยทั่วไปแล้ว 127.0.0.1 จะใช้สำหรับระบบที่มีเนมเซิร์ฟเวอร์แคชอยู่บนโลคอลโฮสต์ ดูtldp.org/HOWTO/DNS-HOWTO-3.html
Stefan Lasiewski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.