闲置安卓手机变身“旁路网关”:零成本实现全屋科学上网

闲置安卓手机变身“旁路网关”:零成本实现全屋科学上网

bonnie366
2年前发布
摘要:家里有闲置的安卓手机?千万别扔!本教程将教你如何利用一台 Root 后的安卓手机,通过几行脚本将其变成“旁路网关”(软路由)。无需购买 R2S/R4S,无需复杂的 OpenWrt 配置,配合你喜欢的 VPN 客户端,即可零成本实现全屋设备科学上网。

前言:为什么要用手机当网关?

相信大部分极客或技术爱好者的抽屉里,都躺着一两部不再使用的旧安卓手机。与其让它们吃灰,不如让它们发挥余热。

相比于购买专业的软路由设备,手机做网关有以下优势:

  • 零成本:不需要额外购买硬件。
  • 配置低门槛:不需要学习复杂的 Linux 路由表或 OpenWrt 插件,只要会用安卓 APP 即可。
  • 生态丰富:安卓拥有最全的 VPN 客户端支持(Clash, V2RayNG, 各种官方加速器),可以轻松突破部分服务的“设备数量限制”。
  • 性能足够:即便是几年前的骁龙处理器,处理几百兆的 AES 加密流量也是绰绰有余的。

准备工作

在开始之前,请确保你拥有以下条件:

  1. 一台安卓手机:必须已经 ROOT(这是核心前提,未 Root 无法修改底层网络规则)。
  2. 连接方式:WiFi 环境,或者准备一个 Type-C 转 RJ45 网口扩展坞(强烈推荐有线连接,更稳定)。
  3. 软件环境:手机已安装好 VPN 软件并能正常连通外网。

第一步:环境配置(ADB 或 Termux)

我们需要进入手机的 Linux 底层命令行来执行脚本。有两种方式:

方式 A:使用电脑 ADB 连接(推荐)

这种方式方便复制粘贴脚本,操作更精准。

  1. 下载 ADB 工具包

  2. 开启手机调试

    • 进入「设置」->「开发者选项」,开启 “USB 调试”
    • 注:若找不到开发者选项,请在「关于手机」中连续点击「版本号」7次。
  3. 连接测试

    • 手机连接电脑,解压 ADB 文件夹,在当前目录打开 CMD 或终端。
    • 输入 adb devices,出现设备号即成功。
    • 输入 adb shell 进入手机终端。
    • 输入 su 获取 Root 权限(此时符号应变为 #)。

方式 B:手机端使用 Termux

如果你不想用电脑,可以直接在手机上操作。


第二步:固定手机 IP 地址

作为局域网的网关服务器,手机的 IP 必须是固定的,不能由路由器随机分配。

  1. 进入手机 WiFi 设置
  2. 找到当前连接的网络,将 IP 设置 从 DHCP 改为 静态 (Static)
  3. 填写信息(以主路由 IP 为 192.168.0.1 为例):

    • IP 地址:192.168.0.123 (找一个没人用的 IP)
    • 网关:192.168.0.1
    • DNS:8.8.8.81.1.1.1

第三步:部署转发脚本(核心)

这是本教程的灵魂。安卓系统默认不会转发别人的流量,我们需要用脚本开启 IP 转发,并配置 iptables 规则。

  1. 创建脚本存放目录

    mkdir -p /data/proxy
    cd /data/proxy
  2. 创建并编辑脚本
    你可以使用 vi proxy.sh 创建文件,或者在电脑上写好后通过 adb push 传入手机。脚本内容如下:
#!/system/bin/sh

# === 配置区域 (根据实际情况修改) ===
tun='tun0'      # VPN开启后的虚拟接口名称,通常是 tun0
dev='wlan0'     # 物理接口名称:WiFi通常是 wlan0,插网线通常是 eth0
interval=3      # 网络状态检测间隔(秒)
pref=18000      # 路由策略优先级
# =================================

# 1. 开启系统 IP 转发功能
sysctl -w net.ipv4.ip_forward=1

# 2. 清除 filter 表转发链规则,防止防火墙阻断内网流量
iptables -F FORWARD

# 3. 添加 NAT 转换
# 这一步至关重要,让流量经由 VPN 接口出去
iptables -t nat -A POSTROUTING -o $tun -j MASQUERADE

# 4. 添加路由策略
# 将来自物理接口(dev)的流量查表转发给虚拟接口(tun)
ip rule add from all table main pref $pref
ip rule add from all iif $dev table $tun pref $(expr $pref - 1)

contain="from all iif $dev lookup $tun"

# 5. 守护进程
# 循环监测,防止 VPN 重连或网络波动导致策略失效
while true ;do
    if [[ $(ip rule) != *$contain* ]]; then
            if [[ $(ip ad|grep 'state UP') != *$dev* ]]; then
                echo -e "[$(date "+%H:%M:%S")] dev link down."
            else
                # 重新添加策略
                ip rule add from all iif $dev table $tun pref $(expr $pref - 1)
                echo -e "[$(date "+%H:%M:%S")] rules restored."
            fi
    fi
    sleep $interval
done

运行脚本:
赋予执行权限并让其在后台运行:

chmod +x proxy.sh
nohup ./proxy.sh &
注意:如果脚本报错,请检查 dev 变量。在终端输入 ip a 查看你的网卡名称,WiFi 通常是 wlan0,插网线通常是 eth0

第四步:客户端接管(起飞!)

现在手机已经准备就绪,我们需要让家里的其他设备“走”这条路。

方案 A:全屋自动翻墙(修改主路由)

适用场景:适合希望家里所有设备(电视、手机、iPad、智能家居)自动科学上网的用户。

  1. 登录主路由器后台。
  2. 找到 DHCP 服务器 设置。
  3. 默认网关 (Gateway) 改为 手机的 IP(如 192.168.0.123)。
  4. 重启路由器,或者让设备断开重连 WiFi。

方案 B:指定设备翻墙(手动设置)

适用场景:适合只想让主力 PC 或 PS5/Switch 游戏机科学上网,不影响家人使用。

  1. 打开电脑/游戏机的网络设置。
  2. 手动填入 IP 地址(保持同网段)。
  3. 网关 (Router) 一栏填写 手机的 IP
  4. DNS 建议填 1.1.1.18.8.8.8 防止 DNS 污染。

进阶玩法:使用网线连接(强烈推荐)

虽然 WiFi 也能用,但无线是半双工的,且容易受干扰,作为网关使用时 Ping 值带宽 都会受限(实测 WiFi 只能跑 20-30Mbps)。

推荐方案:
购买一个 Type-C 转千兆网口扩展坞(最好带 PD 充电,保证手机 24 小时不断电)。

操作调整:

  1. 插上网线后,手机通常会识别为 eth0 接口。
  2. 使用 ip a 确认网卡名称。
  3. 修改脚本中的 dev='wlan0'dev='eth0'
  4. 杀掉旧进程并重新运行脚本。

效果对比:
使用有线连接后,跑满 500M 宽带 毫无压力,延迟极低,稳定性堪比几百元的 R2S 软路由。


常见问题与避坑

  1. 断网问题

    • 现象:如果在切换 VPN 节点后断网,是因为 VPN App 重建了虚拟网卡导致路由表失效。
    • 解决方法:断开 VPN -> 等待几秒 -> 重新连接 -> 脚本会自动修复规则(因为脚本里有守护进程)。
  2. DNS 污染

    • 现象:如果能上 QQ 但打不开 Google,说明 DNS 还是国内的。
    • 解决方法:请务必将上网设备的 DNS 手动修改为 8.8.8.81.1.1.1
  3. 手机重启

    • 注意:安卓重启后,所有临时网络规则都会消失。你需要重新连接 ADB 或 Termux 运行一次脚本。
    • 进阶:可以使用 Magisk 模块来实现开机自启(需一定动手能力)。
  4. 省电策略

    • 操作:请务必关闭手机的“省电模式”,并在后台管理中锁定 Termux 或 VPN 软件,允许其“无限制后台运行”,防止系统杀后台导致断网。
总结:通过这种方式,我们不仅让旧手机变废为宝,还获得了一个带屏幕、自带 UPS 电源(电池)、配置强悍的“智能软路由”。快去试试吧!

版权声明:本文由 赛博61区 原创发布,转载请注明出处。
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消 登录评论
SSL