如何创建 USB 网络接口以将互联网传输到我的 Android 手机?

如何创建 USB 网络接口以将互联网传输到我的 Android 手机?

我正在努力通过 USB 将互联网从我的电脑传输到我的手机(运行 Android)。我不知道如何实现这一点,但我知道我需要一个 USB 网络接口,例如usb0.插入手机时不会自动创建此界面。

如何创建这个 USB 网络接口?这可以在 Linux 中完成还是必须在 Android 手机上完成?

笔记: 如果我在手机上启用 USB 网络共享,则会在 Linux 中创建相应的 USB 接口。然而,这会自动配置为使用手机作为网络设备(或网关?)并将互联网从我的手机传递到我的计算机,这与我想要做的相反。

答案1

实际上,USB 网络共享在您的手机和 PC 之间创建了对称连接。您的流量可以流向的方向仅由网络接口​​配置和每端运行的服务定义。

为了让流量从手机流到 PC,您可以(例如):

  • 配置您的 PC 以运行 DHCP 并共享其互联网连接
  • 在您的 Android 手机上激活 USB 网络共享:
  • 在你的 Android 手机上运行 dhcp 客户端(以 root 身份):

netcfg usb0 dhcp

或者

dhclient usb0

不同的手机可能有不同的界面名称,包括等rndis0rmnet0这些可以通过 找到ifconfig

如果出现问题,也可能值得尝试g_ether在手机上手动加载内核模块。

答案2

嗯,我可以跟大家分享一下我的经验:

在手机上(三星 J1 (Android 5.1.1)): 积极的开发者选项>> 活跃USB调试>> 我要去安克雷奇至网络以及便携式活动区安克雷奇(抱歉翻译,我来自古巴)USB网络>> 当我这样做时,我打开虚拟终端模拟器(一个 apk),然后访问( su) 然后我用 来检查网络接口ifconfig,它返回一个名为“新”的接口rndis0IP 192.168.42.129

在装有 Debian 的 PC 上:我打开终端并访问(只是不必sudo每次都放置)>>ifconfig并且它返回一个名为“新”的接口USB0IP 192.168.42.111

如果您从手机 ping 到 PC,反之亦然,一切都应该没问题(我在两侧得到答案),现在是时候给手机一个网关了,所以在手机的终端模拟器中: route add default gw 192.168.42.111 dev rndis0>> 放在这里PC 的 IP 此时,您应该能够从终端仿真器 ping Google DNS(通过 IP 和名称),如果您的互联网连接不需要代理服务器配置,则您的手机通过 USB 可以连接互联网电缆...

PS:如果你的电脑和手机没有自动获取IP,请使用以下命令:

在电脑上:

ifconfig usb0 10.42.0.1 netmask 255.255.255.0
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE  

在电话上:

ifconfig rndis0 10.42.0.2 netmask 255.255.255.0
busybox route add default gw 10.42.0.1 dev rndis0

并配置DNS(还是电话):

mount -o remount, rw /system
echo 'nameserver 192.168.6.40' > /system/etc/resolv.conf
mount -o remount, ro /system
iptables -t nat -I OUTPUT 1 -p udp --dport 53 -j DNAT --to-destination 192.168.6.40:53 

答案3

安卓8.0

ifconfig usb0 192.168.225.3 netmask 255.255.255.0
ndc network create 9792
ndc network interface add 9792 usb0
ndc network route add 9792 usb0 0.0.0.0/0 192.168.225.1
ndc resolver setnetdns 9792 8.8.8.8 8.8.4.4
ndc network default set 9792

相关内容