Chr*_*n.D 5 linux usb android adb tethering
我正在尝试为我的Android应用程序设置测试环境,其中单独的设备需要Internet连接,但没有无线功能.
所以我决定使用usb反向网络共享.我的主机正在运行Ubuntu.我已设法为一台设备设置反向网络共享,连接正常,我可以通过此设备的adb shell ping google.com.
当我连接第二个设备时,第一个绑定停止工作.两个设备在其内部usb0接口上配置了相同的IP地址.
这是我到目前为止所拥有的:
主机上的端口转发已激活
echo 1 > /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)Iptables规定主机路由流量:
iptables -t nat -A POSTROUTING -s 169.254.255.2/24 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)插件第一个设备:
ifconfig shows the device on usb0 @ ip 169.254.255.2/30
Run Code Online (Sandbox Code Playgroud)在第一台设备上(带adb shell)
> route add default gw 169.254.255.2 dev usb0
> setprop net.dns1 8.8.8.8
> ping google.com --> is giving results
Run Code Online (Sandbox Code Playgroud)插件第二个设备
ifconfig shows this device on usb1 @ ip 169.254.255.2/30
Run Code Online (Sandbox Code Playgroud)在第二台设备上
Add gw, set DNS like above
Run Code Online (Sandbox Code Playgroud)现在第二个设备可以ping google.com,但第一个没有.
当我更改内部IP或分配给主机usb0的IP时,usb1接口我无法通过adb连接到设备.
我怀疑这是一个网络问题,而不是亚行的问题?有任何想法吗?
经过大量的谷歌搜索和反复试验,我终于找到了适合我的特定设置的解决方案。
我最终所做的,以及我在第一次尝试中错过的,是将每个连接的 USB 设备放入一个单独的子网中(请参阅serverfault 上的此答案)。
说得清楚一点,现在的设置如下:
iptables 包含以下规则
iptables -t nat -A POSTROUTING -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)主机的 usb0 和 usb1 接口现在位于不同的子网中
usb0: inet addr:169.254.0.1 Bcast:169.254.15.255 Mask:255.255.240.0
usb1: inet addr:169.254.16.1 Bcast:169.254.31.255 Mask:255.255.240.0
Run Code Online (Sandbox Code Playgroud)连接到主机 USB0 的 Android 设备的内部 USB0 iface:
- usb0 169.254.0.2/20
- default gw 169.254.0.1 (so the host's usb0 iface)
Run Code Online (Sandbox Code Playgroud)连接到主机 USB1 上的 Android 设备的内部 USB0 iface:
- usb0 169.254.16.2/20
- default gw 169.254.16.1 (so the host's usb1 iface)
Run Code Online (Sandbox Code Playgroud)这样我现在就可以从连接到主机上 USB 接口的每个 Android 设备访问互联网(在 adb shell setprop net.dns1 8.8.8.8 之后)。
| 归档时间: |
|
| 查看次数: |
10958 次 |
| 最近记录: |