Android手机利用USB共享网络经过Ubuntu链接网络

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


前提:网络

一、Ubuntu正常链接网络app

二、手机已rootrest

三、手机上安装了busyboxcode


步骤:server

一、设置Ubuntu上的IP转发dns

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

$ sudo /etc/init.d/procps restart

二、设置Ubuntu上的NAT

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

$ sudo iptables --table nat -L POSTROUTING

若是没有则执行如下命令:
$ sudo iptables --table nat --append POSTROUTING --out-interface eth0 --jump MASQUERADE

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

分别在电脑和手机上输入"ifconfig"与"busybox ifconfig", 你会发现两边都有一个叫作"usb0"的网络接口, 且IP地址都是一个网段, 如"192.168.42.X", 两边也能够互相ping通. 这就是USB共享虚拟出来的网络接口, 咱们后面所有须要靠这个接口来与电脑通讯。
ci

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

# adb kill-server
# adb start-server

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

# busybox route add default gw 192.168.42.100


五、设置手机上DNS

# setprop net.dns1 8.8.8.8


好了,大功告成!

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