รายการในไฟล์ 'โฮสต์' ในเครื่องแทนที่การค้นหาชื่อไปข้างหน้าและย้อนกลับหรือไม่?


16

หากฉันมีรายการต่อไปนี้ในไฟล์โฮสต์:

192.168.100.1    bugs
192.168.100.2    daffy.example.com
192.168.100.3    elmer.example.com.

IP-> การพยายามแก้ไขชื่อโดย utilies ท้องถิ่น (ฉันถือว่าใช้ 'gethostbyaddr' หรือเทียบเท่ากับ Windows) หรือไม่ให้เกียรติรายการเหล่านี้ พฤติกรรมนี้สามารถกำหนดค่าได้หรือไม่? มันแตกต่างกันอย่างไรระหว่างระบบปฏิบัติการ? มันสำคัญว่ารายการไฟล์ 'โฮสต์' มีคุณสมบัติครบถ้วนหรือไม่?

แก้ไข: เพื่อตอบสนองต่อรัสเซลระบบทดสอบ Linux ของฉันกำลังรัน RHEL 4 /etc/nsswitch.conf ของฉันมีบรรทัด 'hosts' ต่อไปนี้:

hosts:      files dns nis

ถ้าฉัน ping โฮสต์ใด ๆ ของฉันด้วยชื่อ (เช่นข้อบกพร่อง, daffy) การแก้ปัญหาไปข้างหน้าทำงานได้อย่างถูกต้อง ถ้าฉัน traceroute ใด ๆ ของพวกเขาโดยที่อยู่ IP ฟังก์ชั่นการค้นหาแบบย้อนกลับตามที่คาดไว้ อย่างไรก็ตามหากฉัน ping ด้วย IP ping จะไม่ปรากฏขึ้นเพื่อแก้ไขชื่อโฮสต์ ความเข้าใจของฉันคือ Linux ping พยายามแก้ไข IP เป็นชื่อเสมอเว้นแต่จะได้รับคำแนะนำเป็นอย่างอื่น ทำไม traceroute จะสามารถจัดการการค้นหาแบบย้อนกลับในไฟล์โฮสต์ได้ แต่ไม่ ping

คำตอบ:


16

โดยทั่วไปไฟล์โฮสต์จะใช้สำหรับการค้นหาไปข้างหน้าและย้อนกลับ การตั้งค่าในระบบ Unix นี้จะขึ้นอยู่กับลำดับของรายการในไฟล์ nsswitch.conf ของคุณ

เช่นบรรทัดด้านล่างจะทำให้ไฟล์โฮสต์แทนที่ DNS การย้อนกลับรายการจะทำให้ DNS แทนที่ไฟล์โฮสต์

โฮสต์: ไฟล์ DNS

ฉันไม่แน่ใจว่าคุณสามารถปรับแต่งลำดับของการตั้งค่าในระบบ windows

ฉันได้ดูแหล่งที่มาของการ ping ใน inetutils-20071127 (รุ่นที่ติดตั้งบนกล่อง Ubuntu 9.04 ของฉัน) และแหล่งที่มาดูเหมือนว่าจะเปิดใช้งานโหมดตัวเลขเท่านั้นหากคุณ ping ที่อยู่ IP มากกว่าชื่อโฮสต์:

                if (inet_aton (เป้าหมาย, & whereto.sin_addr) == 1) {
                        ชื่อโฮสต์ = target;
                        ถ้า (argc == 1)
                                ตัวเลือก | = F_NUMERIC;

สิ่งนี้สามารถอธิบายได้ว่าทำไมคุณไม่ได้รับการค้นหาแบบย้อนกลับเมื่อคุณ ping โฮสต์ของคุณด้วยที่อยู่ IP


นั่นคือความคิดของฉัน แต่ดูเหมือนจะไม่เป็นเช่นนั้น ดูคำถามที่ปรับปรุงแล้วสำหรับรายละเอียด
Murali Suriar

ฉันยังไม่ได้มีโอกาสดูแหล่งที่มา แต่ดูอย่างรวดเร็วที่แสดงให้เห็นว่าการส่งออก ldd ว่าเมื่อวันที่ ping ระบบของฉันเชื่อมโยงโดยตรงกับห้องสมุด libresolv DNS Resolver ซึ่งอาจบ่งบอกว่ามันผ่านไฟล์ nsswitch และทำย้อนกลับการค้นหาได้โดยตรง ...
รัสเซล Heilling

เมื่อใช้hostยูทิลิตี้ISC หนึ่งอาจได้รับความประทับใจว่าการแก้ไข / etc / hosts ไม่มีผล host 10.0.0.1จะทำการสืบค้น DNS และเพิกเฉยต่อไฟล์โฮสต์ วิธีนี้ช่วยให้สามารถตรวจสอบตัวแก้ไขระบบได้:perl -MSocket -le '$a=inet_aton(shift); $_=gethostbyaddr $a, AF_INET; print' 10.0.0.1
mivk

8

ฉันพบการอ้างอิงถึงการเปลี่ยนรายการรีจิสตรีเพื่อแก้ไขลำดับการแก้ไขชื่อบน Windows:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=963485

การอ้างอิงจากที่นั่น:

ตามค่าเริ่มต้น Windows จะตรวจสอบผู้ให้บริการการจำแนกชื่อตามลำดับต่อไปนี้:

Local, (แคชชื่อ NetBT ท้องถิ่น), โฮสต์, DNS, NetBT (WINS)

คุณต้องการให้คำสั่งเป็นโฮสต์, DNS, Local, NetBT

ในสิ่งต่อไปนี้ตัวเลขที่ต่ำกว่าจะมีลำดับความสำคัญสูงกว่า

รีจิสตรีคีย์ต่อไปนี้ใน

HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\ServicessTcpip\ServiceProvider

จะต้องมีการแก้ไข

DnsPriority= 0x3e8 (Decimal: 1000)
HostsPriority= 0x1f4 (Decimal: 500)
LocalPriority= 0x5dc (Decimal: 1500)
NetbtPriority= 0x7d1 (Decimal: 2001)

พวกเขาจะได้รับข้อมูล "Innerworkings" ดังกล่าวได้อย่างไร
Pacerier

1

/etc/host.confระบุไฟล์ที่จะใช้ในการสั่งซื้อสำหรับการค้นพบที่อยู่ IP เหมืองมีดังต่อไปนี้โดยค่าเริ่มต้น:

#
# /etc/host.conf
#

order hosts,bind
multi on

ซึ่งหมายความว่าไฟล์โฮสต์จะถูกตรวจสอบก่อนเสมอจากนั้น DNS (ผูก)

หากไม่ได้ระบุที่นี่แล้วมันจะไม่มองไปที่nis/etc/nsswitch.conf

ลิงก์เอกสาร: http://tldp.org/LDP/nag/node82.html


เมธอด /etc/host.conf ล้าสมัยสำหรับบางระบบใช้เฉพาะ nsswitch.conf (เช่นระบบที่ใช้ glibc และ eglibc) glibc รุ่นเหล่านี้จะแยกวิเคราะห์ '/etc/host.conf' โดยไม่มีการเตือนและทิ้งบรรทัด 'order'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.