跳转到内容

iPhone 网络共享

来自 Arch Linux 中文维基

您可以通过 Wi-FiUSB蓝牙来在设备上共享您的 iPhone 的移动数据连接,除非您的服务提供商(运营商)禁用了此功能:

  • 只要您的电脑能够连接无线网络,Wi-Fi 就不需要其他额外配置,
  • 下文提供使用 USB 与蓝牙的操作指南。

通过 USB 进行共享[编辑 | 编辑源代码]

通过原生的 USB 进行共享是最理想的方式,因为其可以提供更加稳定的连接,且较蓝牙和 Wi-Fi 共享消耗的电量较少。

要使用 USB 进行 iPhone 网络共享,您需要安装 libimobiledeviceusbmuxdusbmuxd 依赖于 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 已经被 netctl 取代 (在Talk:IPhone 网络共享讨论)

您也可以创建一个 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