Làm cách nào tôi có thể xóa DNS Cache?


27

Làm cách nào để xóa bộ nhớ cache DNS trên điện thoại Android? (Droid3, Gingerbread, bắt nguồn từ cụ thể)

Lý tưởng nhất là tôi đang tìm kiếm một lệnh để chạy qua trình giả lập thiết bị đầu cuối, một cái gì đó tương tự như

ipconfig /flushdns

Trên một máy tính windows.

Phiên bản Linux này là gì?


Bạn có cần làm điều này cho một ứng dụng hệ thống, ứng dụng của bên thứ ba hoặc ứng dụng của bạn không?
onik

Tôi đoán bên thứ ba? Tôi cần nó khi tôi ping máy chủ thông qua Trình mô phỏng đầu cuối.
Steve Robbins

Vui lòng cập nhật tiêu đề của bạn để phản ánh rằng bạn muốn có câu trả lời dựa trên CLI. Đây là thứ hạng trong Google và 99% những người tìm kiếm tiêu đề này không có kỹ năng root hoặc CLI.
PJ Brunet

Câu trả lời:


11

Trên một hệ thống Linux điển hình, bộ đệm được xóa bằng cách chạy /etc/init.d/nscd restart, nhưng ít nhất ROM của tôi không sử dụng nscd để lưu DNS. Bạn có thể kiểm tra nếu bạn làm, nhưng tôi nghi ngờ nó. Tôi đã thấy các đề xuất rằng xóa bộ nhớ cache cũng sẽ xóa bộ đệm DNS, nhưng một cách chắc chắn là thực hiện khởi động lại cứng (tắt máy, tháo pin trong 30 giây, gắn lại pin và khởi động).


1
Tất cả các googling của tôi cũng đưa ra gợi ý "khởi động lại cứng".
Chahk

Tôi đang từ chối vì câu trả lời yêu cầu root và / hoặc giả sử quyền truy cập shell là không thực tế đối với hầu hết người dùng Android. Phần còn lại của câu trả lời không giải quyết được vấn đề của tôi. Ngoài ra tôi tin rằng Matthew Read nên xem xét lại việc khóa câu hỏi vì đây hoàn toàn không phải là một "thỏa thuận được thực hiện". DNS cực kỳ phức tạp và sẽ có nhiều câu trả lời hợp pháp hơn từ những người không có tài khoản Android ở đây, tôi là một ví dụ về điều đó. FWIW Tôi có hơn 10 danh tiếng và vẫn không thể trả lời câu hỏi.
PJ Brunet

@PJBrunet Để chính xác, bạn có 1 đại diện và 100 đại diện từ phần thưởng liên kết, không được tính vì bạn chưa kiếm được nó trên trang web này. Xem câu hỏi "được bảo vệ" là gì? để biết thêm chi tiết. Đối với câu hỏi, tôi sẽ không bảo vệ nó bây giờ.
onik

14

Địa chỉ được lưu trong bộ nhớ cache trong 600 giây (10 phút) theo mặc định. Tra cứu thất bại được lưu trữ trong 10 giây. Từ mọi thứ tôi đã thấy, không có gì được tích hợp để xóa bộ đệm. Đây rõ ràng là một lỗi được báo cáo trong Android do cách nó lưu trữ bộ đệm DNS. Xóa bộ nhớ cache của trình duyệt không chạm vào DNS, "thiết lập lại cứng" sẽ xóa nó vì đơn giản là nó hết thời gian.

Chúng tôi có thể hỏi lý do cơ bản để cần xóa bộ đệm DNS không? Có lẽ có một giải pháp khác bị bỏ lỡ vì chúng ta không nhìn vào bức tranh lớn hơn.


2
Không chắc chắn về OP, nhưng tôi có một trường hợp sử dụng trong đó mạng gia đình của tôi phục vụ các địa chỉ như server.home.mydomain.com, nhưng ISP của tôi giải quyết * .mydomain.com (đối với mọi giá trị của "*", điều này chưa được ánh xạ) đến www.mydomain.com nếu điện thoại của tôi sử dụng 3G / 4G, vì vậy đôi khi tôi không thể truy cập mạng gia đình cho đến khi hết bộ nhớ cache.
TomG

Có vẻ như bộ nhớ đệm 10 phút bắt buộc được cố định trong JB - xem cam kết này . Đối với các bản phát hành cũ hơn, hành vi bộ đệm Java có thể được điều chỉnh theo networkaddress.cache.ttlnetworkaddress.cache.negative.ttltrong build.prop.
Serge Vlasov

Tuy nhiên, vẫn còn một số sự cố DNS (có lẽ khác nhau) ngay cả trong 4.3 - máy tính bảng trên wifi có thể không nhận được địa chỉ IP cho tên mà các máy Linux và Windows (trên mạng lưu trữ wifi) có thể giải quyết.
Jon Shemitz

7

Cách duy nhất để làm điều này trong Android là thực hiện khởi động lại cứng. Các công cụ dòng lệnh cần thiết thường không có sẵn, tuy nhiên trong các thử nghiệm của tôi, khởi động lại cứng luôn thực hiện thủ thuật cho tôi (Galaxy Nexus và HTC Desire, nhiều ROM khác nhau).

Đây là một nỗi đau, nhưng nó nhanh hơn thời gian chờ bộ nhớ cache 10 phút.


Làm thế nào để thực hiện điều này?
Steve Robbins

1
- Nhấn và giữ nút nguồn - Chọn "Tắt nguồn" - Cho phép điện thoại tắt hoàn toàn - Tháo pin và đợi 30 giây - Trả lại pin - Bật lại điện thoại. Theo kinh nghiệm của tôi, việc tháo pin là không cần thiết, nhưng một số người đã báo cáo rằng nó không hoạt động nếu bạn bỏ lỡ bước này.
Martin

2
Tháo pin là vô nghĩa. Khởi động lại công trình. Tôi nghi ngờ rằng thời gian bổ sung cho việc đó chỉ đơn giản là cho phép một số bộ đệm DNS bên ngoài hết thời gian.
Matthias Urlichs

5

Ngoài ra còn có các ứng dụng như Internet Booster hứa hẹn sẽ "xóa bộ đệm DNS" (trong số những thứ khác). Tôi đã không tự mình thử nó, và hơn nữa dường như không có cách nào để làm điều đó (chỉ một nút "tối ưu hóa" "áp dụng cải tiến"); ngoài ra các hiệu ứng của nó có thể khác nhau giữa các thiết bị (nói mô tả của ứng dụng) - nhưng nó có thể tốt hơn so với khởi động lại. Btw: trong khi không đề cập đến root theo yêu cầu, nó vẫn có thể cần thiết.

Có một số "ứng dụng tương tự" được liệt kê trên Google Play - nhưng lưu ý rằng hầu hết trong số chúng bao gồm quảng cáo Airpush và / hoặc muốn có quyền quá mức, đó là lý do tại sao tôi không đặt tên cho chúng ở đây.


Một giải pháp khả thi khác (không phải do tôi tự kiểm tra) Tôi đã tìm thấy ở MadPC , dường như trích dẫn câu trả lời của người dùng8522 trước khi nêu:

Tùy chọn cuối cùng nhưng chuyên sâu nhất đối với bản thân người dùng trừ khi họ chỉ muốn đợi cập nhật: Yêu cầu người dùng của bạn vào cài đặt -> ứng dụng -> Vị trí mạng -> Xóa dữ liệu

Một cách ngắn khác để đề cập đến một cách dễ dàng khác để xóa DNS (một lần nữa, tôi không tự kiểm tra điều này): Đơn giản chỉ cần chuyển sang chế độ máy bay (rất tiếc, không có mạng?) Và quay lại (à, đó là) nên thực hiện thủ thuật. Nghe có vẻ ngu ngốc, nhưng tôi có thể tưởng tượng khi vào chế độ máy bay, Android sẽ làm một cái gì đó tương tự /etc/init.d/networking stop, có hiệu ứng DNS như hiệu ứng phụ.


Một giải pháp rất dễ dàng đã được dtumaykin cung cấp trong các bình luận bên dưới: chỉ cần chuyển sang chế độ máy bay và quay lại có thể đã làm điều đó (tất nhiên với hiệu ứng phụ của mạng sẽ giảm trong vài giây;) Mặc dù nó có thể không hoạt động trên một số thiết bị, nó đáng để thử: không cần cài đặt thêm và dễ dàng thực hiện ngay cả bằng n00bs.

Nếu bất cứ ai đã thử một trong những giải pháp đó, xác nhận (hoặc ngược lại) chắc chắn được hoan nghênh :)


3
Có các lệnh shell ndc resolver flushdefaultifndc resolver flushif wlan0; họ yêu cầu root. Ngoài ra còn có phương thức NetworkMan ManagementService.flushDefaultDnsCache () , chỉ cần CHANGE_NETWORK_STATE trước JB, nhưng sau đó đã bị khóa xuống CONNECTIVITY_INTERNAL. Vì vậy, rõ ràng có một cách hackish để dọn dẹp bộ đệm DNS mà không cần root (sau khi điều chỉnh build.prop để giết bộ đệm cấp Java), nhưng nó sẽ không hoạt động trong JB.
Serge Vlasov

Cảm ơn thông tin bổ sung, @SergeyVlasov! Bạn có biết liệu có bất kỳ phương pháp nào bạn đề cập được kích hoạt bởi hai giải pháp được đề xuất được đề cập cuối cùng trong câu trả lời của tôi không (hoặc nếu chúng có hiệu quả, nhưng vì một lý do khác)?
Izzy

4
Chế độ máy bay bật tắt làm việc cho tôi. Samsung Galaxy S4 Mini và CM12.1.
dtumaykin 04/07/2015

Tôi không thể trả lời vì Matthew Read đã khóa câu hỏi. Vui lòng tát anh ta cho tôi :-) Khởi động lại cứng không hoạt động với tôi, chế độ máy bay không hoạt động, xóa "vị trí" (theo câu trả lời) không hoạt động, giờ chờ cũng không hoạt động. Trước đây, tôi chỉ đơn giản là giải quyết điều này bằng cách đóng tab trình duyệt và mở một tab mới. Tuy nhiên, có một ứng dụng "không root" 8.8.8.8 (Google DNS), tôi không thể cấp quyền truy cập VPN vì tôi đã có một ứng dụng VPN mà tôi đã trả tiền. Giải pháp cho tôi là thay đổi cài đặt "vị trí ảo" của VPN hoặc giải pháp là dừng và khởi động VPN của tôi. Giả sử VPN của tôi có bộ đệm DNS riêng.
PJ Brunet

@PJBrunet Tôi sẽ không tát một mod (quá nguy hiểm, anh ta có thể đóng tài khoản của tôi;) và bên cạnh đó, cánh tay của tôi không đủ dài để vươn ra nước ngoài). Nhưng đạt được 10 rep không quá khó (hỏi một câu hỏi hay khi nhận 2 upvote hoặc viết câu trả lời nhận 1 upvote); với điều đó, hãy quay lại đây và viết câu trả lời của bạn :) Cảm ơn bạn đã chia sẻ!
Izzy

2

Trong các phiên bản hiện đại của Android, có một tùy chọn để xóa bộ đệm DNS của Chrome trong chrome: // net-internals / # dns


không làm việc cho tôi, vẫn phải thực hiện khởi động lại mạnh mẽ
Cerveser

0

Trong trường hợp của tôi, tôi chỉ có một tên miền mà tôi cần phải xóa. Các đề xuất như bật chế độ trên máy bay, thực hiện khởi động lại cứng hoặc các hành động trong chrome: // net-internals / # dns không hoạt động với tôi. Thay vào đó, tôi tạm thời thay đổi cài đặt WiFi của mình để sử dụng máy chủ tên của Google vào ngày 8.8.8.8.

Đây là những bước tôi đã thực hiện:

  • Cài đặt -> WiFi -> nhấn kết nối hiện tại và lưu ý địa chỉ IP hiện tại
  • Nhấp dài vào kết nối hiện tại -> Sửa đổi mạng
  • Kiểm tra "Cài đặt nâng cao"
  • Thay đổi "cài đặt IP" thành "tĩnh"
  • Đặt "địa chỉ IP" thành IP hiện tại từ bước đầu tiên
  • Đặt "Cổng" vào địa chỉ IP của bạn nhưng với .1 là số thứ 4 (Đây chỉ là dự đoán. Nếu bạn biết đó là một cái gì đó khác, hãy sử dụng số đó)
  • Đặt "DNS 1" thành 8.8.8.8

Sau các bước này, khi tôi pingchỉnh sửa tên miền trong bảng điều khiển, nó đã phân giải thành địa chỉ IP chính xác và dường như ghi đè lên bộ nhớ cache cũ. Có lẽ việc truy cập tên miền trong trình duyệt sẽ có tác dụng tương tự.

Khi tôi quay lại WiFi và đặt "cài đặt IP" trở lại "DHCP", tên miền chính xác tiếp tục phân giải thành địa chỉ IP hiện tại.

Đây là trên Sony Xperia Z3 chạy Android 5.1.1


0

Trên Adroid 5.1 Mobile đã nhận sai DNS khi được chuyển sang nhiều giữa hai mạng WLAN; (Một câu hỏi Đánh dấu trên mạng Connexion. Tôi không muốn khôi phục điện thoại của mình như tôi đã làm một lần .. Engelsiz: DNS Changer đã sửa nó; )

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.