Đầu tiên, nếu networksetup -getdnsservers <service name>
không hiển thị bất cứ điều gì, bạn không có bất cứ điều gì được liệt kê trong Tùy chọn hệ thống> Netowrk trong "Máy chủ DNS:".
Thứ hai, điều quan trọng cần lưu ý là OS X không xử lý DNS như hầu hết các hệ thống. Mỗi https://developer.apple.com/l Library / mac / document / Magnwin / Reference / Manager / man5 / resource.5.html Về cơ bản, điều này có nghĩa là OS X có nhiều máy khách DNS tùy thuộc vào cấu hình của bạn. Kết quả của nhiều dịch vụ này có nghĩa là có những tình huống sử dụng Safari để truy cập trang web ( http://www.example.com ) sẽ đưa bạn đến địa chỉ IP mà OS X đã truy xuất từ DNS (giả sử 1.2.3.4) trong khi đồng thời, thực hiện một đào
$ dig www.example.com
sẽ trả lại kết quả khác nhau. (có lẽ 2.3.4.5)
Lý do cho điều này nằm ở cách OS X xử lý DNS.
Nếu bạn chạy $ man dig
bạn nhận được trong số những thứ khác, như sau:
Mac OS X THÔNG BÁO Lệnh đào không sử dụng độ phân giải địa chỉ và tên máy chủ hoặc các cơ chế định tuyến truy vấn DNS được sử dụng bởi các quy trình khác đang chạy trên Mac OS X. Kết quả của các truy vấn tên hoặc địa chỉ được in bởi dig có thể khác với các quy trình được tìm thấy bởi các quy trình khác sử dụng các cơ chế phân giải địa chỉ và tên riêng của Mac OS X. Kết quả của các truy vấn DNS cũng có thể khác với các truy vấn sử dụng thư viện định tuyến DNS của Mac OS X.
Cũng $man nslookup
sẽ trả lại một cái gì đó tương tự
Mac OS X THÔNG BÁO Lệnh nslookup không sử dụng tên máy chủ và độ phân giải địa chỉ hoặc cơ chế định tuyến truy vấn DNS được sử dụng bởi các quy trình khác chạy trên Mac OS X. Kết quả của các truy vấn tên hoặc địa chỉ được in bởi nslookup có thể khác với các quy trình được tìm thấy bởi các quy trình khác sử dụng các cơ chế phân giải địa chỉ và tên riêng của Mac OS X. Kết quả của các truy vấn DNS cũng có thể khác với các truy vấn sử dụng thư viện định tuyến DNS của Mac OS X.
Tất cả điều này thực sự là một cách nói khá dài, cách tốt nhất để xem máy chủ DNS nào đang được sử dụng là xem Tùy chọn hệ thống> Mạng
Các mục nhập "Máy chủ DNS:" thường ở đó và "Miền tìm kiếm:" sẽ cho phép bạn tìm kiếm các địa chỉ không đầy đủ.
Nếu "Máy chủ DNS:" không xuất hiện, thì OS X sẽ cố gắng sử dụng địa chỉ trong "Bộ định tuyến:" cho DNS.
VÀ, trên hết niềm vui này, có các tiện ích và các quy trình khác có thể không sử dụng Thư viện định tuyến DNS OS X và chúng sẽ trực tiếp nhấn vào nội dung của /etc/resolv.conf.
Câu trả lời ngắn gọn là đây:
- Nếu bạn đi theo nội dung của Tùy chọn hệ thống> Mạng, bạn đang xem xét điều tương tự mà hầu hết các quy trình đang sử dụng.
- Nội dung của Tùy chọn hệ thống> Mạng, sẽ được điền /etc/resolv.conf, nhưng không phải lúc nào cũng vậy.
- Một số quy trình khác (như đào và nslookup) đang truy cập trực tiếp /etc/resolv.conf.
Và, trên hết điều này - Nếu bạn không sử dụng các máy khách VPN được tích hợp trong OS X, có thể các tuyến và máy chủ DNS bổ sung đang được sử dụng networksetup -getdnsservers <service name>
sẽ không hiển thị. Máy khách VPN của bạn có thể có khả năng hiển thị cho bạn các tuyến và máy chủ DNS, tôi biết rằng máy của tôi cũng vậy.
Tôi biết rằng điều này không trả lời chính xác câu hỏi của bạn, nhưng hy vọng điều này giúp bạn nhận ra rằng không phải lúc nào cũng dễ dàng tìm ra "sự thật" liên quan đến DNS trên máy Mac. Nói chung, bạn an toàn khi giả định rằng nội dung của Tùy chọn hệ thống> Mạng hoặc nội dung networksetup -getdnsservers <service name>
là nơi bạn sẽ nhận DNS của mình. Tuy nhiên nếu mọi thứ có vẻ kỳ lạ, hãy nhớ rằng cũng có những khả năng khác. Sử dụng đào để giúp xác định nếu có sự khác biệt đang diễn ra.
Cuối cùng, đối với những độc giả đang tự hỏi làm thế nào để có được <service name>
trong networksetup -getdnsservers <service name>
, hãy thử sử dụngnetworksetup -listallnetworkservices
Hóa đơn