ฉันจะล้าง DNS Cache ได้อย่างไร


27

ฉันจะล้างแคช DNS ของฉันบนโทรศัพท์ Android ของฉันได้อย่างไร (Droid3, Gingerbread, root จะเฉพาะเจาะจง)

นึกคิดฉันกำลังมองหาคำสั่งให้ทำงานผ่าน terminal emulator สิ่งที่คล้ายกับ

ipconfig /flushdns

บนเครื่องที่ใช้ windows

รุ่น Linux คืออะไร


คุณต้องทำสิ่งนี้กับแอพระบบแอพของบุคคลที่สามหรือแอพของคุณหรือไม่?
onik

บุคคลที่สามฉันเดา ฉันต้องการมันเมื่อฉัน ping เซิร์ฟเวอร์ผ่าน Terminal Emulator
Steve Robbins

โปรดอัปเดตชื่อของคุณเพื่อแสดงว่าคุณต้องการคำตอบจาก CLI นี่เป็นการจัดอันดับใน Google และ 99% ของผู้ที่ค้นหาชื่อนี้ไม่มีทักษะรูตหรือ CLI
PJ Brunet

คำตอบ:


11

บนระบบ Linux ทั่วไปแคชจะถูกล้างโดยการเรียกใช้/etc/init.d/nscd restartแต่อย่างน้อย ROM ของฉันไม่ได้ใช้ nscd เพื่อแคช DNS คุณสามารถตรวจสอบว่าของคุณทำ แต่ฉันสงสัยมัน ฉันเคยเห็นคำแนะนำว่าการล้างแคชเบราว์เซอร์จะล้างแคช DNS ด้วย แต่วิธีหนึ่งที่แน่นอนคือการรีบูตเครื่องอย่างหนัก (ปิดเครื่องถอดแบตเตอรี่ออกเป็นเวลา 30 วินาทีใส่แบตเตอรี่ใหม่และบู๊ต)


1
googling ทั้งหมดของฉันยังนำเสนอข้อเสนอแนะ "รีบูตยาก"
Chahk

ฉันกำลัง downvoting เพราะคำตอบนั้นต้องการรูทและ / หรือสมมติว่าเข้าถึงเชลล์ซึ่งไม่สมจริงสำหรับผู้ใช้ Android ส่วนใหญ่ คำตอบที่เหลือไม่ได้แก้ปัญหาของฉัน นอกจากนี้ฉันเชื่อว่า Matthew Read ควรพิจารณาการล็อคคำถามอีกครั้งเพราะนี่ไม่ใช่ "การเจรจาที่ทำได้" DNS นั้นซับซ้อนมากและจะมีคำตอบที่ถูกต้องจากผู้ที่ไม่มีบัญชี Android ที่นี่ฉันเป็นตัวอย่าง FWIW ฉันมีชื่อเสียงมากกว่า 10 คนและยังไม่สามารถตอบคำถามได้
PJ Brunet

@PJBrunet เพื่อความถูกต้องคุณมี 1 ตัวแทนและ 100 ตัวแทนจากโบนัสการเชื่อมโยงซึ่งไม่นับเนื่องจากคุณยังไม่ได้รับบนเว็บไซต์นี้ ดูคำถาม "ป้องกัน" คืออะไร สำหรับรายละเอียดเพิ่มเติม สำหรับคำถามที่ฉันจะป้องกันในตอนนี้
onik

14

ที่อยู่จะถูกแคชไว้ 600 วินาที (10 นาที) โดยค่าเริ่มต้น การค้นหาที่ล้มเหลวจะถูกแคชเป็นเวลา 10 วินาที จากทุกสิ่งที่ฉันเห็นไม่มีอะไรในตัวที่จะล้างแคช เห็นได้ชัดว่านี่เป็นข้อผิดพลาดที่รายงานใน Android เนื่องจากวิธีการที่เก็บแคช DNS การล้างแคชของเบราว์เซอร์ไม่ได้สัมผัสกับ DNS การ "ฮาร์ดรีเซ็ต" จะล้างค่าออกเพราะหมดเวลา

เราสามารถถามเหตุผลที่จำเป็นสำหรับการล้างแคช DNS ได้หรือไม่? อาจจะมีอีกวิธีหนึ่งที่พลาดเพราะเราไม่ได้มองภาพใหญ่


2
ไม่แน่ใจเกี่ยวกับ OP แต่ฉันมีกรณีการใช้งานที่เครือข่ายในบ้านของฉันให้บริการที่อยู่เช่น server.home.mydomain.com แต่ ISP ของฉันแก้ไข * .mydomain.com (สำหรับค่าใด ๆ ของ "*" นี่ยังไม่ได้แมป) ไปที่ www.mydomain.com หากโทรศัพท์ของฉันใช้ 3G / 4G ดังนั้นบางครั้งฉันไม่สามารถเข้าถึงเครือข่ายในบ้านของฉันได้จนกว่าแคชจะหมด
TomG

ดูเหมือนว่าการบังคับแคช 10 นาทีจะได้รับการแก้ไขใน JB - ดูการกระทำนี้ สำหรับรุ่นเก่าพฤติกรรมแคช Java อาจจะปรับโดยnetworkaddress.cache.ttlและในnetworkaddress.cache.negative.ttl build.prop
Sergey Vlasov

ก่อนหน้านี้ยังมีปัญหา DNS (อาจแตกต่างกัน) แม้ใน 4.3 - แท็บเล็ตใน wifi อาจไม่ได้รับที่อยู่ IP สำหรับชื่อที่เครื่อง Linux และ Windows (บนเครือข่ายที่โฮสต์ wifi) สามารถแก้ไขได้
Jon Shemitz

7

วิธีเดียวในการทำเช่นนี้ใน Android คือทำการรีบูตเครื่องอย่างหนัก เครื่องมือบรรทัดคำสั่งที่จำเป็นไม่สามารถใช้งานได้ตามปกติ แต่ในการทดสอบของฉันการรีบูตเครื่องได้ทำเคล็ดลับสำหรับฉันเสมอ (Galaxy Nexus และ HTC Desire, ROM ต่าง ๆ )

นี่เป็นความเจ็บปวด แต่เร็วกว่าการหมดเวลาแคช 10 นาที


คนเราทำสิ่งนี้อย่างไร?
Steve Robbins

1
- กดปุ่มเพาเวอร์ - เลือก "ปิดเครื่อง" - อนุญาตให้โทรศัพท์ปิดเครื่องอย่างเต็มที่ - ถอดแบตเตอรี่ออกและรอ 30 วินาที - ส่งคืนแบตเตอรี่ - เปิดเครื่องโทรศัพท์อีกครั้ง จากประสบการณ์ของฉันไม่จำเป็นต้องถอดแบตเตอรี่ออก แต่มีบางคนรายงานว่ามันไม่ทำงานหากคุณพลาดขั้นตอนนี้
Martin

2
การถอดแบตเตอรี่เป็นเรื่องไร้สาระ รีบูตทำงานได้ ฉันสงสัยว่าเวลาเพิ่มเติมที่จะอนุญาตให้แคช DNS ภายนอกบางตัวหมดเวลา
Matthias Urlichs

5

นอกจากนี้ยังมีแอพอย่างInternet Booster ที่สัญญาว่าจะ "ล้างแคช DNS" (ท่ามกลางสิ่งอื่น ๆ ) ฉันไม่ได้ลองด้วยตัวเองและยิ่งไปกว่านั้นดูเหมือนจะไม่มีทางทำเช่นนั้น (เพียงปุ่มเดียว "ปรับให้เหมาะสม" ซึ่ง "ใช้การปรับปรุง"); ผลของมันอาจแตกต่างกันระหว่างอุปกรณ์ (พูดถึงคำอธิบายของแอพ) - แต่มันอาจจะดีกว่าการรีบูต Btw: แม้ว่าจะไม่ได้กล่าวถึงรูทตามความต้องการ แต่ก็อาจจำเป็นต้องใช้

มี "แอพที่คล้ายกัน" หลายรายการใน Google Play - แต่โปรดทราบว่าส่วนใหญ่มีโฆษณา Airpush และ / หรือต้องการการอนุญาตที่มากเกินไปซึ่งเป็นสาเหตุที่ฉันไม่ได้ตั้งชื่อที่นี่


อีกวิธีแก้ปัญหาที่เป็นไปได้ (ไม่ได้ทดสอบด้วยตัวเอง) ฉันพบที่MadPCดูเหมือนจะอ้างคำตอบของผู้ใช้ 8522ก่อนที่จะระบุ:

ตัวเลือกสุดท้าย แต่เข้มข้นที่สุดสำหรับผู้ใช้เองเว้นแต่พวกเขาต้องการเพียงแค่รอการอัปเดต: ให้ผู้ใช้ของคุณเข้าสู่การตั้งค่า -> แอปพลิเคชัน -> ที่ตั้งเครือข่าย -> ล้างข้อมูล

วิธีสั้น ๆ อีกวิธีที่กล่าวถึงวิธีที่ง่ายในการล้าง DNS (อีกครั้งฉันไม่ได้ทดสอบตัวเอง): เพียงแค่เปลี่ยนไปใช้โหมดเครื่องบิน (อุ๊ปส์ไม่มีเครือข่าย?) และกลับ (อาใช่นั่นคือ) ควรทำเคล็ดลับ อาจฟังดูงี่เง่า แต่ฉันนึกภาพออกได้ว่าเมื่อเข้าสู่โหมดเครื่องบิน Android จะทำสิ่งที่คล้ายกับ/etc/init.d/networking stopซึ่งมี DNS flush เป็นผลข้างเคียง


วิธีแก้ปัญหาที่ง่ายมากถูกจัดทำโดยdtumaykinในความคิดเห็นด้านล่าง: เพียงแค่สลับไปที่โหมดเครื่องบินและกลับมาแล้วก็ทำได้ สำหรับอุปกรณ์บางรุ่นคุณควรลองดู: ไม่มีการติดตั้งเพิ่มเติมและทำได้อย่างง่ายดายแม้กระทั่ง n00bs

หากใครลองวิธีแก้ปัญหาเหล่านี้การยืนยัน (หรือตรงกันข้าม) ยินดีต้อนรับแน่นอน :)


3
มีคำสั่งเชลล์ndc resolver flushdefaultifและndc resolver flushif wlan0; พวกเขาต้องการราก นอกจากนี้ยังมีNetworkManagementService.flushDefaultDnsCache ()วิธีการซึ่งต้องการเพียง CHANGE_NETWORK_STATE ก่อน JB แต่จากนั้นถูกล็อคลงไปที่ CONNECTIVITY_INTERNAL ดังนั้นจึงเห็นได้ชัดว่าเป็นวิธีที่แฮ็กในการทำความสะอาดแคช DNS โดยไม่ต้องรูท (หลังจากปรับ build.prop เพื่อฆ่าแคชระดับ Java) แต่มันจะไม่ทำงานใน JB
Sergey Vlasov

ขอบคุณสำหรับข้อมูลเพิ่มเติม @SergeyVlasov! คุณรู้หรือไม่ว่าวิธีการใด ๆ ที่คุณกล่าวถึงได้รับการกระตุ้นจากโซลูชั่นที่เสนอทั้งสองที่กล่าวถึงล่าสุดในคำตอบของฉัน (หรือถ้าพวกเขาทำงาน แต่ด้วยเหตุผลอื่น)
Izzy

4
โหมดเครื่องบินเปิด - ปิดใช้งานได้สำหรับฉัน Samsung Galaxy S4 Mini และ CM12.1
dtumaykin

ฉันตอบไม่ได้เพราะ Matthew Read ล็อคคำถามไว้ กรุณาตบเขาสำหรับฉัน :-) รีบูตยากไม่ทำงานสำหรับฉันโหมดเครื่องบินไม่ทำงานการล้าง "ตำแหน่ง" (ตามคำตอบ) ไม่ทำงานชั่วโมงรอไม่ทำงานอย่างใดอย่างหนึ่ง ก่อนหน้านี้ฉันเพิ่งแก้ไขปัญหานี้โดยการปิดแท็บเบราว์เซอร์และเปิดแท็บใหม่ มีแอพ "no root" 8.8.8.8 (Google DNS) ฉันไม่สามารถให้สิทธิ์การเข้าถึง VPN เพราะฉันมีแอพ VPN ที่ฉันจ่ายไปแล้ว ทางออกสำหรับฉันคือเปลี่ยนการตั้งค่า "ตำแหน่งเสมือน" ของ VPN หรือวิธีแก้ไขคือหยุดและเริ่ม VPN สมมติว่า VPN ของฉันมีแคช DNS ของตัวเอง
PJ Brunet

@PJBrunet ฉันจะไม่ตบ mod (อันตรายเกินไปเขาอาจปิดบัญชีของฉัน;) และนอกจากนี้แขนของฉันไม่นานพอที่จะไปถึงต่างประเทศ) แต่การได้รับ 10 ตัวแทนไม่ยากเกินไป (ถามคำถามที่ดีรับ 2 upvotes หรือเขียนคำตอบที่ได้รับ 1 upvote); กลับมาที่นี่แล้วเขียนคำตอบของคุณ :) ขอบคุณสำหรับการแบ่งปัน!
Izzy

2

ใน Android รุ่นใหม่มีตัวเลือกในการล้างแคช DNS ของ Chrome ภายใต้ chrome: // net-internals / # dns


ไม่ทำงานสำหรับฉันยังคงต้องทำการรีบูตอย่างหนัก
Cerveser

0

ในกรณีของฉันฉันมีชื่อโดเมนหนึ่งชื่อที่ฉันต้องการให้ล้างออก คำแนะนำเช่นการสลับโหมดเครื่องบินการรีบูตยากหรือการกระทำใน chrome: // net-internals / # dns ไม่ได้ผลสำหรับฉัน แต่ฉันเปลี่ยนการตั้งค่า WiFi ชั่วคราวเพื่อใช้เนมเซิร์ฟเวอร์ของ Google ที่ 8.8.8.8

นี่คือขั้นตอนที่ฉันทำ:

  • การตั้งค่า -> WiFi -> แตะการเชื่อมต่อปัจจุบันและจดบันทึกที่อยู่ IP ปัจจุบัน
  • ลองคลิกการเชื่อมต่อปัจจุบัน -> ปรับเปลี่ยนเครือข่าย
  • ทำเครื่องหมาย "การตั้งค่าขั้นสูง"
  • เปลี่ยน "การตั้งค่า IP" เป็น "คงที่"
  • ตั้ง "ที่อยู่ IP" เป็น IP ปัจจุบันจากขั้นตอนแรก
  • ตั้งค่า "เกตเวย์" เป็นที่อยู่ IP ของคุณ แต่ใช้. 1 เป็นหมายเลข 4 (นี่เป็นเพียงการคาดเดาหากคุณรู้ว่ามันต่างจากเดิมให้ใช้คำนั้น)
  • ตั้งค่า "DNS 1" เป็น 8.8.8.8

หลังจากขั้นตอนเหล่านี้เมื่อฉันpingแก้ไขชื่อโดเมนในคอนโซลจะแก้ไขที่อยู่ IP ที่ถูกต้องและดูเหมือนจะเขียนทับแคชเก่า การเยี่ยมชมโดเมนในเบราว์เซอร์จะมีผลเหมือนกัน

เมื่อฉันกลับไปที่ WiFi และตั้งค่า "การตั้งค่า IP" กลับไปเป็น "DHCP" โดเมนที่ถูกต้องยังคงแก้ไขที่อยู่ IP ปัจจุบัน

นี่คือ Sony Xperia Z3 ที่ใช้ Android 5.1.1


0

บน Adroid 5.1 Mobile ซึ่งใช้ DNS ผิดที่เปลี่ยนไปมากระหว่างสอง WLAN (คำถามทำเครื่องหมายบน WLAN Connexion ฉันไม่ต้องการคืนค่าโทรศัพท์ของฉันตามที่ฉันทำครั้งเดียว Engelsiz: DNS Changer แก้ไขแล้ว; )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.