iPhone 网络共享
除非您的运营商禁用,否则可以通过 Wi-Fi、USB 或 蓝牙 共享 iPhone 的移动数据连接
- 如果您的计算机可以连接到无线网络,则 Wi-Fi 不需要额外的配置。
- 下面提供了 USB 和蓝牙网络共享的说明。
USB 网络共享
通过 USB 本地网络共享是最佳选择,因为它提供更稳定的连接,并且比蓝牙或 Wi-Fi 更省电。
要通过 USB 网络共享您的 iPhone,您需要安装 libimobiledevice 和 usbmuxd。usbmuxd 软件包依赖于 libimobiledevice,后者负责执行与 iOS 设备的底层连接。usbmuxd 软件包还包含一个 udev 规则,该规则在设备连接或断开连接时自动启动和停止守护程序。有关更多详细信息,请参阅 iOS。
连接 iOS 设备并验证 usbmuxd.service
是否自动启动。
接下来,在您的 iPhone 上启用个人热点,并将其插入您的计算机。此时,您将拥有一个新的以太网设备可用,并且应该能够像使用任何其他以太网连接一样,使用任何网络管理器通过新的 iPhone 以太网设备连接到互联网。
如果您正在进行MAC 地址欺骗,您可能需要为 ipheth
驱动程序添加例外,因为它不支持 MAC 克隆
/etc/NetworkManager/conf.d/your-file-here.conf
[your-section] match-device=*,except:driver:ipheth
使用 systemd-networkd
如果 systemd-networkd 用于网络管理,您可以像使用任何其他适配器一样,轻松配置它以通过 iPhone 连接到互联网。
例如,如果 enp0s26u1u2c4i2 是由 iPhone 创建的网络设备的名称,如 networkctl list
显示的那样,创建以下 .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
标志。当构建自己的内核时,可能会发生此问题。
.config
CONFIG_USB_IPHETH=y
蓝牙网络共享
蓝牙网络共享会相对较快地耗尽电池电量,但是同时从 USB 端口充电效果很好。
硬件要求
- 运行 OS 3.0 且启用网络共享的 iPhone。请参阅设置 > 通用 > 网络 并打开网络共享选项。
- 蓝牙适配器或类似设备,最好具有 EDR(增强数据速率)以获得可接受的速度。已使用 Belkin F8T016NE 进行测试。
设置
请参阅主文章 蓝牙 并设置蓝牙守护程序。
Gnome/XFCE
安装 Blueman GTK 蓝牙管理器。
蓝牙图标应出现在您的通知区域中。注意:如果蓝牙在启动时未打开,则可能不会显示该图标。单击它,并搜索附近的设备,添加您的 iPhone(注意,您可能需要在 iPhone 上打开蓝牙设置屏幕才能使发现工作)。
将 iPhone 添加到设备列表后,打开“设备”菜单并选择“配对”。这将需要在计算机上输入 PIN 码,然后在 iPhone 上输入 PIN 码。现在再次打开“设备”菜单,然后选择网络访问 > 网络接入点。如果一切顺利,blueman 会报告成功,并且 iPhone 上的状态栏应变为蓝色,表示网络共享成功。
Blueman 将创建一个新的网络接口,通常为 bnep0。要连接到它,请以 root 身份运行以下命令。
# dhcpcd bnep0
netcfg
或者,您可以创建一个 netcfg 网络配置文件,以便从命令行轻松进行网络共享,而无需 Blueman 或 Gnome。假设已与地址为 '00:00:DE:AD:BE:EF' 的 iPhone 配对,只需在 /etc/network.d
中创建一个名为 - 例如 - '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