OpenWrt路由器通過iPhone有線共享網絡上網


2018年4月更新:

我自己的手機在openwrt上網速很慢,在電腦上又很快。應該不是被限速了,但是沒找到原因。


 

三大運營商在學校爭客戶,手機卡開出了校內無限流量的條件。很開心,之前准備到東北大學的時候還擔心校園網25G/月不夠用,這就不用擔心了。因為是手機卡上網,所以需要一個上網卡或者一個手機來上網絡再共享網絡給電腦/路由器。

方案一:使用上網卡共享。

這是我最開始認為穩妥的方法,便宜,方便。去閑魚收了一個上網卡,50塊。

到手后測試可以連電腦,也通過找資料,使得上網卡可以直接插在路由器上使用。

但是上網卡發熱太高,導致網速變慢,延遲增高。這個辦法就被否定了。

方案二:使用手機共享網絡

用手機開熱點是生活中經常辦的事情。而且之前在學校也試過用iPhone連接數據線給電腦共享網絡。

這里設備選擇手頭閑置的iPhone5s。

一、使用iPhone有線共享網絡給電腦

講解最簡單的直接使用電腦共享iPhone的網絡。

Windows平台需要安裝iTunes,安裝完之后,手機端將iPhone通過數據線連接到電腦,並在設置->個人熱點->打開。電腦端在網絡連接中就可以看到iPhone的網絡,如果電腦網口還連接有網線,則禁用電腦網口。

Fedora直接插上手機就有了。(沒太仔細研究)

二、使用OpenWrt路由器

Fedora都能使用iPhone共享的網絡,我覺得OpenWrt肯定也可以,所以我就去搜索資料。發現可以,並且自己也嘗試成功。下面將查到的資料總結一下。(其實一篇文章就講清楚了,但是之前查了很多)

(一)安裝OpenWrt依賴包

opkg update
opkg install kmod-usb-net-ipheth kmod-usb-net kmod-usb-ohci kmod-usb-uhci kmod-usb2 libimobiledevice-utils libplist-utils libusbmuxd-utils usbmuxd
kmod-usb-net-ipheth //這個是啥,查查
具體依賴包的作用見下面
Kernel modules  --->
    USB Support  --->
        <*> kmod-usb-net............... Kernel modules for USB-to-Ethernet convertors
        <*> kmod-usb-ohci............................... Support for OHCI controllers
        <*> kmod-usb-uhci............................... Support for UHCI controllers
        <*> kmod-usb2................................... Support for USB2 controllers

Utilities  --->
    <*> libimobiledevice-utils............ A library that talks to Apple devices.
    <*> libplist-utils............................. Apple property list converter
    <*> libusbmuxd-utils......................... USB multiplexing daemon utilies
    <*> usbmuxd.......................................... USB multiplexing daemon

 (二)配置usbmuxd

iPhone的USB tethering需要usbmuxd進程的運行。usbmuxd並不會自動運行,因此可以在OpenWrt終端手動啟動,或制作以下開機自啟動腳本,並通過命令使其自啟動。[1]

使用命令新建/etc/init.d/usbmuxd腳本,並給腳本添加可執行權限。

touch /etc/init.d/usbmuxd
vi /etc/init.d/usbmuxd
chmod +x /etc/init.d/usbmuxd

下面是自啟動腳本內容。

#!/bin/sh /etc/rc.common
# Copyright (c) 2011-2012 OpenWrt.org
START=99

stop() {
    killall usbmuxd
}

start() {
    if [ ! -d "/var/lib/lockdown" ];then
        mkdir -p /var/lib/lockdown
    fi

    ./usr/sbin/usbmuxd &
}

 腳本添加完成后,運行命令啟動usbmuxd,並且添加自啟動。

/etc/init.d/usbmuxd enable
/etc/init.d/usbmuxd start

(三)添加網絡

在usbmuxd進程啟動的前提下,使iPhone通過usb線連接路由器,並開啟iPhone個人熱點。

此時,手機端會彈出如圖顯示的是否允許電腦連接多媒體。這個可以看出路由器已經可以識別iPhone。

通過下面代碼查看新增加的網絡設備。原始設備一般為eth0,新增設備可能是eth1或eht2。

cat /proc/net/dev

這里,在我的路由器看到的新增設備是eth1,以此為例子,添加網絡。

添加方式一:使用uci設置。

uci set network.iPhone=interface
uci set network.iPhone.proto=dhcp
uci set network.iPhone.ifname=eth1
uci commit network

添加方式二:編輯/etc/config/network文件,在文件中加入

config interface 'eth1'
  option ifname 'iPhone'
  option proto 'dhcp'

添加方式三:在luci界面手動添加

Network->Interface->Add new interface

添加網絡,設備選擇eth1,協議選dhcp

 

添加網絡后,修改接口防火牆,與wan口在一起。(這個還沒搞懂)

(四)上網吧!

 

這里將上面的思路整理了一下,寫了一個自動配置腳本。

#!/bin/sh

#script to make the OpenWrt Router use net from iPhone

#install packages
opkg update
opkg install kmod-usb-net-ipheth kmod-usb-net kmod-usb-ohci libimobiledevice-utils libplist-utils libusbmuxd-utils usbmuxd

#usbmuxd auto-start
cp usbmuxd /etc/init.d/usbmuxd
chmod +x /etc/init.d/usbmuxd

/etc/init.d/usbmuxd enable
/etc/init.d/usbmuxd start

#set network
uci delete network.wan

uci set network.iPhone=interface
uci set network.iPhone.proto=dhcp
uci set network.iPhone.ifname=eth1
uci commit network

uci set firewall.@zone[1].network='wan6 iPhone'
uci commit firewall
/etc/init.d/firewall restart
/etc/init.d/network reload
/etc/init.d/network restart

也可以去我的GitHub查看

https://github.com/huipengly/OpenWrtUseiPhoneNet

 

參考

1.OpenWrt支持usb tethering


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM