ทำไม android ถึงเพิกเฉยต่อ etc / hosts ของฉันเปลี่ยนไปในเบราว์เซอร์


19

ฉันได้ติดตั้งใหม่/sysเป็นrwเพิ่มหนึ่งรายการในetc/hosts(เช่น10.0.0.1 x.com www.x.com) และรีบูตอุปกรณ์ของฉัน

หลังจากรีบูตเครื่องถ้าฉันตรวจสอบetc/hostsรายการก็โอเค หากฉันx.comส่ง Ping จะส่ง Ping ไปยังที่อยู่ IP ที่ถูกต้องที่ฉันป้อน

แต่ถ้าฉันเปิดเว็บเบราว์เซอร์ (หุ้นหรือโลมา) และเรียกดูx.comมันจะไปที่ที่อยู่ IP ที่ DNS ได้รับการแก้ไข

เกิดอะไรขึ้น?

(โทรศัพท์ของฉันคือ Nexus One ซึ่งใช้ Cyanogen 7.1 ROM แบบกำหนดเองที่ใช้ Android 2.3.7)

อัปเดต:
ในแอป ' LAN Droid ' ฉันได้รับที่อยู่ที่แก้ไข (ดังนั้น10.0.0.1) ก็ใช้ได้เช่นกัน ดูเหมือนว่าเป็นเพียงเบราว์เซอร์ที่ทำงานผิดพลาด


แค่อยากรู้อยากเห็น: ถ้าคุณทำอย่างอื่นและตั้งค่าโดเมนที่มีชื่อเสียง (หรือเว็บไซต์โฆษณาบางแห่ง) ให้เป็น localhost แทน มันไม่สามารถโหลดได้หรือไม่ และเป็นชื่อโดเมนสั้น ๆ เช่นนี้อย่างที่ใช้ในตัวอย่างของคุณหรือไม่ (ที่ไม่ให้ความสนุกสนานในความเป็นจริง: Internet Explorer หยุดรับคุกกี้สำหรับโดเมนตัวอักษรสองตัวแน่นอนที่ไม่เกี่ยวข้องกับปัญหาของคุณ แต่. อาจจะชื่อโดเมนสั้นมีข้อ จำกัด แปลก ๆ ในเบราว์เซอร์บางอย่างผมคิดว่าไม่ว่า?.)
Arjan

2
คุณสามารถทำสิ่งนี้ - ls -l /etc/hostsอาจมีปัญหาสิทธิ์ / ความเป็นเจ้าของ
t0mm13b

@ t0mm13b "-rw-r - r-- root root"
gcb

@ t0mm13b คุณเห็นแล้ว! ในกรณีของฉันมันเป็นสิทธิ์ chmod 644 /system/etc/hostsแยกออก
KalenGi

คำตอบ:


6

ฟังดูเหมือนอย่างนี้กับ ping ที่ใช้งานได้ แต่ไม่ใช่เบราว์เซอร์ วิธีแก้ปัญหาในที่สุดเขาก็อ้างด้านล่าง:

คำถามงี่เง่า แต่คุณกำลังแก้ไขไฟล์บนมือถือหรือเพียงแค่ผลักไฟล์ที่คุณโพสต์ไว้ที่นี่? รูปแบบที่คุณโพสต์นั้นอยู่ในรูปแบบ DOS ดังนั้นจึงมีอักขระตัวป้อนบรรทัดเพิ่มเติมที่ท้ายบรรทัดที่อาจสร้างความสับสนให้กับระบบ linux

ฉันไม่รู้ว่าคุณใช้อะไรในการแก้ไข แต่คุณอาจต้องการตรวจสอบว่าเป็นอักขระตัวดึงบรรทัด / อักขระขึ้นบรรทัดใหม่


แก้ไขด้วย vi บนเทอร์มินัลอีมูเลเตอร์ พยายามบังคับff=unixตอนนี้และset listดูตัวแบ่งบรรทัด DOS ... แม้แต่ไปข้างหน้าและเรียกใช้ regexp ราวกับว่ามีตัวแบ่งบรรทัด DOS ไม่พบ
gcb

4

ไม่แน่ใจว่าสิ่งนี้จะช่วยได้หรือไม่ แต่ฉันมีปัญหาไฟล์โฮสต์ที่ถูกละเว้นและแก้ไขโดยคนที่อยู่ในเธรดนี้คำตอบคือการใส่บรรทัดใหม่ว่างไว้ท้ายไฟล์


2

คุณสามารถติดตั้ง strace และเปรียบเทียบผลลัพธ์ที่กำลังรัน strace บน ping กับ strace บนเบราว์เซอร์เพื่อดูสาเหตุที่การค้นหา DNS แตกต่างกันอย่างไร

คุณแน่ใจหรือว่าไม่มีแคชถาวรเกิดขึ้น TTL ในระเบียนโดเมนของคุณคืออะไร

Android ไม่ปรากฏว่าใช้ /etc/resolv.conf แต่อาจมีคุณสมบัติบางอย่างที่ควบคุมว่าแอปใดที่ใช้ / etc / hosts และไปที่การค้นหา DNS โดยตรง https://groups.google.com/forum/?fromgroups#!topic/android-platform/K2Wr4WaEneI


จุดที่ดี TTL คือ 1 ชม. ค่าเริ่มต้นสำหรับกฎทั้งหมดที่ฉันมี เธรด g.groups ส่วนใหญ่เกี่ยวกับการตัดสินใจว่าจะให้ nameserver กดระหว่างการสืบค้น DNS หรือไม่ตรรกะนี้เกิดขึ้นหลังจาก etc / hosts ฉันหวังว่า. ตอนนี้ฉันจะเรียกใช้ strace (ค้นหาวิธีก่อน) และรายงานกลับ
gcb

2

หากคุณกำลังสร้างไฟล์โฮสต์บนเครื่อง windows ตรวจสอบให้แน่ใจว่าแต่ละบรรทัดถูกคั่นด้วย LF เท่านั้น (ไม่ใช่ [CR] [LF] เพียง [LF]) คุณสามารถตรวจสอบได้และสร้างไฟล์โฮสต์ที่เหมาะสมโดยใช้ notepad ++


0

ฉันคิดว่าคุณต้องล้าง DNS บน Android ของคุณตรวจสอบคำถามนี้/programming/2101762/android-flush-dnsโดยเฉพาะ "เข้าไปในการตั้งค่า -> แอปพลิเคชัน -> ที่ตั้งเครือข่าย -> ล้างข้อมูล"


ไม่มีแม้แต่ตัวเลือกนี้ใน android 2.3.7 แต่โทรศัพท์มีการเปลี่ยนแปลงนี้ใน etc / hosts หลายเดือนแล้ว และฉันรีบูตบ่อยๆ ... ฉันหวังว่า DNS จะไม่ถูกแคชเป็นเวลาหลายเดือนด้วยเหตุผลใดก็ตาม
gcb

0

ฉันสงสัยว่าเบราว์เซอร์นั้นได้รับการกำหนดค่าให้ทำงานผ่านพร็อกซี

คุณอาจบอกได้ว่าใช้ netstat -n หรือค้นหาใน / proc / net / tcp (หรือดีกว่านั้น / proc / # browser_pid # / net / tcp) ที่อยู่ที่เชื่อมต่อกับที่อยู่จริง หากที่ไม่ตรงกับที่อยู่เว็บไซต์ของคุณอาจเป็นไปได้ว่าคุณจะผ่านตัวกลาง


-2

ปกติแล้วฉันจะบอกว่า (แต่นี่ไม่ได้ใช้กับคุณ, อนิจจา):

เพียงลองรีบูตถ้าการเปลี่ยนแปลงไม่ได้รับการสังเกตเนื่องจากอินสแตนซ์ของเครื่อง Dalvik หรือระบบที่ใช้งานอยู่อาจแคชคำขอ DNS เดิมไว้

คุณสามารถลองใช้ AdAway เพื่อเพิ่มรายการไปยังไฟล์โฮสต์ของคุณด้วยตนเอง (เพียงเพื่อข้ามการตรวจสอบว่ามันเป็นเช่นเดียวกับที่คุณทำด้วยตนเอง)

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