เทอร์มินัล Android ไม่สามารถ nslookup?


14

ทุกครั้งที่ฉันพยายาม telnet ไปยังโดเมนบน LG Ally ของฉันมันจะล้มเหลว แต่จะทำงานได้ถ้าฉันใช้ที่อยู่ IP ดังนั้นฉันพยายามใช้nslookup telehack.comและมันกลับมา:

Server:       0.0.0.0
Address 1:    0.0.0.0

nslookup: can't resolve 'telehack.com'

ฉันติดตั้งAndroid Terminal EmulatorและBusyBoxแล้ว

มันไม่ทำงานกับค่าเริ่มต้น DNS ดังนั้นตอนนี้ฉันได้ตั้งค่ารายการ DNS ของฉันเป็นOpenDNSแล้วและยังไม่สามารถแก้ไขได้

มีอะไรที่ฉันสามารถทำได้เพื่อแก้ไขปัญหานี้หรือว่าเป็นข้อ จำกัด ของพันธมิตร?


ฉันไม่มีปัญหาในการทำ NSlookup บนโดเมนนั้นหรือโดเมนใด ๆ สำหรับเรื่องนั้น
Ryan Conrad

การตั้งค่าเครือข่ายของคุณเป็นอย่างไร คุณมีพอร์ตที่ถูกบล็อกหรือส่งต่อ?
Matthew อ่าน

ฉันมีปัญหาเดียวกัน
Max Ried

คำตอบ:


4

นี่เป็นปัญหาการออกแบบที่รู้จักเมื่อใช้ libresolv และ glibc

คุณมี 2 ตัวเลือก:

  1. ใช้ไลบรารี Bionic libc ดั้งเดิมของ Google Android แทน glibc

  2. สร้าง busybox เพื่อค้นหาไลบรารีใน/system/lib(หรือสร้างลิงก์ที่จำเป็นเช่น/usr/lib -> /system/lib) สถานที่ LD-linux.so.3, libc.so.6, libresolv.so.2, libnss_dns.so.2 /system/libในของคุณ


ดังนั้นคุณต้องการให้ฉัน haxxor the gibson? อะไร?
JKirchartz

1

ตรวจสอบว่าสภาพแวดล้อมจำลอง terminal ของคุณได้ตั้ง DNS ได้อย่างถูกต้องโดยการเรียกใช้และถ้าจำเป็นชุดด้วยgetprop net.dns1 setprop net.dns1 [yourdns]คำสั่งอาจแตกต่างกันไปตามอุปกรณ์การใช้งานบางอย่างnet.eth0.dns1หรือnet.gprs.dns1เรียกใช้getpropโดยไม่มีพารามิเตอร์เพื่อดูคุณสมบัติที่ตั้งค่าทั้งหมดสำหรับคำแนะนำ


มีการตั้งค่า dns ฉันเปลี่ยนจากค่าเริ่มต้นเป็น openDNS และมันยังไม่ทำงาน ...
JKirchartz

ไม่nslookupตอนนี้ให้ที่อยู่เซิร์ฟเวอร์ที่ถูกต้องหรือไม่ก็ยังคงแสดง0.0.0.0?
onik

ยังคงแสดง 0.0.0.0
JKirchartz

getprop มีอยู่และส่งคืนที่อยู่ IPv6 สำหรับเซิร์ฟเวอร์ DNS แม้ว่าข้อเท็จจริงที่ว่าเซิร์ฟเวอร์ DHCP กำลังแจกที่อยู่ IPv4 ให้พวกเขา แต่ setprop ไม่มีอยู่
Michael

1

เข้าสู่เครื่องเทอร์มินัลจากนั้นพิมพ์ 'su' แล้วกด Enter (หมายเหตุจะใช้ได้เฉพาะในกรณีที่คุณมีโทรศัพท์รูท)

$ su
#

จากนั้นป้อนข้อมูลต่อไปนี้ (แทนที่ xxxx ด้วย ip เซิร์ฟเวอร์ dns ของคุณ)

# echo 'nameserver x.x.x.x' > /system/etc/resolv.conf
# echo 'nameserver x.x.x.x' >> /system/etc/resolv.conf
# exit

ตอนนี้ทดสอบเพื่อดูว่ามันทำงานอย่างถูกต้อง

$ nslookup google.com

ควรแก้ไขทันที


โปรดทราบว่ามีโอกาสที่resolv.confจะถูกเขียนทับในทุกการเชื่อมต่อการเปลี่ยนแปลงโดยระบบ
Flow

จริง ๆ แล้วฉันไม่เคยมีสิ่งนี้เกิดขึ้นกับอุปกรณ์ Android ใด ๆ ... มันแค่ไม่เปลี่ยน (ฉันรู้เรื่องนี้เพราะฉันมีเซิร์ฟเวอร์ DNS ส่วนตัว (ในพื้นที่) hardcoded ใน resolv.conf และฉันต้องตั้งค่าด้วยตนเอง เครือข่ายอื่น ๆ (ใช้กล่องโต้ตอบขั้นสูง)
มิคาห์

1

ฉันได้คัดลอก (และเปลี่ยนแปลงเล็กน้อย) คำตอบของฉันจากความคิดเห็นที่ฉันโพสต์ในปัญหาในหน้ารหัส Google สำหรับ Terminal IDE อย่างไรก็ตามควรจะเหมือนกัน:

หากคุณถูกรูทคุณสามารถติดตั้ง busybox เวอร์ชั่นล่าสุด (คุณอาจจะสามารถคอมไพล์ได้) จากนั้นค้นหาตำแหน่งที่คุณอัปเดต busybox อยู่ที่ไหนและเรียกใช้คำสั่งต่อไปนี้: (ฉันสมมติว่ามีเวอร์ชันใหม่อยู่/system/binและเวอร์ชันเก่าอยู่~/system/bin)

PATH=/system/bin:$PATH
cd ~/system/bin
mv busybox busybox.old
ln -s /system/bin/busybox busybox

ตอนนี้โดเมนจะได้รับการแก้ไขอย่างถูกต้อง

โปรดทราบ: เนื่องจากวิธีการที่ busybox ทำงานได้คุณจะต้องสามารถใช้รูทได้ping(ถึงแม้ว่าสิ่งต่างๆเช่นwgetและnslookupควรจะสามารถแก้ไขโฮสต์ได้อย่างถูกต้องในตอนนี้) นักพัฒนา busybox กำลังทำงานเกี่ยวกับปัญหานี้

ฉันใช้แอปพลิเคชันนี้เป็นการส่วนตัวเพื่อติดตั้งเวอร์ชันล่าสุด: https://play.google.com/store/apps/details?id=stericson.busybox


0

คุณใช้เครือข่ายใด ถ้าเป็น Wifi สามารถใช้เครื่องอื่นในเครือข่ายของคุณได้ไหม หากเป็นแผนบริการข้อมูลของผู้ให้บริการ ... กำลังถูกบล็อกหรือไม่

อัปเดต: 0.0.0.0 ดูเหมือนว่าไฟล์บล็อกโฮสต์ให้ฉัน บล็อคโฆษณาใด ๆ Adblock plus เป็นเจ้าภาพการแก้ไขไฟล์?

ลองใช้เครือข่าย USB - หากคุณโพสต์ความคิดเห็นที่นี่เพื่อขอให้ฉันจะอัปเดตคำถามและใส่บทช่วยสอน (มีส่วนเกี่ยวข้องและฉันรู้วิธีการทำบนเครื่อง GNU / Linux เท่านั้น)


มันใช้งานไม่ได้กับ 3g (verizon) หรือบน WiFi, 0.0.0.0 เดียวกันไม่สามารถแก้ไขได้
JKirchartz

0.0.0.0 ดูเหมือนว่าไฟล์บล็อกโฮสต์ให้ฉัน บล็อคโฆษณาใด ๆ (อัปเดตคำตอบ)
Broam

ฉันเคยมี แต่มันไม่ได้ผลจริง ๆ ... /system/etc/hostsมี URL ที่ดูเป็นสแปมจำนวนมากชี้ไปที่127.0.0.1
JKirchartz

0

ฉันใช้สิ่งนี้ใน android จาก adb อาจจะมีวิธีที่ดีกว่า

ip=$(ping -c 1 -W 1 example.com|grep PING|cut -d "(" -f 2|cut -d ")" -f 1)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.