Tệp OS X 10.10.1 / etc / hosts & / private / etc / hosts đang bị bỏ qua và không giải quyết


40

Giống như tiêu đề nói, chạy os x 10.10.1. nếu tôi có một mục trong tệp máy chủ của mình và thực hiện dighoặc nslookupnó vẫn hiển thị một IP khác với những gì trong tệp máy chủ của tôi ngay cả sau khi cố gắng xóa các bộ đệm khác nhau.

Tôi đã thử như sau ..

  1. tuôn ra mdns và udns cache bằng cách chạy:
    1. sudo discoveryutil mdnsflushcache;
    2. sudo discoveryutil udnsflushcaches;
  2. xóa bộ nhớ cache bằng cách sử dụng dscacheutil -flushcache
  3. tải lại discoveryd.plisttập tin
    1. sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
    2. sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

tập tin máy chủ của tôi trông như thế này ..

% 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
Có vẻ như Yosemite không sử dụng máy chủ theo cách tương tự như trước đây; nó cũng không xóa bộ nhớ cache theo cách tương tự, & mDNS đã ngồi ở ghế sau - Điều này có cả đống trò chuyện về chủ đề này - forum.macrumors.com/showthread.php?t=1741422 Chỉnh sửa ahh ... Tôi đoán bạn đã có được như azchipka.thechipkahouse.com/ Từ
Tetsujin

cảm ơn, vâng tôi đã đọc nó rồi .. nếu đây là cách os x sẽ diễn ra .. nó
ọp ẹp

1
Tôi rất vui vì tôi không phải phụ thuộc vào máy chủ trên Mac, tbh; Tôi có xu hướng luôn chơi trong Win khi tôi cần làm điều đó - mặc dù đó không phải là điều duy nhất khiến tôi tránh xa Yosemite ngay bây giờ :(
Tetsujin

Vâng rmbp của tôi là máy dev chính mà tôi sử dụng để phát triển web / sysadmin thật không may và tôi cần phải tìm ra điều này nếu không tôi sẽ quay trở lại với mavericks.
gorelative

Những người khác có thể chỉ muốn vô hiệu hóa ipv6 trên máy trạm của họ, tôi đã tìm thấy giải thích về khóa này: technipages.com/how-to-disable-ipv6-in-macos-sierra - Tuy nhiên, ngay cả sau khi vô hiệu hóa ipv6 trên nic của tôi, vấn đề vẫn tồn tại .
James T Snell

Câu trả lời:


61

/ private / etc / hosts dường như hoạt động bình thường đối với tôi trong Yosemite (phiên bản 10.10.1). Không cần thiết phải xóa bộ đệm hoặc đặt lại discoveryd(trình phân giải DNS trong Yosemite); sudo fs_usage | grep private/etc/hostshiển thị discoverydđọc tệp ngay sau khi tôi lưu các thay đổi vào nó.

[Cập nhật: discoverydchỉ được sử dụng trong các phiên bản OS X 10.10.0 - 10.10.3. Trong cả hai phiên bản trước và sau, mDNSRespondercung cấp cùng một chức năng ... và cũng ngay lập tức thông báo thay đổi trong / etc / hosts.]

Tuy nhiên, dig, nslookup, và hostsẽ không thấy các mục trong đó bởi vì họ bỏ qua phân giải của hệ thống và làm tra cứu DNS thô. Họ đã luôn luôn làm điều này, vì vậy đây không phải là mới ở Yosemite. Cách "chính thức" để thực hiện tra cứu thông qua bộ giải quyết hệ thống trong OS X là sử dụng dscacheutil:

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

... nhưng vì điều đó rất dài dòng, tôi có xu hướng chỉ sử dụng pingthay thế (và sau đó nhìn vào dòng đầu tiên, nơi nó liệt kê IP mà nó đang ping). Bắt đầu từ 10.9, bạn cũng có thể sử dụng tab Tra cứu của Tiện ích Mạng (trước đó được sử dụng digvà do đó bỏ qua chính sách tra cứu hệ thống).

BTW, xin vui lòng không chú ý đến chủ đề macrumors mà Tetsujin liên kết; nó chứa đầy những người không biết họ đang làm gì và đang hiểu sai về kết quả của những sai lầm của chính họ.


1
nhờ Gordon, yeah tôi nhận ra sau khi tôi đăng tải này dig, nslookuphostkhông sử dụng độ phân giải dns địa phương. Điều đó đang được nói /etc/hostslà hoạt động như mong đợi ..
gorelative

Nếu tôi cập nhật /etc/hoststệp của mình hoặc tệp của mình /private/etc/hoststhì nó hoàn toàn không phản ánh với dscacheutil -q host -a name www.example.combất kỳ lệnh nào khác ..
Chuyến đi

3
@Trip đảm bảo các mục bạn đã thêm được định dạng chính xác: Địa chỉ IP được theo sau bởi khoảng trắng hoặc tab, theo sau là tên, sau đó là nguồn cấp dữ liệu ở cuối dòng. Hãy thử in tập tin máy chủ cat -vet /etc/hostsđể hiển thị các ký tự vô hình bình thường. Mỗi dòng sẽ trông giống như "127.0.0.1 ^ Inetsecuritybureau.com $" ("^ I" là một tab và "$" là nguồn cấp dữ liệu) hoặc "127.0.0.1 Netsecuritybureau.com $". Nếu bạn thấy "^ M" (trả lại vận chuyển) ngay trước "$", bạn có văn bản được định dạng DOS / Windows và bạn cần xóa (các) trả lại vận chuyển.
Gordon Davisson

Ah wow cảm ơn rất nhiều vì sự giúp đỡ. Tôi đã đi theo sự dẫn dắt của bạn về việc đảm bảo đó là một tab hoặc không gian. Dòng của tôi đọc chính xác : M127.0.0.1^Iyoutube.com^M^M, sau đó tôi đã thực hiện dscacheutil -flushcache; sudo killall -HUP mDNSRespondervà khi điều hướng đến youtube.com, nó vẫn hiển thị youtube chứ không phải localhost.
Chuyến đi

@Trip Có một số cách để dọn sạch các ký tự vô hình như trong dòng lệnh, nhưng tôi sẽ khuyên dùng trình soạn thảo GUI TextWrangler - sử dụng menu View> Hiển thị văn bản> Hiển thị Invisibles để xem (và chỉnh sửa) những thứ như thế Vận chuyển trở lại. Ngoài ra, nó miễn phí và có các tùy chọn để hiển thị / mở các tệp và thư mục vô hình (như / etc) và sử dụng quyền quản trị để chỉnh sửa các tệp hệ thống.
Gordon Davisson

17

Tôi đã phát hiện ra một nếp nhăn khác với vấn đề này.

Để khắc phục sự cố mà tôi gặp phải, tôi đã phải THÊM các mục nhập tệp lưu trữ kiểu IPv6.

Có vẻ như Safari sẽ bỏ qua các mục nhập IPv4 NẾU bạn có thiết lập cấu hình mạng IPv6.

Bạn phải thêm các mục trùng lặp giải quyết địa chỉ IPv6 localhost trong / etc / hosts.

Mục nhập IPv4 127.68.56.101 facebook.com

ví dụ: mục IPv6 fe80::1%lo0 facebook.com

v.v.


1
Lưu ý rằng tôi đã thành công để cái này hoạt động bằng cách sử dụng các địa chỉ IP ngắn nhất: 0.0.0.0 và :: 1
Ben Morrow

cảm ơn, làm việc cho tôi là tốt đã gãi đầu sau khi khôi phục cấu hình vhosts / apache của tôi sau khi nâng cấp. đánh giá cao.
Gavin

Yep này đã sửa nó cho tôi quá.
advert2013 ngày

1

Tập tin lưu trữ của tôi tiếp tục bị bỏ qua sau khi tôi chỉnh sửa trong chỉnh sửa văn bản. Tôi đã thử một số cách để sửa các kết thúc dòng, thêm các mục IPv6 vào các mục IPv4 hiện có mà không thành công sau câu trả lời của JB Smiths ở trên . Tôi nghi ngờ câu trả lời của anh ấy sẽ hoạt động nếu công ty của tôi hỗ trợ IPv6 mà tôi đã tìm ra sau những nỗ lực của mình.

Giải pháp duy nhất hiệu quả với tôi là sử dụng plugin GUI miễn phí này để chỉnh sửa tệp máy chủ.

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


1

Tôi đã tìm thấy bài viết này vì Yosemite 10.10.5 không chọn các thay đổi tệp máy chủ của tôi và tôi không thể làm gì được khi sửa nó. (Tôi đã khởi động lại, thử xóa bộ nhớ cache, làm theo mọi lời khuyên tôi có thể tìm thấy trên internet, v.v.).

Câu trả lời rất đơn giản, thật đáng xấu hổ, nhưng tôi nghĩ tôi muốn chia sẻ. Tôi đã sử dụng textedit để chỉnh sửa tệp máy chủ và nó có quyền tự do lưu tệp dưới dạng hosts.txt. Thông thường tôi sẽ nhận thấy một cái gì đó như thế này, nhưng tôi đang sử dụng một bản cài đặt mới của Yosemite và chưa bật "hiển thị tất cả các phần mở rộng tệp" nên có vẻ như tên tệp đã thay đổi khi tôi xem nó trên máy tính để bàn của mình.

Vì vậy, điều này khá rõ ràng và hầu hết mọi người đọc bài đăng này có thể đã thực hiện điều này, nhưng hãy chắc chắn kiểm tra xem tệp lưu trữ của bạn có thực sự ở đó không và đã được thay thế bởi hosts.txt .

Để bật hiển thị tiện ích mở rộng tên tệp, hãy đi tới Finder> Tùy chọn> Hiển thị tất cả các tiện ích mở rộng tên tệp

Để ngăn TextEdit thêm phần mở rộng .txt vào tệp, hãy mở tệp trong Chỉnh sửa văn bản và chọn Tệp> Lưu dưới dạng (Nếu bạn không thấy mục menu Lưu dưới dạng , hãy giữ phím tùy chọn sau khi bạn nhấp vào TệpLưu dưới dạng nên xuất hiện trong menu). Tìm tùy chọn Nếu không có tiện ích mở rộng nào được cung cấp, hãy sử dụng ".txt" và bỏ chọn nó.


0

Tôi tin rằng Apple sẽ nhận ra đây là một lỗi (tôi đã gửi một cái hôm nay). Tôi đã nhận thấy rằng các mục mới trong /etc/hostsđược chọn nhưng, thay đổi đối với các mục hiện có bị bỏ qua. Vì vậy, .... việc thay đổi tên máy chủ của mục (ví dụ web1 thành web1a) đã cung cấp một cách giải quyết cho tôi.

Mục nhập OLD / etc / hosts: 54.173.164.18 web1

MỚI / etc / host entry: 54.174.161.12 web1a


sudo dscacheutil -flushcache - sẽ xóa bộ đệm dịch vụ thư mục.
Kevin Buchs

0

Trong trường hợp của tôi, tôi đã thiết lập .ssh / config

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

Bạn có thể giải thích những gì tập tin cấu hình làm và làm thế nào điều này có liên quan đến câu hỏi?
klanomath

1
Câu hỏi là tại sao một mục trong tệp cục bộ / etc / hosts bị bỏ qua. Trong trường hợp của tôi, nó đã bị bỏ qua vì tôi đã hướng dẫn đường hầm tất cả lưu lượng truy cập đến một bộ máy (* .ourdemo.ca) thông qua hộp proxy (ourjumpbox.ca). SSH ngoan ngoãn kết nối, như vậy cuối cùng nó là tệp / etc / hosts của proxy được sử dụng để giải quyết địa chỉ thay vì tệp cục bộ / etc / hosts của tôi.
Martin Cleaver

0

Tôi đã có một vấn đề rất giống trong đó tôi nhận được qua thư hai hàng được thêm vào /etc/hosts

Tên miền chứa một lượt -thíchmy-domain.com

Vấn đề hóa ra là ứng dụng email của người gửi - không có gì phải nói, MS Outlook - đã chuyển đổi ascii -trong -ký tự dài mà Microsoft rất thích sử dụng tính năng tự động nhúng của nó để thay thế bằng tính năng tự động nhúng -của họ -.

Các tập tin máy chủ đã trông hoàn hảo và thật khó để tìm ra vấn đề này. Khi tôi xóa các hàng và viết lại bằng tay, chúng bắt đầu hoạt động.

Thật khó để hiểu điều này, đến nỗi tôi đã đi sâu vào lý do tại sao máy khách MacOS nên bỏ qua tệp máy chủ và bỏ qua trực tiếp để phân giải tên.


0

Chỉ có vấn đề này. Nó được gây ra bằng cách tạo bản sao / dán từ hipchat thay vì viết địa chỉ.

Quá trình sao chép đã thêm một số ký tự xấu thay vì khoảng trắng và gây ra sự cố.

Viết lại hàng đã giải quyết vấn đề.


0

Tôi đang sử dụng ứng dụng SelfControl (thực tế trên macOS mojave 10.14.4) khá lâu rồi và tìm cách kiểm tra xem SelfControl thực hiện như thế nào ... chúng trông như thế này:

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

dựa trên điều này tôi đã thay đổi mọi thứ thành localhost của mình, vì vậy

127.0.0.1
::1

công trinh.


Tôi không chắc làm thế nào điều này trả lời câu hỏi cả. Có vẻ như chỉ là một số quan sát ngẫu nhiên, không liên quan đến câu hỏi.
Tetsujin

1
Bạn có thể thêm một số chi tiết về nơi chính xác bạn đã thay đổi những gì, và nó liên quan đến câu hỏi như thế nào?
nohillside

Câu hỏi đặt ra là tại sao tệp máy chủ bị bỏ qua kể từ ngày 10.10.1 ... Tôi đã ở trong tình huống tương tự rằng các mục nhập thủ công bị bỏ qua nhưng các mục được thực hiện qua ứng dụng SelfControl, vẫn hoạt động như dự định. Điều còn thiếu với các mục trước của tôi, là phần thứ hai, tên miền với "www.". Không thể tìm ra điều gì khác với các mục của tôi, vì tất cả đều hoạt động tốt trước ngày 10.10.1.
Needlol
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.