เหตุใดไฟล์ / etc / hosts ของฉันจึงไม่ถูกสอบถามเมื่อ nslookup พยายามแก้ไขที่อยู่


15

ฉันมีสองโดเมนท้องถิ่นมีมติ127.0.0.1ในของฉัน/etc/hostsไฟล์ และมันก็ไม่เป็นไรสำหรับช่วงระยะเวลาหนึ่ง แต่ตอนนี้เมื่อฉันทำงาน:

nslookup test.local

มันส่งผลให้:

Server:     192.168.1.3
Address:    192.168.1.3#53

** server can't find test.local: NXDOMAIN

192.168.1.3เป็น DNS test.localเครือข่ายของเราและก็ไม่ควรที่จะรู้ว่าโดเมนท้องถิ่นของฉัน หลังจากการค้นหาสองสามครั้งฉันพบว่า/etc/nsswitch.confไฟล์เก็บข้อมูลเกี่ยวกับลำดับความสำคัญของแหล่งข้อมูล DNS ที่จะสอบถาม แต่ไม่มีปัญหาอยู่ที่นั่น! นี่คือของฉัน:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

ไม่มีใครรู้ว่าทำไมhostsไฟล์ของฉันไม่รวมอยู่ในการค้นหา DNS

คำตอบ:


20

nslookupทำการแก้ไข DNS ที่เหมาะสมเท่านั้นซึ่งแตกต่างอย่างมากจากระบบย่อยName Service Switchที่แอปพลิเคชันอื่นของคุณใช้ กล่าวคือnslookupไม่สนใจ/etc/hostsและ mDNS

ในการทดสอบความละเอียดในพื้นที่เช่นนั้นให้ใช้สิ่งที่ใช้ NSS ping <hostname>ตัวอย่างเช่น. นี่คือตัวอย่างง่ายๆที่อิงจาก/etc/hostsรายการในเครือข่ายของฉัน

$ nslookup bert
Server:     8.8.8.8
Address:    8.8.8.8#53

** server can't find bert: NXDOMAIN

$ ping bert
PING bert (10.10.0.4) 56(84) bytes of data.
64 bytes from bert (10.10.0.4): icmp_seq=1 ttl=64 time=0.352 ms
64 bytes from bert (10.10.0.4): icmp_seq=2 ttl=64 time=0.407 ms

โปรดทราบว่ามีเซิร์ฟเวอร์ DNS และพรอกซีที่สามารถแยก/etc/hostsไฟล์ ในกรณีเหล่านี้nslookupอาจส่งคืนผลลัพธ์จากแหล่งภายใน


5
แทนที่จะใช้pingอย่างใดอย่างหนึ่งgetent ahostsเพราะมันไม่จำเป็นต้องมีสิ่งพิเศษทั้งหมดที่pingมี
Mikko Rantalainen

2

ฉันเดาว่าคุณต้องการการจำแนกชื่อจาก/etc/hostsไฟล์สำหรับโฮสต์เฉพาะ (mysite.com)

ปัญหาทั่วไปอื่นที่อาจทำให้เกิดลักษณะการทำงานนี้คือคุณอาจมีหลายรายการใน/etc/hostsไฟล์สำหรับ IP เดียวกันตัวอย่าง:

1.1.1.1 host1.domain1.com
1.1.1.1 host2.domain2.com

ในการใช้งานบางอย่างอาจทำให้การจำแนกชื่อส่งไปยัง DNS การแก้ไขอย่างรวดเร็วจัดกลุ่มทุกอย่างใน 1 แถว

1.1.1.1 host1.domain1.com host2.domain2.com

1

อีกสิ่งที่ฉันเห็นบ่อยๆคือที่ที่ใครบางคน (โดยปกติฉัน) กลับรายการ IP กับชื่อโฮสต์ใน/etc/hosts-

mysite.com    10.2.3.4

เมื่อดูแวบแรกดูเหมือนปกติ ... นี่คือวิธีแก้ปัญหาของฉันประมาณ 50% ของเวลา:

10.2.3.4    mysite.com

ความผิดในครั้งนี้ ... # ถอนหายใจ
Cybex

1
โดยปกติไฟล์โฮสต์จะมาพร้อมกับรายการ localhost 127.0.0.1 ที่กำหนดไว้ล่วงหน้า การทำผิดนั้นผิดมาก :-)
m3nda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.