วิธีตั้งค่าโฮสต์เป็นการจับคู่ IP บน Android ที่ไม่ได้ใช้งาน


10

ฉันมีเว็บไซต์ที่ทำงานบนคอมพิวเตอร์ของฉันและฉันต้องการทดสอบจากแท็บเล็ต Nexus 7 ของฉัน เช่นผ่าน LAN WiFi ท้องถิ่น หากฉันพิมพ์ที่อยู่ IP นั้นจะเชื่อมต่อ แต่แสดงเว็บไซต์ที่ไม่ถูกต้องเพราะฉันใช้ชื่อโฮสต์เสมือน

ดังนั้นสิ่งที่ฉันต้องทำคือสามารถพิมพ์ลงmysite.localใน Chrome / Firefox บน Nexus ให้พวกเขาแปลงเป็น10.1.2.3(หรืออะไรก็ตามที่อยู่ IP ท้องถิ่น) จากนั้นเรียก10.1.2.3เซิร์ฟเวอร์ที่ให้mysite.localเป็นโฮสต์เพื่อร้องขอ

คำถามของฉัน:แท็บเล็ต Android 4.x มี/etc/hostsไฟล์หรือเทียบเท่าที่ฉันสามารถแก้ไขได้หรือไม่? (โดยไม่ต้องรูทแท็บเล็ตหรืออะไรทำนองนั้น)

ในคอมพิวเตอร์ Linux ของฉันฉันทำได้โดยเพิ่มรายการใน/etc/hosts:

10.1.2.3  mysite.local

(หรือWindows\System32\drivers\etc\hostsบนเครื่อง Windows จะทำเช่นเดียวกัน)

BTW นี่คือกึ่งซ้ำของชื่อโฮสต์สำหรับที่อยู่ IP (เช่น / etc / hosts equiv.?)แต่คำถามนั้นสำหรับ Android 2.2 ซึ่งเห็นได้ชัดว่ามันเป็นไปไม่ได้ (หนึ่งในแนวคิดทางเลือกที่แนะนำคือมีการกำหนดค่า DNS ที่เราเตอร์ท้องถิ่น แต่เท่าที่ฉันสามารถบอกได้ว่าเราเตอร์ของฉันไม่ทำ DNS ภายในเครื่องดังนั้นจึงไม่มีตัวเลือกนั้นฉันสามารถตั้งค่าเซิร์ฟเวอร์ DNS ของตัวเองเพื่อทำสิ่งนี้ แต่ ที่ให้ความรู้สึกเหมือนเป็นงานใหญ่)


นั่นเป็นคำถามที่ค่อนข้างหาเซิร์ฟเวอร์ผิดพลาดหรือSuper User และคุณควรตั้งค่าชื่อโฮสต์เหล่านั้นด้วยเซิร์ฟเวอร์ท้องถิ่นของคุณ (ซึ่งนำเสนอโดยเซิร์ฟเวอร์ DHCP ของคุณเป็นโหนด DNS)
Izzy

1
@ Izzy ขอบคุณ Izzy แต่ฉันรู้วิธีกำหนดค่า / etc / hosts บนเซิร์ฟเวอร์ สิ่งที่ฉันไม่ทราบวิธีการทำคือการค้นหา / แก้ไขสิ่งที่เทียบเท่าบนแท็บเล็ต Android 4.x (หรือแม้ว่าจะมีสิ่งที่เทียบเท่าโดยไม่ต้องรูทมัน) (เซิร์ฟเวอร์ DHCP ของฉันคือเราเตอร์ไร้สายดูเหมือนจะไม่มีตัวเลือกในการเพิ่มชื่อที่กำหนดเอง: ฉันมีตัวเลือกในการระบุเซิร์ฟเวอร์ DNS ที่กำหนดเอง แต่นั่นเป็นสระโคลนที่ฉันไม่อยากจะจับ )
Darren Cook

คุณเข้าใจฉันผิด Darren: ฉันไม่แนะนำให้แก้ไข/etc/hostsแต่กำหนดค่า "เซิร์ฟเวอร์ชื่อ" (เช่น DNSMasq หรืออะไรก็ตามที่คุณใช้) เราเตอร์ของคุณอาจให้สถานที่สำหรับคุณ /etc/hostsจำเป็นต้องแก้ไขในแต่ละเครื่องเป็นอย่างอื่น - และไฟล์ที่เกี่ยวข้องบน Android สามารถแก้ไขได้ด้วย "พลังราก" (ฉันไม่ทราบตำแหน่งที่แน่นอนของมันออกไปจากหัวของฉัน แต่มันอยู่ที่ไหนสักแห่งใน/data/systemAFAIR) ดู: วิธีแก้ไขไฟล์ etc / hosts
Izzy

คำตอบ:


6

คุณไม่สามารถแก้ไขไฟล์โฮสต์บน Android ได้เนื่องจากมันอยู่ในระบบไฟล์แบบอ่านอย่างเดียว: /system/etc/hostsดู:

ทางเลือกคือ:

  • ใช้เซิร์ฟเวอร์ DNS เช่น DNSMasq ในเครือข่ายท้องถิ่นของคุณเพื่อดูแล "ศูนย์กลาง"
  • ใช้ "root powers" เพื่อบังคับให้แก้ไขไฟล์ระบบตามที่อธิบายไว้ข้างต้น
  • ติดตั้ง "เซิร์ฟเวอร์ DNS ในเครื่อง" บนอุปกรณ์ Android ของคุณเพื่อใช้งานเช่นเซิร์ฟเวอร์ DNS

เฮ้อิซซี่ฉันพยายามใช้เซิร์ฟเวอร์ DNS เพื่อจัดการสิ่งนี้เนื่องจากฉันไม่สามารถเข้าถึงโทรศัพท์ของฉันได้ ฉันเพิ่มกฎง่ายๆที่เปลี่ยนเส้นทางชื่อโฮสต์ไปยัง ip ในคำถาม .. แต่มันไม่ทำงาน .. ฉันทำอะไรผิดหรือเปล่า?
George Katsanos

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

@GeorgeKatsanos คุณอาจสนใจในสิ่งนี้: stackoverflow.com/a/14211550/1768141
Vinayak

2

ตามที่กล่าวไว้โดย lzzy คุณสามารถใช้เซิร์ฟเวอร์DNSMasqเพื่อทำสิ่งนี้ แต่ Chrome ใช้กระบวนการแก้ไข DNS ของตัวเองและวิธีนี้อาจใช้ไม่ได้

ในการเริ่มต้นเซิร์ฟเวอร์ให้ใช้คำสั่งต่อไปนี้:

sudo /usr/local/sbin/dnsmasq -d \
                             --no-hosts \
                             --no-resolv \
                             --conf-file=/dev/null \
                             --server=8.8.8.8 --server=8.8.4.4 \
                             --address=/example.com/192.168.0.101
  • sudo จำเป็นต้องใช้กับพอร์ต 53
  • -d เริ่มต้นเซิร์ฟเวอร์บนเบื้องหน้า
  • --no-hosts ห้ามใช้ไฟล์โฮสต์ในเครื่อง
  • --conf-file=/dev/null ห้ามใช้ไฟล์ปรับแต่งใด ๆ
  • --server=8.8.8.8 --server=8.8.4.4 ที่อยู่ของเซิร์ฟเวอร์ upstream (Google DNS ในตัวอย่างนี้)
  • --address=/example.com/192.168.0.101โฮสต์เพื่อแทนที่ คุณต้องเพิ่มโฮสต์ของคุณในบรรทัดนี้ คุณสามารถเพิ่มหลายโฮสต์ได้

จากนั้นเปลี่ยนเซิร์ฟเวอร์ DNS บนอุปกรณ์ สามารถทำได้อย่างง่ายดายโดยใช้แอพDNS Changer

หลังจากขั้นตอนเหล่านี้คำขอไปยังโฮสต์เหล่านี้ควรถูกส่งไปยังที่อยู่ของคุณ


0

วิธีที่ง่ายที่สุดในการกำหนดโฮสต์ไปยังการจับคู่ IPคือhostsไฟล์เนื่องจากDNS resolversส่วนใหญ่เคารพไฟล์นั้น แต่ดังที่กล่าวไว้ในคำตอบอื่น ๆ มันเป็นไปไม่ได้ที่จะแก้ไข/etc/hostsโดยไม่ต้องรูทอุปกรณ์ Android การเข้าถึงเว็บเซิร์ฟเวอร์ด้วยที่อยู่ IP จะไม่ทำงานสำหรับคุณเนื่องจากการโฮสต์เสมือน นี่คือตัวเลือกบางส่วนที่คุณสามารถใช้กับอุปกรณ์ที่ไม่ได้ใช้รูท:

  • ใช้แอป VPN ที่สกัดกั้นการรับส่งข้อมูล DNS และค้นหาhostsไฟล์ที่กำหนดเองก่อนทำการสอบถามกับเซิร์ฟเวอร์ DNS ต้นทางที่กำหนดค่า
  • เรียกใช้เซิร์ฟเวอร์ DNS สามารถกำหนดค่าให้ส่งคืนที่อยู่ IP ที่กำหนดไว้ล่วงหน้าสำหรับชื่อเฉพาะ ยกตัวอย่างเช่นถ้าใช้dnsmasqเพิ่มaddress=/mysite.local/10.1.2.3เพื่อ“dnsmasq.conf” หรือdnscrypt-proxyเพิ่มmysite.local 10.1.2.3การ“สวมเสื้อ-rules.txt”
  • กำหนดค่าโทรศัพท์ให้ใช้พร็อกซีหรือ VPN จากนั้นเพิ่มรายการ10.1.2.3 mysite.localลงในhostsไฟล์บนพร็อกซีเซิร์ฟเวอร์หรือเรียกใช้เซิร์ฟเวอร์ DNS ในเครื่องบนเซิร์ฟเวอร์ VPN
  • หาก bootloader สามารถปลดล็อคได้ให้แก้ไขhostsไฟล์จากการกู้คืนที่กำหนดเอง

ดูรายละเอียดเพิ่มเติมได้ที่: จะแก้ไขชื่อโดเมนเป็น IP แบบคงที่ได้โดยไม่ต้องรูทเสมอหรือไม่


ที่เกี่ยวข้อง:

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