1. 程式人生 > >Android手機通過USB資料線共享Linux電腦網路

Android手機通過USB資料線共享Linux電腦網路

這裡要講述的是手機通過usb資料線共享電腦(linux系統)的網路來自由上網。通過USB資料線將手機與電腦相連, 再分別在電腦和手機上虛擬出一個網路介面用於網路通訊, 這很類似於VPN與虛擬機器上網的原理。 好處是不論臺式還是筆記本都適用, 只要有USB介面,並且可以一邊充電、一邊拷資料、一邊上網。

三、設定過程

  1. 強制啟動internet傳輸模式:

    經過我反覆研究發現android手機中的某些檔案可以設定usb的工作模式,例如:

    /sys/devices/platform/msm_hsusb/usb_function_switch 的值設為“6”的話,usb工作在adb和rndis模式,這裡的rndis模式等同於前面所講的internet傳輸模式。/sys/devices/virtual/android_usb/android0/f_rndis/on 或者/sys/class/android_usb/f_rndis/on 的值為“1”的話,單獨開啟rndis模式。我在這裡使用最後那個檔案來強制啟動rndis,這裡需要手機具有root許可權。

在手機的模擬終端或者adb shell中以root許可權執行如下命令開啟internet傳輸模式:

1 echo1 > /sys/class/android_usb/f_rndis/on

2. linux電腦設定:

經過上一步後,電腦會再次獲得網路硬體usb0,進一步還需做如下設定:

1 2 3 4 sudosysctl -w net.ipv4.ip_forward=1 sudoiptables -A FORWARD -i usb0 -o eth0 -j ACCEPT sudoiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudoifconfigusb0 192.168.99.80 netmask 255.255.255.0

命令依次的含義是:開啟IP轉發,允許usb0到eth0的包通過防火牆,在伺服器上設定了對於客戶端的NAT,設定usb0網絡卡的ip地址(此地址任意,但需與手機相應地址一致)。

3.android手機設定:

在手機的模擬終端或者adb shell中以root許可權執行如下命令設定手機網路引數:

1 2 3 ifconfigusb0 192.168.99.81 netmask 255.255.255.0 up route add default gw 192.168.99.80 dev usb0
setprop net.dns1 8.8.8.8

命令依次的含義是:啟動usb0網裝置並設定ip地址,設定網路路由(閘道器),設定dns地址。

注意此處的閘道器(192.168.99.80)必須同電腦的usb0的地址一致。

至此設定完畢,開啟手機瀏覽器試一下,是不是可以暢快上網了啊!耶~~!

4.建議:

上面的命令比較多,電腦上可以寫個shell指令碼,使用時雙擊執行一下即可,但是在手機上,如果使用模擬終端每次手動輸入的話實在是太麻煩,推薦使用GScript軟體將以上命令儲存為指令碼檔案, 當需要設定的時候就直接執行指令碼, 指令碼配置如下圖: