iPhone 网络共享

来自 ArchWiki

除非您的运营商禁用,否则可以通过 Wi-FiUSB蓝牙 共享 iPhone 的移动数据连接

  • 如果您的计算机可以连接到无线网络,则 Wi-Fi 不需要额外的配置。
  • 下面提供了 USB 和蓝牙网络共享的说明。

USB 网络共享

通过 USB 本地网络共享是最佳选择,因为它提供更稳定的连接,并且比蓝牙或 Wi-Fi 更省电。

要通过 USB 网络共享您的 iPhone,您需要安装 libimobiledeviceusbmuxdusbmuxd 软件包依赖于 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 已被 netctl 取代(在 Talk:IPhone tethering 中讨论)

或者,您可以创建一个 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