iPhone 网络共享

出自 Arch Linux 中文维基

您可以通過 WiFiUSB藍牙 來在設備上共享您的 iPhone 的移動數據連接,除非您的服務提供商(運營商)禁用了此功能:

  • 只要您的電腦能夠連接無線網絡,WiFi 就不需要其他額外配置,
  • 下文提供使用 USB 與藍牙的操作指南。

通過 USB 進行共享[編輯 | 編輯原始碼]

通過原生的 USB 進行共享是最理想的方式,因為其可以提供更加穩定的連接,且較藍牙和 WiFi 共享消耗的電量較少。

要使用 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