Lưu ý rằng Ubuntu sử dụng độ phân giải systemd từ 17.04 trở đi để câu trả lời này không áp dụng nữa cho các phiên bản Ubuntu gần đây. Xem " xóa bộ đệm DNS trong Ubuntu 17.04 trở lên (18.04) "
Theo mặc định, DNS không được lưu trong bộ nhớ cache trong Ubuntu <17.04 (nhưng nó có thể được lưu trong bộ nhớ cache trong mạng hoặc ứng dụng)
Để xác nhận cách này hay cách khác cho dù dnsmasq
là bộ đệm, hãy chạy ps ax | grep dnsmasq
và xem lệnh đang chạy. Đây là sự cố của máy 13.10 mặc định của tôi:
/ usr / sbin / dnsmasq \
--không giải quyết
--keep-in-foreground \
--no-host \
--bind-giao diện \
--pid-file = / var / run / NetworkManager / dnsmasq.pid \
--listen-address = 127.0.1.1 \
--conf-file = / var / run / NetworkManager / dnsmasq.conf \
--cache-size = 0 \
--proxy-dnssec \
--enable-dbus = org.freedesktop.NetworkManager.dnsmasq \
--conf-dir = / etc / NetworkManager / dnsmasq.d
/etc/NetworkManager/dnsmasq.d
trống rỗng theo mặc định. Vì vậy, không có bất kỳ ghi đè nào xuất hiện trong đó và chỉ để kiểm tra --cache-size=0
có nghĩa là những gì chúng tôi nghĩ nó có nghĩa (thay vì bộ đệm không giới hạn ), man dnsmasq
hiển thị:
-c, --cache-size=<cachesize>
Set the size of dnsmasq's cache. The default is 150 names.
Setting the cache size to zero disables caching.
Vì vậy, trong khi dnsmasq
có thể lưu trữ DNS, nó không lưu vào hộp. Bạn có thể kiểm tra máy của mình và các thư mục cấu hình khác nhau để kiểm tra xem bạn đang ở trên cùng một trang.
Nếu bạn đang gặp vấn đề về bộ đệm, điều này có thể xảy ra ở một trong một vài nơi:
- Thượng nguồn từ máy tính của bạn. Một số bộ định tuyến bộ đệm. Nhiều mạng công ty sẽ lưu trữ DNS. Nhiều máy chủ DNS do ISP điều hành và sẽ sử dụng bộ nhớ cache của riêng họ. Cách duy nhất để đảm bảo chống lại bộ đệm mạng là sử dụng bộ đệm bạn có thể tự làm mới. Đây là lý do tại sao tôi thích OpenDNS.
- Trong ứng dụng khách (đáng chú ý là các trình duyệt). Các ứng dụng có thể thực hiện tất cả các loại bộ nhớ đệm riêng mà Ubuntu không có hiệu lực. Làm thế nào Firefox lưu trữ DNS . Cách xóa bộ đệm DNS của Chrome . Các trình duyệt khác (và ứng dụng) có thể có cơ chế riêng.
Tôi đang tìm kiếm cái thùng ở đây nhưng có lẽ bạn đã cài đặt một máy chủ DNS không chuẩn trong Ubuntu thay vì bật bộ nhớ đệm dnsmasq
. Có rất nhiều: nscd
, DJBDNS dnscache
(aka TinyDNS), pdns
, pdnsd
, BIND9 (và các biến thể của nó), và nhiều hơn nữa tôi có thể thậm chí không nhớ. Chúng có thể sẽ được chứng minh bằng /etc/resolv.conf
(với cấu hình trong / etc / decvconf / `để tự động tạo tệp đó). Sau đây cho thấy một truy vấn DNS bị chặn cục bộ:
$ nslookup askubuntu.com
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: askubuntu.com
Address: 198.252.206.24
Nếu bạn không nhấn 8.8.8.8 (hoặc bất cứ điều gì bạn mong muốn máy chủ DNS của mình), hãy kiểm tra xem bạn đang nhấn gì. Trong trường hợp của tôi, tôi có thể thấy điều này chỉ dnsmasq
được thiết lập để phản chiếu các truy vấn DNS trở lại cho LXC, nhưng trong trường hợp của bạn, nó có thể đang thực hiện những điều tồi tệ.
Nếu bạn đã thực hiện các bộ đệm được liệt kê, quy trình xóa từng thay đổi:
sudo /etc/init.d/nscd reload # nscd
sudo /etc/init.d/named restart # bind9
Trên một lưu ý hơi liên quan, xem điều này để kích hoạt bộ đệmdnsmasq
.
/etc/hosts
. Tôi chỉ chắc chắn rằng địa chỉ IP cũ của tên miền của tôi đã được lưu trong bộ nhớ cache, nhưng chỉstrace ping example.com
tiết lộ rằng tôi đã quên xóa/etc/hosts
bản ghi mà tôi đã thêm một thời gian trước vì thiếu kiên nhẫn cho việc truyền DNS.