เหตุใดการแก้ไขชื่อของฉันจึงถึง DNS แม้ว่าจะมีรายการไฟล์โฮสต์อยู่


15

ฉันใช้ Ubuntu 10.04.2 LTS Desktop ในฐานะนักพัฒนาเว็บไซต์ฉันสร้าง "me.com" ใน/etc/hostsไฟล์ของฉัน น่าเสียดายที่การแก้ไขชื่อของฉันกำลังออกไปที่ DNS ก่อนที่จะตรวจสอบรายการโฮสต์ในพื้นที่ของฉันก่อนและฉันไม่สามารถหาสาเหตุได้

ผลลัพธ์ที่ได้คือถ้า /etc/resolv.conf ของฉันมีnameserver 127.0.0.1อยู่ในนั้นก่อนฉันจะได้รับการตอบกลับในเว็บเบราว์เซอร์จาก me.com (ภายในเครื่อง) ภายในไม่ถึงหนึ่งวินาที แต่ถ้าฉันไม่มีรายการนั้นการตอบสนองของฉันอาจใช้เวลานานถึง 5 วินาทีถ้า ISP ของฉันช้าเล็กน้อย

ปัญหาก็ลำบากที่จริงผมต้องยื่นคำถามนี่ (และคนที่ได้รับการแก้ไขได้)/etc/resolv.confสำหรับวิธีการจะแทรกเข้าไปในรายการที่ แต่หนึ่งในผู้ใช้ (@shellholic) ขอแนะนำอย่างยิ่งที่นี่ (และแสดงความคิดเห็นไปมากับฉันเกี่ยวกับเรื่องนี้) ว่าฉันควรยื่นคำถามนี้

คุณรู้หรือไม่ว่าเหตุใดการแก้ไขชื่อเวิร์กสเตชันของฉันจึงต้องไปที่เซิร์ฟเวอร์ DNS ก่อนที่จะกด/etc/hostsรายการไฟล์ของฉัน สำหรับตอนนี้ผมใช้เคล็ดลับ resolv.conf


1
/etc/nsswitch.confคุณอาจลองมอง รายการในระบบของฉันไม่ชัดเจนเล็กน้อย แต่คุณสามารถทดสอบการค้นหาด้วยfilesตัวเลือกและดูว่าสิ่งนั้นสร้างความแตกต่างหรือไม่
belacqua

ใช่คุณสามารถให้เราส่งออกของcat /etc/nsswitch.confและcat /etc/host.conf? นอกจากนี้: คุณกำลังทดสอบสิ่งนี้อย่างไร (ผ่านการส่ง Ping, เบราว์เซอร์, การดักจับแพ็คเก็ต ฯลฯ )
จัดการ

กับรุ่นที่สมบูรณ์ของ @arrange time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hostsคุณสามารถแนบผลมาจากการ อย่าลังเลที่จะทำให้สับสนเหตุผล
shellholic

@shellholic ^ rationality ^ rational? หึ
belacqua

@jgbelacqua: แน่นอน
shellholic

คำตอบ:


15

ไฟล์/etc/nsswitch.confจะช่วยให้คุณกำหนดค่าลำดับการแก้ไขชื่อ โดยค่าเริ่มต้นไฟล์โฮสต์เป็นคนแรกจากนั้น DNS ที่กำหนดค่า อาจมีตัวเลือกเพิ่มเติม

ไฟล์/etc/hostsจะแสดงเฉพาะที่อยู่ IP และชื่อโฮสต์ (หลายชื่อสำหรับหนึ่ง IP ถ้าคุณต้องการ)

ไฟล์/etc/resolv.confจะแสดงรายการโดเมนการค้นหาเริ่มต้นและจะแสดงรายการตามลำดับชื่อเซิร์ฟเวอร์ที่จะใช้


4
โปรดทราบว่าเมื่อชื่อถูกแก้ไขโดยแอปพลิเคชันหรือบริการบนกล่อง Linux ของคุณชื่อนั้นจะยังคงอยู่ในแคชในช่วงเวลาที่รู้จักกันในชื่อ TTL (เวลาที่ใช้งาน) ดังนั้นหากคุณสลับลำดับความละเอียดคุณควรรีสตาร์ทระบบของคุณหรือล้างแคชใด ๆ
jfmessier

คุณจะล้าง 'แคช' ได้อย่างไร
Eric Johnson เมื่อ

ฉันไม่แน่ใจ แต่การรีสตาร์ทการเชื่อมต่อเครือข่ายด้วยคำสั่ง ifup และ ifdown สามารถทำได้ แน่นอนว่าการรีบูตควรล้างแคช แต่เราใช้ลีนุกซ์ใช่ไหม?
jfmessier

nscdสามารถแคชแบบสอบถามการแก้ไขชื่อ แต่ไม่เคารพ ttl (และดังนั้นโฮสต์แคชถูกปิดใช้งานโดยค่าเริ่มต้น) systemd-resolvedจะทำรายการแคช หากไม่มีผู้ที่มีการกำหนดค่าโฮสต์ลินุกซ์ไม่ได้แคช DNS การตอบสนอง (เบราว์เซอร์น่าจะทำที่เลเยอร์แอปพลิเคชัน)
Gert van den Berg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.