iPhone 网络共享
您可以通过 WiFi、USB 或蓝牙来在设备上共享您的 iPhone 的移动数据连接,除非您的服务提供商(运营商)禁用了此功能:
- 只要您的电脑能够连接无线网络,WiFi 就不需要其他额外配置,
- 下文提供使用 USB 与蓝牙的操作指南。
通过 USB 进行共享[编辑 | 编辑源代码]
通过原生的 USB 进行共享是最理想的方式,因为其可以提供更加稳定的连接,且较蓝牙和 WiFi 共享消耗的电量较少。
要使用 USB 进行 iPhone 网络共享,您需要安装 libimobiledevice包 与 usbmuxd包。usbmuxd 依赖于 libimobiledevice ,其中 usbmuxd 负责系统与 iOS 设备间的底层连接。usbmuxd 包也包含了一条 udev 规则,使其能够在设备连接或断开连接时自动启动与停止该守护进程。相关内容详见 iOS。
连接 iOS 设备,并确保 usbmuxd.service
已经自动启动。
下一步,在您的 iPhone 上启用个人热点(Personal Hotspot),并将其用数据线连接至您的电脑。这时您应该会多出一个可用的以太网连接,并能够使用任意网络管理器通过新加入的 iPhone 以太网设备连接到 Internet,与使用其他普通的以太网连接没有什么区别。
如果您在使用 MAC 地址伪装,您可能需要将不支持 MAC 复制的 ipheth
驱动程序列为例外。
/etc/NetworkManager/conf.d/your-file-here.conf
[your-section] match-device=*,except:driver:ipheth
使用 systemd-networkd[编辑 | 编辑源代码]
如果您使用 systemd-networkd 进行网络管理,您能轻易将其配置为通过 iPhone 连接 Internet,与使用其他普通网络适配器时别无二致。
假设 enp0s26u1u2c4i2 是运行 networkctl list
命令时展示的 iPhone 创建的网络设备的名称,创建下面的 .network 文件:
/etc/systemd/network/30-tethering.network
[Match] Name=enp0s26u1u2c4i2 [Network] DHCP=yes
故障排除[编辑 | 编辑源代码]
若设备列表中有 iPhone 但无法连接,您有可能需要在使用网络共享之前先将 iPhone 与您的电脑连接并进行配对。过程中,使用 PIN 的 iPhone 需要解锁。
# idevicepair pair
缺少驱动程序[编辑 | 编辑源代码]
如果您按照上面的步骤操作,但 networkctl list
命令仍无法检测到 iPhone,您可能缺少了ipheth 驱动。您可以运行 modprobe ipheth
命令来检查您是否安装了该驱动程序。如果出现了错误消息,可能是您自行编译内核时发生的问题。请在编译内核时设置 ipheth
flag。
.config
CONFIG_USB_IPHETH=y
通过蓝牙进行共享[编辑 | 编辑源代码]
使用蓝牙进行网络共享会相对较快地将电池耗尽。如果您同时连接了 USB 电源供应器,情况可能会稍好一些。
硬件要求[编辑 | 编辑源代码]
- 运行 iPhone OS 3.0 及以上的开启了网络共享的 iPhone。在设置 > 通用 > 网络中开启网络共享选项。
- 蓝牙控制器或类似的硬件设备,最好支持 EDR (Enhanced Data Rate) 以便获得相对较好的速度。在 Belkin F8T016NE 上经过了测试。
设置[编辑 | 编辑源代码]
参考主文章蓝牙并设置好蓝牙守护程序。
Gnome/XFCE[编辑 | 编辑源代码]
安装 Blueman GTK 蓝牙管理器。
您的通知区域中应该会出现一个蓝牙图标(注意:如果在开机时未启用蓝牙,图标可能不会出现)。点击该图标,并搜索附近的设备,添加您的 iPhone。(注意,要使 iPhone 可以被发现,您可能需要在 iPhone 上打开设置中的蓝牙页面。)
一旦 iPhone 被添加到了设备列表中,打开设备菜单并选择 配对 。通常这需要先在电脑后在 iPhone 上输入 PIN 码。连接好后,再次打开设备菜单,选择网络访问 > 网络访问点。如果一切正常的话,blueman 会报告成功,您的 iPhone 上的状态栏也会变为蓝色,表示成功建立了网络共享。
Blueman 将会创建一个新的网络设备,一般为 bnep0。要连接到该设备,以 root 身份运行以下命令:
# dhcpcd bnep0
netcfg[编辑 | 编辑源代码]
您也可以创建一个 netcfg 网络档案,以便在命令行界面中就可以轻松地进行网络共享而不需要使用 Blueman 或 Gnome。假设您有一部地址为 '00:00:DE:AD:BE:EF' 的已经配对好的 iPhone,只需要在 /etc/network.d called
中创建一个档案,例如 'tether' :
CONNECTION="ethernet" DESCRIPTION="Ethernet via pand tethering to iPhone" INTERFACE="bnep0" IPHONE="00:00:DE:AD:BE:EF" PRE_UP="pand -E -S -c ${IPHONE} -e ${INTERFACE} -n 2>/dev/null" POST_DOWN="pand -k ${IPHONE}" IP="dhcp"
接下来执行:
# netcfg tether
要关闭网络连接并停止网络共享:
# netcfg down tether