ไฟล์ OS X 10.10.1 / etc / hosts & / private / etc / hosts กำลังถูกละเว้นและไม่ได้รับการแก้ไข


40

เช่นเดียวกับชื่อเรื่องที่เรียกใช้ OS x 10.10.1 หากฉันมีรายการในไฟล์โฮสต์ของฉันและทำdigหรือnslookupยังคงแสดง IP ที่แตกต่างจากสิ่งที่อยู่ในไฟล์โฮสต์ของฉันแม้หลังจากพยายามล้างแคชต่างๆ

ฉันได้ลองดังต่อไปนี้ ..

  1. ล้าง mdns และ udns caches โดยเรียกใช้:
    1. sudo discoveryutil mdnsflushcache;
    2. sudo discoveryutil udnsflushcaches;
  2. ล้างแคชโดยใช้ dscacheutil -flushcache
  3. โหลดdiscoveryd.plistไฟล์ ซ้ำ
    1. sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
    2. sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

ไฟล์โฮสต์ของฉันดูเหมือนว่านี้ ..

% cat /private/etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0 localhost
166.78.60.102   admin.devsite1.com

3
ดูเหมือนว่าโยเซมิตีไม่ได้ใช้โฮสต์แบบเดียวกับเมื่อก่อน มันไม่ได้ล้างแคชด้วยวิธีเดียวกันอย่างใดอย่างหนึ่ง & mDNS ใช้ที่นั่งด้านหลัง - นี่มีการพูดคุยมากมายในหัวข้อ - forums.macrumors.com/showthread.php?t=1741422 แก้ไขอ่า ... ฉันเดา คุณได้มาถึงazchipka.thechipkahouse แล้ว
Tetsujin

ขอบคุณใช่ฉันอ่านแล้ว .. ถ้านี่เป็นวิธีที่ x จะเป็นไปได้ .. crummy ของมัน: \
gorelative

1
ฉันดีใจที่ไม่ต้องพึ่งพาโฮสต์ใน Mac, tbh; ฉันมักจะเล่นใน Win เมื่อฉันต้องทำ - แม้ว่าจะไม่ใช่สิ่งเดียวที่ทำให้ฉันอยู่ห่างจาก Yosemite ในขณะนี้ :(
Tetsujin

ใช่ rmbp ของฉันเป็นเครื่อง dev หลักที่ฉันใช้สำหรับการพัฒนาเว็บ / ดูแลระบบโชคไม่ดีและฉันต้องได้รับการคิดออกมิฉะนั้นฉันจะย้อนกลับไปที่ mavericks
gorelative

คนอื่นอาจต้องการปิดการใช้งาน ipv6 บนเวิร์กสเตชันของพวกเขาฉันพบสิ่งนี้ซึ่งอธิบายถึงคีย์: technipages.com/how-to-disable-ipv6-in-macos-sierra - อย่างไรก็ตามแม้หลังจากปิดการใช้งาน ipv6 บน nic ของฉันปัญหายังคงอยู่ .
James T Snell

คำตอบ:


61

/ private / etc / hosts ดูเหมือนว่าจะทำงานได้ตามปกติสำหรับฉันใน Yosemite (เวอร์ชั่น 10.10.1) ไม่จำเป็นต้องล้างแคชหรือรีเซ็ตdiscoveryd(ตัวแก้ไข DNS ใน Yosemite) sudo fs_usage | grep private/etc/hostsแสดงdiscoverydการอ่านไฟล์ทันทีหลังจากฉันบันทึกการเปลี่ยนแปลง

[อัปเดต: discoverydใช้เฉพาะใน OS X เวอร์ชัน 10.10.0 - 10.10.3 ทั้งในรุ่นก่อนหน้าและรุ่นต่อ ๆ มาmDNSResponderจะมีฟังก์ชั่นเดียวกัน ... และยังแจ้งให้ทราบการเปลี่ยนแปลงใน / etc / hosts ทันที

อย่างไรก็ตามdig, nslookupและhostจะไม่เห็นรายการในนั้นเพราะพวกเขาบายพาสจำแนกระบบและทำค้นหา DNS ดิบ พวกเขาทำสิ่งนี้มาตลอดดังนั้นนี่ไม่ใช่เรื่องใหม่ในโยเซมิตี วิธีการ "เป็นทางการ" ในการค้นหาผ่านตัวแก้ไขระบบใน OS X คือการใช้dscacheutil:

dscacheutil -q host -a name www.example.com

... แต่เนื่องจากเป็นคำที่เจ็บปวดฉันจึงมักจะใช้pingแทน (จากนั้นดูที่บรรทัดแรกซึ่งมันแสดงรายการที่ IP กำลังส่ง Ping) เริ่มต้นใน 10.9 คุณยังสามารถใช้แท็บการค้นหาของยูทิลิตี้เครือข่าย (ก่อนที่มันจะใช้digและดังนั้นจึงข้ามนโยบายการค้นหาระบบ)

BTW โปรดให้ความสนใจกับ macrumors ด้ายที่ Tetsujin เชื่อมโยง; มันเต็มไปด้วยคนที่ไม่ค่อยรู้ว่าพวกเขากำลังทำอะไรและเข้าใจผิดเกี่ยวกับผลลัพธ์ของความผิดพลาดของตัวเอง


1
ขอบคุณกอร์ดอนใช่ฉันตระหนักหลังจากที่ผมโพสต์นี้dig, nslookupและhostไม่ได้ใช้ความละเอียด DNS ท้องถิ่น ที่ถูกกล่าวว่า/etc/hostsทำงานตามที่คาดไว้ ..
gorelative

ถ้าฉันอัปเดต/etc/hostsไฟล์หรือไฟล์ของฉัน/private/etc/hostsมันก็ไม่ได้สะท้อนอะไรเลยด้วยdscacheutil -q host -a name www.example.comคำสั่งอื่น ๆ ..
เดินทาง

3
@Trip ตรวจสอบให้แน่ใจว่ารายการที่คุณเพิ่มมีการจัดรูปแบบที่ถูกต้อง: ที่อยู่ IP ตามด้วยช่องว่างหรือแท็บตามด้วยชื่อจากนั้นป้อนบรรทัดที่ท้ายบรรทัด ลองพิมพ์ไฟล์โฮสต์ด้วยcat -vet /etc/hostsเพื่อให้เห็นตัวอักษรที่มองไม่เห็นตามปกติ แต่ละบรรทัดควรมีลักษณะ "127.0.0.1 ^ Inetsecuritybureau.com $" ("^ I" เป็นแท็บและ "$" คือ linefeed) หรือ "127.0.0.1 netsecuritybureau.com $" หากคุณเห็น "^ M" (carriage return) ก่อนหน้า "$" คุณจะมีข้อความที่จัดรูปแบบ DOS / Windows และคุณต้องลบ carriage return (s) ออก
Gordon Davisson

อาว้าวขอบคุณมากสำหรับความช่วยเหลือ ฉันทำตามคำแนะนำของคุณเพื่อให้มั่นใจว่าเป็นแท็บหรือช่องว่าง บรรทัดของฉันอ่านอย่างถูกต้อง: M127.0.0.1^Iyoutube.com^M^Mฉันทำแล้วdscacheutil -flushcache; sudo killall -HUP mDNSResponderและเมื่อไปที่ youtube.com มันยังคงแสดง youtube และไม่ใช่ localhost
เดินทาง

@Trip มีวิธีทำความสะอาดตัวอักษรที่มองไม่เห็นอย่างมากมายในบรรทัดคำสั่ง แต่ฉันจะแนะนำตัวแก้ไข GUI TextWrangler - ใช้เมนูมุมมอง> การแสดงข้อความ> แสดงรายการ Invisibles เพื่อดู (และแก้ไข) สิ่งต่าง ๆ เหล่านั้น ผลตอบแทนการขนส่ง นอกจากนี้ยังฟรีและมีตัวเลือกในการแสดง / เปิดไฟล์และโฟลเดอร์ที่มองไม่เห็น (เช่น / ฯลฯ ) และใช้สิทธิ์ผู้ดูแลระบบเพื่อแก้ไขไฟล์ระบบ
Gordon Davisson

17

ฉันได้ค้นพบริ้วรอยอีกด้วยปัญหานี้

เพื่อแก้ไขปัญหาที่ฉันมีฉันต้องเพิ่มรายการโฮสต์ไฟล์ลักษณะ IPv6

ดูเหมือนว่า Safari จะมองข้ามรายการ IPv4 หากคุณมีการตั้งค่าเครือข่าย IPv6

คุณต้องเพิ่มรายการซ้ำที่แก้ไขไปยังที่อยู่ IPv6 localhost ใน / etc / hosts

รายการ IPv4 127.68.56.101 facebook.com

เช่นรายการ IPv6 fe80::1%lo0 facebook.com

เป็นต้น


1
โปรดทราบว่าฉันได้รับอันนี้ทำงานโดยใช้ที่อยู่ IP ที่สั้นที่สุด: 0.0.0.0 และ :: 1
Ben Morrow

ขอบคุณทำงานสำหรับฉันเช่นกัน กำลังเกาหัวของฉันหลังจากการคืนค่า vhosts / apache ของฉันหลังจากการอัปเกรด ชื่นชม
Gavin

ใช่นี่แก้ไขสำหรับฉันด้วย
โฆษณา 2013

1

ไฟล์โฮสต์ของฉันถูกละเว้นหลังจากที่ฉันแก้ไขในการแก้ไขข้อความ ฉันพยายามหลายวิธีที่จะแก้ไขตอนจบบรรทัดเพิ่มรายการ IPv6 กับรายการ IPv4 ที่มีอยู่ไม่ประสบความสำเร็จต่อไปJB Smiths คำตอบดังกล่าวข้างต้น ฉันสงสัยว่าคำตอบของเขาจะใช้ได้ถ้า บริษัท ของฉันรองรับ IPv6 ซึ่งฉันค้นพบหลังจากความพยายามของฉัน

ทางออกเดียวที่ใช้งานได้สำหรับฉันคือการใช้ปลั๊กอิน GUI ฟรีนี้เพื่อแก้ไขไฟล์โฮสต์

https://github.com/specialunderwear/Hosts.prefpane/blob/master/README.mdown


1

ฉันพบบทความนี้เพราะโยเซมิตี 10.10.5 ไม่ได้รับการเปลี่ยนแปลงไฟล์โฮสต์และไม่มีสิ่งใดที่ฉันสามารถทำได้คือแก้ไขมัน (ฉันรีบูตพยายามล้างแคชตามคำแนะนำทุกอย่างที่ฉันพบได้บนอินเทอร์เน็ต ฯลฯ )

คำตอบนั้นง่ายจริงๆมันน่าอายจริง ๆ แต่ฉันคิดว่าฉันจะแบ่งปัน ฉันใช้ textedit เพื่อแก้ไขไฟล์โฮสต์และใช้เสรีภาพในการบันทึกไฟล์เป็น hosts.txt โดยปกติฉันจะสังเกตเห็นบางสิ่งเช่นนี้ แต่ฉันใช้ Yosemite ติดตั้งใหม่และยังไม่ได้เปิด "แสดงนามสกุลไฟล์ทั้งหมด" ดังนั้นมันจึงดูไม่เหมือนชื่อไฟล์ที่เปลี่ยนไปเมื่อฉันดูบนเดสก์ท็อปของฉัน

ดังนั้นจึงเป็นที่เห็นได้ชัดครับและคนส่วนใหญ่อ่านบทความนี้น่าจะได้ทำมาแล้วนี้ แต่ให้แน่ใจว่าได้ตรวจสอบว่าไฟล์โฮสต์ของคุณเป็นจริงมีและยังไม่ได้ถูกแทนที่ด้วย hosts.txt

หากต้องการเปิดการแสดงนามสกุลไฟล์ให้ไปที่Finder> การตั้งค่า> แสดงนามสกุลไฟล์ทั้งหมด

หากต้องการหยุด TextEdit ไม่ให้เพิ่มส่วนขยาย. txt ให้กับไฟล์ให้เปิดไฟล์ใน Text Edit แล้วเลือกไฟล์> บันทึกเป็น (หากคุณไม่เห็นรายการเมนูบันทึกเป็นให้กดปุ่มตัวเลือกค้างไว้หลังจากคุณคลิกไฟล์และบันทึกเป็นควร ปรากฏขึ้นในเมนู) ค้นหาตัวเลือกหากไม่มีส่วนขยายให้ใช้ ".txt"แล้วยกเลิกการเลือก


0

ฉันเชื่อว่า Apple จะรับรู้ว่านี่เป็นข้อผิดพลาด (ฉันส่งไปวันนี้) ฉันสังเกตเห็นว่า/etc/hostsมีการหยิบรายการใหม่เข้ามา แต่การเปลี่ยนแปลงในรายการที่มีอยู่จะถูกละเว้น ดังนั้น .... การเปลี่ยนชื่อโฮสต์ของรายการ (เช่น web1 เป็น web1a) จึงเป็นวิธีแก้ปัญหาสำหรับฉัน

รายการ OLD / etc / hosts: 54.173.164.18 web1

รายการใหม่ / etc / hosts: 54.174.161.12 web1a


sudo dscacheutil -flushcache - จะล้างแคชบริการไดเรกทอรี
เควินบูชส์

0

ในกรณีของฉันฉันจะตั้งค่า. ssh / config

#Host *.ourdemo.ca
  User jumpy
  ProxyCommand ssh ourjumpbox.ca -W %h:%p

คุณช่วยอธิบายว่าไฟล์ config ทำอะไรและเกี่ยวข้องกับคำถามนี้อย่างไร
klanomath

1
คำถามคือทำไมรายการในไฟล์โลคัล / etc / hosts ถูกละเว้น ในกรณีของฉันมันถูกเพิกเฉยเพราะฉันได้รับคำแนะนำให้เจาะช่องทางการรับส่งข้อมูลทั้งหมดไปยังชุดเครื่อง (* .ourdemo.ca) ผ่านพร็อกซีบ็อกซ์ (ourjumpbox.ca) SSH เชื่อฟังการเชื่อมต่ออย่างพร็อกซี่ทำให้การใช้ไฟล์ / etc / hosts ของพร็อกซีถูกใช้เพื่อแก้ไขที่อยู่แทนไฟล์โลคัล / etc / hosts ของฉัน
Martin Cleaver

0

ฉันมีปัญหาที่คล้ายกันมากซึ่งฉันได้รับทางอีเมลสองแถวเพื่อเพิ่มลงใน /etc/hosts

โดเมนมีสิ่งที่-ชอบmy-domain.com

ปัญหาที่เกิดขึ้นจะกลายเป็นลูกค้าของผู้ส่งอีเมล - เรื่องที่จะบอกว่าไม่มี MS Outlook - ที่แปลงแอสกี-ในระยะยาว-ตัวละครที่ไมโครซอฟท์รักมากที่จะใช้การแก้ไขอัตโนมัติของมันฝังตัวเพื่อทดแทนกับพวกเขา--

ไฟล์โฮสต์ดูสมบูรณ์และยากที่จะหาปัญหานี้ เมื่อฉันลบแถวและเขียนกลับเองพวกเขาเริ่มทำงาน

มันยากมากที่จะเข้าใจสิ่งนี้ว่าฉันเข้าไปลึกเข้าไปในสาเหตุที่ไคลเอนต์ MacOS ควรละเว้นไฟล์โฮสต์และข้ามไปที่การจำแนกชื่อโดยตรง


0

เพิ่งมีปัญหานี้ มันเกิดจากการทำสำเนา / วางจาก hipchat แทนที่จะเขียนที่อยู่

กระบวนการคัดลอกเพิ่มอักขระที่ไม่ดีบางตัวแทนการเว้นวรรคและทำให้เกิดปัญหา

การเขียนแถวซ้ำช่วยแก้ปัญหาได้


0

ฉันใช้แอพ SelfControl (จริง ๆ แล้วบน macOS mojave 10.14.4) มาพักนึงแล้วลองคิดดูว่า SelfControl ทำรายการได้อย่างไร ... พวกเขามีลักษณะดังนี้:

0.0.0.0 xyz.com
:: xyz.com
0.0.0.0 www.xyz.com
:: www.xyz.com

จากนี้ฉันเปลี่ยนทุกอย่างเป็น localhost ของฉันดังนั้น

127.0.0.1
::1

โรงงาน


ฉันไม่แน่ใจว่าสิ่งนี้ตอบคำถามได้อย่างไร ดูเหมือนว่าเป็นเพียงการสังเกตแบบสุ่มซึ่งไม่เกี่ยวข้องกับคำถาม
เท็ตสึจิน

1
คุณสามารถเพิ่มรายละเอียดบางอย่างเกี่ยวกับสิ่งที่คุณเปลี่ยนแปลงสิ่งที่และสิ่งที่เกี่ยวข้องกับคำถาม?
nohillside

คำถามคือสาเหตุที่ไฟล์โฮสต์ถูกละเว้นตั้งแต่ 10.10.1 ... ฉันอยู่ในสถานการณ์เดียวกับที่รายการคู่มือถูกละเว้น แต่รายการที่ทำผ่านแอป SelfControl ทำงานได้ตามที่ตั้งใจไว้ สิ่งที่ขาดหายไปจากรายการก่อนหน้าของฉันคือส่วนที่สองคือโดเมนที่มี "www" ไม่สามารถเข้าใจได้ว่ามีอะไรผิดปกติกับรายการของฉันเนื่องจากทุกอย่างทำงานได้ดีก่อนหน้า 10.10.1
needlol
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.