Android 网络共享

来自 ArchWiki

网络共享 是一种通过智能手机的网络连接,使您的电脑可以访问互联网的方式。自 Android 2.2 "Froyo" 起,原生支持 USB 网络共享和 Wi-Fi 热点网络共享。USB #反向网络共享,即通过您的电脑使您的智能手机访问互联网,也是可行的。

原生方式

USB 网络共享

此文章或章节需要扩充。

理由: 应该添加一个关于 RNDIS 网络的新章节,它在大多数情况下都能正常工作。(在 Talk:Android 网络共享 中讨论)

USB 网络共享自 Android 2.2 "Froyo" 起可用,通常比 Wi-Fi 提供更可靠的连接,同时比蓝牙更快。由于 USB 网络共享是一种有线方法,因此对于相当的连接质量,它也比无线方法消耗更少的电量。

  • 通过 USB 将手机连接到电脑(USB 连接模式 -- 手机门户、存储卡或仅充电 -- 并不重要,但请注意,在网络共享期间您将无法更改 USB 模式)
  • 从手机启用网络共享选项。这通常通过以下方式完成
    • 设置 > 无线和网络 > 互联网共享 (或网络共享与便携式热点,对于更新的版本)
    • 设置 > 更多... > 网络共享与移动热点 > USB 网络共享
  • 安装 usb_modeswitch 软件包。有关更多信息,请参见 移动宽带调制解调器#模式切换
  • 按照 网络配置 进行操作。
注意: 网络接口名称可能会根据您使用的 USB 端口而更改。您可能想要更改接口名称,以便为您的设备创建一个唯一的名称,而与 USB 端口无关。

如果您正在使用蜂窝数据套餐,并且最近进入了新的计费周期,您可能需要重启手机。

使用 systemd-networkd 和 udev

使用 systemd-networkd,您可以自动调整网络,以便在插入手机时使用手机作为网关。

/etc/udev/rules.d/90-android-tethering.rules
# Execute pairing program when appropriate
ACTION=="add|remove", SUBSYSTEM=="net", ATTR{idVendor}=="18d1" ENV{ID_USB_DRIVER}=="rndis_host", SYMLINK+="android"

您可能需要根据您的手机调整 idVendor 属性。您可以使用 udevadm 进行检查

$ udevadm info /sys/class/net/enp0s26u1u2

然后创建相应的 systemd-networkd 文件

/etc/systemd/network/50-enp0s26u1u2.network
[Match]
Name=enp0s26u1u2

[Network]
DHCP=yes

Wi-Fi 热点

对于运行 Android 2.2 "Froyo" 或更高版本的设备,可以使用 Android 手机作为 Wi-Fi 热点(连接到 3G/4G 移动互联网连接)。

通过以下方式之一启用它

  • 设置 > 无线和网络 > 互联网共享 > Wi-Fi 热点
  • 设置 > 更多... > 网络共享与移动热点 > 移动 Wi-Fi 热点
注意
  • 在某些手机上,这种方法会迅速耗尽电池电量,并且容易引起剧烈发热,这与 USB 不同。
  • 在某些手机上,只能共享移动数据,而不能“桥接” Wi-Fi 信号。

通过蓝牙网络共享

Android(从至少 4.0 开始,可能更早)可以在接入点模式下提供蓝牙个人区域网络 (PAN)。

NetworkManager 可以执行此操作并自行处理网络初始化;有关更多详细信息,请查阅其文档。

或者:配对并确保您可以连接您的计算机和 Android 设备,如 蓝牙 中所述,然后,替换 Android 设备的地址(此处给出为 AA_BB_CC_DD_EE_FF),执行

$ dbus-send --system --type=method_call --dest=org.bluez /org/bluez/hci0/dev_AA_BB_CC_DD_EE_FF org.bluez.Network1.Connect string:'nap'

这将创建一个网络接口 bnep0。最后,在此接口上配置网络连接;Android 默认提供 DHCP。

使用 EasyTether 进行 USB 网络共享

获取 easytether linux 客户端软件。设置和运行它的命令如下。

# pacman -U easytether-0.8.5-2-x86_64.pkg.tar.xz
# easytether-usb
# dhcpcd tap-easytether

确保您的手机上安装了 EasyTether android 应用程序,以便它可以连接。注意:Lite 应用程序禁用了一些连接,您必须拥有付费应用程序才能获得完整功能。因此,建议改用 AziLink 设置。

反向网络共享

反向网络共享是通过电脑为 Android 提供互联网连接。gnirehtetAUR 提供反向网络共享。

像上面提到的那样,通过 USB 将您的手机连接到您的电脑并启动

$ gnirehtet run
注意: gnirehtetAUR 目前仅支持 USB。

使用 SOCKS 代理进行网络共享

使用此方法,网络共享是通过从手机到电脑的端口转发来实现的。这仅适用于浏览。对于 Firefox,您应该在 about:config (地址栏) 中将 network.proxy.socks_remote_dns 设置为 true

所需工具

步骤

Tetherbot

Tetherbot 是一个实验性的 SOCKS 代理和端口跳板,它应该允许您使用 T-Mobile G1 手机的互联网连接(EDGE、3G 或 Wifi)将您的笔记本电脑连接到互联网。 它已停止维护,其网站已关闭,但仍然可以从 Wayback Machine[1] 访问,其 APK 也可以从中下载。

为了通过 Tetherbot 进行 SOCKS 代理以将您的浏览器连接到互联网,请执行以下操作

  1. 对于您的手机,打开应用程序Tetherbot,拒绝电话和存储权限,然后按Start Socks按钮
  2. 将端口转发到您的本地计算机
    # adb forward tcp:1080 tcp:1080
  3. 现在转到您的 Web 浏览器的代理设置,设置手动代理配置,代理主机地址为 localhost,端口为 1080,其余留空。
注意: 如果您想停止使用手机的连接,请记住在您的 Web 浏览器中禁用这些代理设置。

Proxoid

按照以下链接中演示的说明进行操作。

Android Proxy Server

目前在 Google Play 商店 中可用,并支持 HTTP/HTTPS、Socks5、Shadowsocks 和 TCP Relay 代理。

要启动 SOCKS 代理以将您的浏览器连接到互联网,请执行以下操作

  1. 打开应用程序Android Proxy Server,并启用Socks5 Proxy勾选框
  2. 将端口转发到您的本地计算机
    # adb forward tcp:1088 tcp:1088
  3. 现在转到您的 Web 浏览器的代理设置,设置手动代理配置,代理主机地址为 localhost,端口为 1088,其余留空。
注意: 如果您想停止使用手机的连接,请记住在您的 Web 浏览器中禁用这些代理设置。