nslookup, dig, firefox bỏ qua / etc / hosts mục nhập tệp


10

Có lỗi gì đó với cài đặt Debian hiện tại của tôi. Hầu hết các chương trình như firefox, nslookup, dig, v.v. đều bỏ qua các mục trong /etc/hoststệp, thực sự tôi sử dụng tệp này để chặn Quảng cáo.

một ví dụ

một dòng trong /etc/hoststập tin

127.0.0.1 www.winaproduct.com

Khi tôi làm, dig +short www.winaproduct.comnó trả về địa chỉ IP tương ứng của máy chủ, không 127.0.0.1.

Mở www.winaproduct.comtrên firefox, nó hiển thị trang web tương ứng, nhưng điều này không được mong đợi.

Nhưng không có vấn đề với ping, busybox nslookup, busybox ping, resolveip, vv

Vì vậy, vấn đề là gì ? Và làm thế nào để khắc phục nó? Tôi nghĩ vấn đề là ở thư viện phân giải DNS.

Một sửa chữa tạm thời, thiết lập dnsmasqvà thay đổi nameserverthành 127.0.0.1trong /etc/resolv.conf.

cập nhật

vấn đề được giải quyết một cách kỳ diệu sau khi cài đặt libnss3, như một sự phụ thuộc củagoogle-chrome

/etc/nsswitch.conf trông giống như hosts: files dns

Làm thế nào để nói nslookup, digv.v. yêu cầu tập tin / etc / hosts trước thay vì hỏi trực tiếp DNS?

nhưng tại sao busybox nslookup, wget, resolveipvv được làm việc khác biệt so với nslookup, digvv?


các hosts:mục trong /etc/nsswitch.conftrông như thế nào?
casey

@ casey, /etc/nsswitch.conf trông giống nhưhosts: files dns
Arnab

Vui lòng thêm thông tin quan trọng này trong OQ của bạn.
dan

Đây rõ ràng không phải là một vấn đề DNS. Vui lòng xem câu hỏi rất giống nhau này: unix.stackexchange.com/q/158419/31707 .
dan

Câu trả lời:


16

nslookup, dighostlà các công cụ để truy vấn máy chủ tên DNS.

Nếu cấu hình của bạn không được cung cấp bởi một máy chủ tên (như thông tin được cung cấp /etc/hosts), các công cụ đó sẽ không hiển thị chúng, vì chúng trực tiếp hỏi máy chủ tên.

Nếu bạn muốn kiểm tra xem độ phân giải "thông thường" có hoạt động không (tức là cách được chỉ định trong /etc/nsswitch.conf), bạn có thể sử dụng getent:

getent hosts www.winaproduct.com

getent hosts www.winaproduct.comđang làm việc một cách hoàn hảo, nhưng nslookup, dig, hostvv chỉ là ví dụ, tôi muốn nó trên firefox .
Arnab

1
Nếu nó hoạt động với getent thì nó cũng hoạt động với firefox. (Cả hai đều sử dụng cùng một cơ chế phân giải.) Nếu nó thực sự không hoạt động, hãy kiểm tra cấu hình "bất thường" trong firefox. Có thể bạn đặt một số loại proxy hoặc một cái gì đó như thế này.
michas

cảm ơn vì nhận xét, tôi không sử dụng bất kỳ cấu hình firefox bất thường nào, không có nó không hoạt động với firefox (38.0.1).
Arnab

3
Tôi rất chắc chắn đó là một số vấn đề trình duyệt. Hãy thử wgethoặc một số trình duyệt khác như chrome. Nếu getentcho kết quả mong đợi tất cả chúng nên.
michas

1
@daniel Azuelos, không có gì sai với cài đặt firefox, nó đã được sử dụng No Proxy. Vậy làm thế nào để nói nslookup, digv.v. hỏi /etc/hoststập tin trước thay vì hỏi trực tiếp DNS? Cảm ơn bạn đã bình luận có giá trị của bạn.
Arnab

4

Bạn có thể cài đặt DNSmasq sẽ đọc các mục / etc / hosts của bạn và nhập chúng vào bộ đệm DNS của nó. Sau đó, tất cả các công cụ DNS và các ứng dụng truy vấn DNS của bạn như dig, host và nslookup sẽ nhận được câu trả lời bắt nguồn từ tệp / etc / hosts.

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.