注意,是手机利用PC网络连网,而不是PC利用手机网络连网。

前提:

1、Ubuntu正常连接网络

2、手机已root

3、手机上安装了busybox

步骤:

1、设置Ubuntu上的IP转发

查看"/proc/sys/net/ipv4/ip_forward"文件中的值是否为"1", 如果不是, 则需要在"/etc/sysctl.conf"文件中添加"net.ipv4.ip_forward=1", 然后执行以下命令:

$ sudo /etc/init.d/procps restart

2、设置Ubuntu上的NAT

执行下面的命令查看表中是否有相应的表项:

$ sudo iptables --table nat -L POSTROUTING

如果没有则执行以下命令:

$ sudo iptables --table nat --append POSTROUTING --out-interface eth0 --jump MASQUERADE

3、手机通过USB线连接到PC,打开手机上的“USB共享网络”(具体位置与名称手机各异,大概在“设置-网络-网络共享”之类的)。

分别在电脑和手机上输入"ifconfig"与"busybox ifconfig", 你会发现两边都有一个叫做"usb0"的网络接口, 且IP地址都是一个网段, 如"192.168.42.X", 两边也可以互相ping通. 这就是USB共享虚拟出来的网络接口, 我们后面全部需要靠这个接口来与电脑通信。

手机上的输入可通过在Ubuntu上用adb shell进入手机终端来输入,如果提示insufficient permissions for device,则先切到root身份,再执行以下命令:

# adb kill-server

# adb start-server

4、设置手机上的路由表. 方法很简单, 只需要将默认路由的网关设置为电脑上"usb0"接口的IP地址就可以了, 比如这个IP地址为"192.168.42.100", 则在手机终端中输入以下命令:

# busybox route add default gw 192.168.42.100

5、设置手机上DNS

# setprop net.dns1 8.8.8.8

好了,大功告成!

最后,有点麻烦的是,每次重新打开USB共享,电脑和手机上的usb0的IP会重新分配,因此,需要重新配置手机上的路由。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐