严格 DNS 环境下的反向 USB 网络共享

严格 DNS 环境下的反向 USB 网络共享

在环境中,所有 DNS 查询均被防火墙阻止。并且不允许使用 wifi 或 3G

我想让已 root 的 Android(192.168.42.2)通过插入 PC(usb0 接口为 192.168.42.1)上的 usb 访问互联网。PC 可以通过静态 IP DNS(例如 192.168.1.53)连接到互联网 eth0(192.168.1.1)(不允许其他 dns 访问)。

# in PC linux, this is workable (nameserver=192.168.1.53) 
ping 173.194.72.99 # workable for www.google.com's IP
ping www.google.com # failed because even

在 Android 中可以 ping 通互联网 IP。但我无法访问 dns 查询。

ping 173.194.72.99 # workable for www.google.com's IP
ping www.google.com # failed because even

我在 PC(linux 操作系统)上设置了一个 dnsmasq,它可以在 PC 上查询 DNS。但它无法在 android 内部查询 DNS。

# in Anddroid's busybox nslookup, the usage is nslookup <host> <server>
nslookup www.google.com 192.168.1.53 # failed
nslookup www.google.com 192.168.42.1 # failed

反向 USB 网络共享方法请关注这篇文章http://forum.xda-developers.com/showthread.php?t=2287494。在 Android 上启用 adb debug 和 USB tethering 后,我进行如下设置:

root@android:/ # netstat -rn
Proto Recv-Q Send-Q Local Address          Foreign Address        State
 tcp       0      0 127.0.0.1:7777         0.0.0.0:*              LISTEN
 tcp       0      0 127.0.0.1:53           0.0.0.0:*              LISTEN
 tcp       0      0 192.168.42.129:53      0.0.0.0:*              LISTEN
 udp       0      0 127.0.0.1:53           0.0.0.0:*              CLOSE
 udp       0      0 192.168.42.129:53      0.0.0.0:*              CLOSE
 udp       0      0 0.0.0.0:67             0.0.0.0:*              CLOSE
1|root@android:/ # ps |grep dns
nobody    8608  115   1028   492   c00ec9e0 400da624 S /system/bin/dnsmasq

1|root@android:/ # ifconfig rndis0 192.168.42.2 netmask 255.255.255.0
1|root@android:/ # route add default gw 192.168.42.1 dev rndis0
1|root@android:/ # ping -c 1 8.8.8.8  # workable

答案1

由于您没有发布掩码和网关信息,我不确定我是否得到了正确的图片,但我认为您只是没有在 Android 界面上设置 DNS 服务器。

我能想到的最简单的方法是设置 Google DNS 服务器

因此在 Android 上将是:

IP:192.168.42.2 掩码:255.255.255.0 gtw:192.168.42.1

DNS:8.8.8.8 8.8.4.4

在使用设置之前,请验证您是否可以 ping DNS IP,但是您上面说您可以……

答案2

我遇到了同样的问题。

只需重新启动 DNS 服务器即可。我意识到它是通过较旧的网络连接通过 dhcp 启动的

    22104 dhcp      1164 S    /system/bin/dnsmasq --keep-in-foreground --no-resolv --no-poll --dhcp-option-force=43,ANDROID_METERED --dhcp-authoritative --pid-file  --dhcp-range=192.168.42.2,192.168.42.254,12h --dhcp-range=192.

所以我直接杀死 22104 并以 root 身份重新启动 dnsmasq - 一切就绪:)

相关内容