跳至內容
出自 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