25 Nov 2011 - Tianjin - Unhappy

自从入了Android手机,包月的300M流量真心不够用,但周围也没有Wifi环境,于是盯上了Android的USB绑定,共享PC端网络这个功能。

下面是Linux下的解决办法,在Windows上可能没有NAT转发功能可以选择用共享网络连接或者代理服务器的方法来进行转发。

本文主要参考: http://www.linuxreaders.com/2011/03/09/android-access-internet-from-computer-via-usb/

Android端

  1. Root你的手机
  2. 用USB线连接电脑,勾选Settings –> Wireless and network –> Tethering — USB tethering/USB绑定
  3. 在sdcard上建立 /sdcard/usbnet.sh 文件,内容如下:

     ifconfig usb0 192.168.42.129 netmask 255.255.255.0
     route add default gw 192.168.42.100 dev usb0
     setprop net.dns1 8.8.8.8
     netcfg 其中`8.8.8.8`是你的ISP提供的DNS地址
    
  4. 进入终端或者adb shell

     su
     sh /sdcard/usbnet.sh
    

电脑端

  1. 一旦通过USB连上手机,则会多出一个网络接口usb0,但默认没有启用。

     ifconfig usb0 192.168.42.100 netmask 255.255.255.0 up
    
  2. root权限运行以下命令(加入/etc/rc.local文件便可开机自动运行)

     echo 1 > /proc/sys/net/ipv4/ip_forward
     iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth0 -j MASQUERADE   其中`eth0`是你想共享的PC网络。
    
  3. 这样你就可以在Android端通过电脑的eth0接口上网了!
  4. Debug: 原理很简单,就是简单的NAT转发,所以Debug的时候通过ping之类的工具就可以。