引言

在这份逐步指南中,您将搭建一个功能完善的代理农场,使用OpenWRT和USB调制解调器。最终,您将拥有一个或多个带身份验证的HTTP(S)代理,每个代理将通过某个调制解调器的移动网络通道工作。您将学习如何正确选择设备,安装OpenWRT,配置移动网络连接(QMI或MBIM模式),在必要时启用raw-IP,启动3proxy,将每个代理绑定到其接口,并通过标准方式检查结果。此外,您还将了解如何扩展配置,自动重启调制解调器,并监控稳定性。

该指南旨在面向高级用户,但所有步骤均以简单明了的方式详尽描述,确保没有任何明显的动作被忽略。如果您之前没有使用过OpenWRT,仍然可以通过逐步执行说明来重复操作。对于经验丰富的读者,我们提供了扩展选项、优化方案和常见问题部分。

在开始之前,熟悉以下基本知识会很有帮助:如何访问路由器的网页界面(LuCI),如何打开SSH客户端并输入命令,如何更换固件,如何查看系统日志。我们将解释关键命令,并指出在界面上具体点击的位置。整个过程大约需要3–6小时:如果您是第一次刷机并为多个调制解调器搭建农场,则需要更长时间,反之,如果您已有OpenWRT和一个调制解调器,则需要更少时间。

建议:如果您想更快地验证想法,从一个调制解调器和一个代理端口开始。当一切正常后,再扩展到2–8个调制解调器。

⚠️ 注意:请务必在您所在国家的法律和运营商的条件下使用代理。该指南不包含也不意图提供任何绕过封锁、非法操作或干扰第三方网络的方法。

✅ 检查:完成整个指南后,您将拥有一个可用的代理列表,格式为:主机:端口,包含用户名和密码,可以通过浏览器或curl进行检查。每个代理将通过其移动接口连接互联网,并且运营商将为它们提供不同的外部IP地址。

准备工作

在开始之前,请准备好工具、软件和访问权限。这样您可以避免停机和不必要的重启。

所需工具和访问权限

  • 带以太网端口的计算机或笔记本,或USB以太网适配器。
  • 通过以太网线直接连接到路由器(最好直接连接到LAN端口)。
  • SSH客户端,以连接到OpenWRT,地址为192.168.1.1(例如,Linux或Windows Terminal内置终端)。网页界面可通过浏览器访问。
  • 在路由器上的管理员权限(OpenWRT中的root)。

系统要求和兼容性

  • 支持OpenWRT和USB 2.0或3.0的路由器以连接调制解调器。对于2–8个调制解调器,请使用外部有电的USB集线器。
  • 路由器的闪存至少要有16MB,RAM至少为128MB(对于多个调制解调器和3proxy,256–512MB更佳)。
  • 一张或多张具有活跃数据传输方案的SIM卡。请向运营商查询APN。
  • 支持QMI/MBIM/NCM或HiLink模式的USB调制解调器。常见选择包括:Quectel EC25/EP06/EM12,华为E3372(Stick和HiLink),中兴和Sierra Wireless。对于稳定的农场,最好使用QMI/MBIM调制解调器。

需提前下载和安装的内容

  • 您路由器型号的OpenWRT固件镜像(请访问OpenWRT官网的Firmware Download部分)。选择factory构建进行初次刷机,选择sysupgrade进行OpenWRT的更新。
  • 软件包列表:luci, luci-proto-qmi, luci-proto-mbim, luci-proto-ncm, uqmi, umbim, comgt-ncm, kmod-usb-net, kmod-usb-net-qmi-wwan, kmod-usb-net-cdc-mbim, kmod-usb-net-cdc-ncm, kmod-usb-serial-option, usb-modeswitch, 3proxy。我们将演示如何通过opkg安装它们。
  • 文本编辑器以编辑配置文件,例如在OpenWRT中内置的vi编辑器或支持SSH复制的本地编辑器。

备份和回滚计划

  1. 通过以太网线将计算机连接到路由器。
  2. 打开浏览器并访问192.168.1.1。如果已安装OpenWRT,请输入密码,转到System → Backup/Flash Firmware。
  3. 点击生成存档,下载当前配置的备份。
  4. 将存档保存到计算机中,使用易于识别的名称和日期。这将使您能够快速恢复到工作状态。

⚠️ 注意:在刷机之前,请确保您能够访问路由器的恢复程序(如恢复模式或TFTP)。这样可以在刷机失败时拯救设备。

✅ 检查:确保备份文件已下载并成功解压,且配置文件可见。确保您知道如何根据制造商的说明进入路由器的恢复模式。

基本概念

简单易懂的关键术语

  • OpenWRT — 为路由器提供的开放固件,可以完全控制网络、数据包和接口。
  • 移动调制解调器 — 一种USB设备,可将路由器连接到运营商的移动网络(3G/4G/5G)并提供IP地址。
  • QMI/MBIM/NCM — 调制解调器与路由器之间的通信协议。QMI和MBIM通常对LTE更加稳定和快速,NCM常用于部分华为/中兴设备。
  • raw-IP — 一种模式,其中数据帧在没有以太网头的情况下被传输。许多QMI调制解调器要求使用这种模式;启用此模式可以提高兼容性。
  • HiLink — 部分调制解调器的一种模式,调制解调器自身进行NAT,并以普通网络卡的形式提供本地IP给路由器。这种模式启动更简单,但灵活性较低。
  • 代理 — 一种通过路由器接收请求并将其发送到互联网的程序。我们将设置带有身份验证的HTTP(S)代理。

其工作原理

在OpenWRT上,路由器将一个或多个USB调制解调器视为单独的网络接口。每个接口将从运营商获得一个移动IP。代理服务器将在路由器上启动并配置,以使特定端口的出站流量通过相应的调制解调器。这样,您将获得以主机:端口为格式的地址集,每个端口与其移动IP对应。

在开始之前需要理解的关键点

  • 每个调制解调器将有其接口(例如,wwan0、wwan1等)。它们的名称和编号可能因连接顺序不同而有所区别。
  • 对于QMI/MBIM调制解调器,通常需要raw-IP参数;如果没有该参数,连接虽然能建立,但流量无法正常传输。
  • 在HiLink模式下,调制解调器自己进行NAT。这虽然更简单,但在多个调制解调器的情况下,更难以确保将代理端口与你的具体SIM卡绑定。
  • 需要正确配置防火墙区域和路由表,以便隔离每个代理的流量。

建议:如果您计划使用超过3–4个调制解调器,请提前准备一个带有单独电源模块的5V 3–5A的USB集线器。这将解决90%的稳定性和供电过载问题。

步骤1:为什么选择OpenWRT作为移动代理

该步骤的目标:明确确认OpenWRT是满足您需求的平台,并了解它在移动代理方面的具体优势。

  1. 明确您的任务。例如:需要2–6个独立的移动HTTP(S)代理用于测试、分析或与您的服务集成。
  2. 将OpenWRT的能力与您的需求进行对应:灵活路由、QMI/MBIM支持、防火墙、软件包、脚本、cron、简单的LuCI和SSH管理界面。
  3. 评估与PC组装的优势:更低的能耗、紧凑性、可靠性、自动启动、扩展成本低。
  4. 理解其限制:CPU性能弱于x86,RAM和闪存较少,对日志和监控的要求更高。

关键点:在正确配置的情况下,OpenWRT可以稳定运行数月而无需重启。它更容易复制和更新。许多移动调制解调器都是在OpenWRT上进行测试的。

✅ 检查:如果您的目标是稳定的移动HTTP(S)代理,且可以控制路由,OpenWRT是合适的。如果需要复杂的L7功能和实时DPI分析,请评估路由器的CPU性能,或者考虑x86平台。

步骤2:所需条件(兼容路由器、调制解调器)

该步骤的目标:确定并准备好兼容的路由器、USB调制解调器、集线器、SIM卡和电源,以便不出现瓶颈。

选择路由器

  1. 检查您的路由器是否支持当前版本的OpenWRT(稳定分支23.05.x或更新版本)。建议选择采用Mediatek或Qualcomm芯片组的模型,配备128–256MB RAM及USB端口。
  2. 如果计划使用4个及以上调制解调器,建议选择USB 3.0和千兆以太网设备。CPU性能对3proxy和NAT非常重要。
  3. 确保路由器有可用的恢复程序(恢复模式,TFTP)。这对于安全刷机至关重要。

选择调制解调器

  1. 对于LTE,优选支持QMI/MBIM的调制解调器:Quectel EC25/EP06/EM12,Sierra Wireless,一些中兴设备。
  2. 华为E3372有Stick和HiLink两种版本。Stick更优于路由控制,但HiLink在首次启动时更简单。
  3. 请向运营商确认支持的LTE/NR频段。信号强度和天线质量对稳定性至关重要。

SIM卡和APN

  1. 提前激活SIM卡,并在首次设置中禁用PIN码,以避免连接被阻止。
  2. 向运营商获取APN信息:例如apn.example。如果APN需要用户名和密码,请准备好相应信息。

电源和集线器

  1. 对于2个以上调制解调器,使用带外部电源的活性USB集线器。
  2. 检查电缆:短且优质的USB电缆能降低损耗和干扰。

建议:在每个调制解调器和相应的集线器端口上做物理标记。这样,您能更快地将wwan0、wwan1接口与对应的SIM联系起来。

✅ 检查:您拥有带USB的路由器、兼容的调制解调器、有电集线器、已知APN的SIM卡以及稳定的电源。所有设备均已准备就绪,可以进行刷机和设置。

步骤3:安装OpenWRT

该步骤的目标:在路由器上安装或更新OpenWRT,并确保能够访问LuCI网页界面和SSH。

从出厂系统刷机

  1. 通过电缆将PC连入路由器的LAN端口。
  2. 打开浏览器,访问路由器的出厂固件管理界面。
  3. 找到固件更新部分。选择适合您型号的OpenWRT factory固件。
  4. 开始刷机。请勿断电,等待路由器重启。

首次登录OpenWRT

  1. 在浏览器中打开192.168.1.1。首次登录LuCI时为root设置密码。
  2. 进入System → Backup/Flash Firmware,确保看到OpenWRT的版本和可用部分。
  3. 通过SSH连接:在终端输入ssh root@192.168.1.1,接受服务器密钥并输入密码。

更新软件包

  1. 执行命令:opkg update。
  2. 安装LuCI和所需协议(如果未安装):opkg install luci luci-proto-qmi luci-proto-mbim luci-proto-ncm。
  3. 安装驱动程序和工具:opkg install kmod-usb-net kmod-usb-net-qmi-wwan kmod-usb-net-cdc-mbim kmod-usb-net-cdc-ncm kmod-usb-serial-option usb-modeswitch uqmi umbim comgt-ncm。

⚠️ 注意:安装调制解调器软件包后,请通过命令reboot重启路由器。这将确保USB设备得到正确初始化。

✅ 检查:在LuCI中访问System → Software可查看已安装的软件包。通过SSH,输入dmesg可以检查USB子系统是否准备好。OpenWRT版本正常并且可以稳定访问192.168.1.1。

步骤4:调制解调器和网络接入配置

该步骤的目标:连接USB调制解调器,正确地在系统中识别它,创建网络接口并验证流量是否正常传输。

连接第一个调制解调器

  1. 将SIM卡插入调制解调器。首次设置时使用不带PIN码的SIM。
  2. 将调制解调器连接到路由器的USB端口,或连接到有电的USB集线器,再将集线器连接到路由器。
  3. 等待10–30秒。通过SSH执行:dmesg | tail — 您应该看到有关新USB设备和网络接口(例如,wwan0或cdc-wdm0)的信息。

在LuCI中创建QMI/MBIM/NCM接口

  1. 打开LuCI,进入Network → Interfaces → Add new interface。
  2. 输入名称,例如LTE1。
  3. 在协议字段中选择QMI Cellular(或MBIM Cellular,或NCM,具体视调制解调器而定)。
  4. 点击提交。指定设备:对于QMI,通常是/dev/cdc-wdm0,对于MBIM,也是cdc-wdm0,对于NCM,网络适配器如wwan0或usb0。
  5. 输入APN,例如apn.example。如果APN需要用户名/密码,请在相应字段填写。
  6. 在首次启动阶段,禁用PIN码。如果PIN码是必需的,请在相应字段填写。
  7. 保存并应用设置(Save & Apply)。

检查连接

  1. 进入Status → Overview,找到新接口LTE1及其状态。应从运营商获取IP地址。
  2. 通过SSH执行:uqmi -d /dev/cdc-wdm0 --get-data-status(对于QMI)或mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration(对于MBIM)。应显示“connected”和IP。
  3. 检查网络接入:opkg update — 如果成功结束,路由器应能访问网络。

建议:如果未获得IP,请尝试通过Network → Interfaces旁的Restart按钮重启接口LTE1,然后检查System → System Log中是否有APN或注册网络的错误信息。

✅ 检查:接口LTE1应获得IP地址,ping 8.8.8.8或使用opkg的包能够正常工作。这表明调制解调器和网络配置正确。

步骤5:raw-IP或桥接模式

该步骤的目标:为QMI/部分NCM调制解调器启用raw-IP,或选择更简单的桥接模式/HiLink,并了解其中的折衷。

何时需要raw-IP

  • 许多QMI调制解调器仅在raw-IP模式下才能正确传输数据。否则,接口可以启动,但数据包无法通过。
  • 在OpenWRT中,QMI调制解调器的raw-IP参数在接口或设备的设置中指定。

如何启用raw-IP

  1. 在LuCI中,进入Network → Interfaces → LTE1 → Edit → Advanced。
  2. 勾选raw IP模式,或设置相应的参数(如果可用)。在不同版本的LuCI中,可能有不同的表达。
  3. 保存并应用。重启接口LTE1。如果参数不可用,可以通过UCI设置:uci set network.LTE1.raw_ip='1'; uci commit network; /etc/init.d/network restart。

桥接模式(HiLink)

  • 如果使用HiLink调制解调器,它会自动建立连接,并在eth1或usb0接口上通过DHCP给路由器分配地址。
  • 创建DHCP Client类型的接口,而不是QMI/MBIM,指定相应设备,应用配置。

重要提示:HiLink模式启动更简单,但在多个设备的情况下,确保将代理端口绑定到特定调制解调器时则较为复杂。QMI/MBIM提供更好的路由和性能控制。

建议:对于3个以上的调制解调器农场,优选使用带raw-IP的QMI/MBIM模式。对于单个调制解调器的初始启动,可以使用HiLink,然后再切换到QMI/MBIM。

✅ 检查:启用raw-IP后,ping和包列表加载稳定。System Log中消失与帧格式或超时相关的错误。

步骤6:连接代理软件

该步骤的目标:安装和配置3proxy,使每个代理端口都使用所需的移动接口。实现授权和基本安全性。

安装3proxy

  1. 通过SSH更新软件包索引:opkg update。
  2. 安装3proxy:opkg install 3proxy。
  3. 确认已安装二进制文件:which 3proxy应返回路径,例如/usr/bin/3proxy。

一个代理的基本配置

  1. 创建文件/etc/3proxy/3proxy.cfg。如果文件不存在,3proxy将在首次启动时创建它;建议手动创建。
  2. 添加凭证:users user1:CL:pass1。这是用于HTTP基本授权的字符串。
  3. 限制访问:allow user1。此规则仅允许用户user1使用代理。
  4. 设置内部监听地址:internal 0.0.0.0。这样将允许在所有LAN接口上接受连接。
  5. 设置外部接口:external wwan0。替换为您的调制解调器接口,例如LTE1的wwan0。
  6. 在端口上启动HTTP代理,例如3128:proxy -p3128 -a。-a选项启用授权支持。
  7. 保存文件并启动服务:/etc/init.d/3proxy enable; /etc/init.d/3proxy start。

为多个调制解调器配置多个代理

  1. 连接第二个调制解调器,并配置第二个接口(例如,LTE2,设备为/dev/cdc-wdm1,名称为wwan1)。
  2. 为第二个代理添加一个帐户:users user1:CL:pass1, user2:CL:pass2。
  3. 为第二个端口创建单独的块:allow user2; external wwan1; proxy -p3129 -a。这样,端口3129将通过wwan1输出。
  4. 重启3proxy:/etc/init.d/3proxy restart。

防火墙与路由绑定

  1. 确保接口LTE1、LTE2在wan区域或使用相应NAT的单独区域。进入LuCI:Network → Firewall → Zones。
  2. 如果使用外部接口3proxy,虽然额外的路由策略不是必须的,但建议设置以确保。使用基于3proxy源地址或fwmark的策略路由。
  3. 对OpenWRT来说,可以使用mwan3包来管理多个wan接口。然而,在农场中,如果需要严格绑定端口与接口,直接在3proxy中使用external和静态ip规则更为有效。

建议:为简单起见,开始时使用3proxy中的external机制。如果未来需要精细的TCP/UDP端口组路由,请添加iptables mangle规则和ip rule。

✅ 检查:使用用户名user1和密码pass1连接到端口3128的代理。执行curl -x http://user1:pass1@ROUTER_LAN_IP:3128 https://ifconfig.me,并确保外部IP对应于接口LTE1。然后检查端口3129,比较LTE2的IP。

检查结果

该步骤的目标:确保所有组件正常运作,每个代理通过其调制解调器访问互联网,并且性能和稳定性符合预期。

检查清单

  • 能正常访问LuCI和SSH,地址为192.168.1.1。
  • 接口LTE1、LTE2等正常启动,从运营商获取IP。
  • 3proxy已启动并监听端口(例如3128、3129)。
  • 代理请求获得授权,且能够通过。
  • 每个端口的外部IP不同(不同SIM),或者符合所需的调制解调器。

如何测试

  1. 检查端口:通过PC执行telnet ROUTER_LAN_IP 3128。应能成功建立TCP连接。
  2. 检查外部IP:curl -x http://user1:pass1@ROUTER_LAN_IP:3128 https://ifconfig.me,对3129使用user2重复上述步骤。
  3. 检查速度:使用curl下载测试文件并评估带宽,或通过代理使用speedtest-cli(如果可能)。
  4. 检查会话保持:通过代理打开持久连接,并确保其在几分钟内不被中断。

建议:如果不需要外部接入,请限制代理仅在本地网络内访问。在3proxy中,可以设置为只在internal 192.168.1.1下监听,并仅在LAN中打开所需端口。

✅ 检查:外部IP在各端口间有所区分。opkg包和ping命令稳定无误。3proxy日志中没有常见的连接错误。

常见问题及解决方案

  1. 问题:接口LTE1连接成功,但无法上网。 原因:未启用QMI的raw-IP或APN设置错误。 解决方案:在接口设置中启用raw-IP,检查APN并重启网络。
  2. 问题:3proxy已启动,但流量通过错误的调制解调器。 原因:未为需要的接口指定external,或存在路由规则冲突。 解决方案:指定external wwanX,重启3proxy,必要时添加fwmark的ip规则。
  3. 问题:连接多个调制解调器时,流量偶尔丢失。 原因:USB集线器供电不足、调制解调器过热或信号弱。 解决方案:使用有电集线器、优质电缆、添加天线,减少一个集线器上的调制解调器数量。
  4. 问题:刷机后无法访问LuCI。 原因:浏览器缓存旧数据,或路由器未应用地址。 解决方案:在无痕模式下打开,检查电脑的网络设置,必要时根据制造商说明重置路由器。
  5. 问题:代理无法从您的网络访问。 原因:防火墙阻塞端口或3proxy未在正确地址监听。 解决方案:检查3proxy.cfg中的internal,防火墙中打开端口,重启服务。
  6. 问题:运营商IP变更频率过低或已固定。 原因:方案特性、CGNAT或运营商政策。 解决方案:重启接口,接口定期换IMSI不可行,查询方案,使用不同SIM卡,按计划强制执行ifdown/ifup。
  7. 问题:opkg无法安装软件包。 原因:缺乏DNS/路由或仓库被阻止。 解决方案:检查Network → Interfaces → LAN中的DNS,在临时为8.8.8.8添加DNS服务器,确保可以正常连接互联网。

建议:为网络问题诊断使用tcpdump在wwan0接口上。安装tcpdump:opkg install tcpdump,然后执行tcpdump -i wwan0 host 8.8.8.8,观察流量是否正常出行。

额外功能

扩展至3–8个调制解调器

  1. 标记接口:为它们命名为LTE1、LTE2、LTE3在LuCI中,并跟踪每个调制解调器与设备/dev/cdc-wdmX的关系。
  2. 在3proxy中为每个调制解调器创建单独的块:各自的用户、各自的端口、各自的external。
  3. 调整防火墙:每个WAN区域应允许出站流量并具有NAT。如果使用单独区域,请确保LAN中的转发规则正确。

自动重连和调度器

  1. 编写脚本,每N分钟检查特定接口的外部连接。如果没有响应,执行ifdown LTE1; sleep 5; ifup LTE1。
  2. 在LuCI的System → Scheduled Tasks中添加新任务:在添加框中输入*/15 * * * * /usr/bin/您的脚本.sh。
  3. 将行动记录到/var/log/proxy-rotate.log,以查看重连历史。

监控和日志

  • 启用3proxy的日志记录到单独文件。限制日志轮转,以免填满闪存。
  • 使用netdata或collectd监控CPU、RAM和接口。稳妥安装软件包,考虑到内存限制。

性能优化

  • 关闭不必要的服务,以释放RAM。
  • 在高负载情况下,启用可能且安全的offloading。
  • 使用短且优质的USB电缆,并检查调制解调器是否因过热而降频。如有必要,附加风扇。

外部访问和安全性

  • 如需从外部网络连接到代理,请在外部路由器上设置端口转发,或确保您的WAN口IP为白名单IP。
  • 在3proxy中添加强制性身份验证,使用允许的IP列表限制访问。操作必须在法律范围内进行。

建议:对于商业用途和快速扩展,考虑采用现成的管理面板和服务,如MobileProxy.space,帮助自动化常规操作。但在本指南中,您手动搭建一切,掌控每一个环节。

如需返回3proxy安装细节,请查看“步骤6:连接代理软件”部分。有关选择调制解调器网络访问模式的问题,请参阅“步骤5:raw-IP或桥接模式”。

常见问答

  1. 一个路由器可以连接多少个调制解调器?这取决于USB子系统的性能和电力。通常情况下,2–4个调制解调器没有问题,6–8个在有电的集线器和良好电源下可行。
  2. 如何判断哪个接口对应哪个调制解调器?逐个连接调制解调器,并检查dmesg,之后再通过System → Network Devices在LuCI中重命名接口,必要时可借助电缆标记。
  3. raw-IP一定需要启用吗?对于许多QMI调制解调器是必须的。如果连接建立但流量无法传送,请启用raw-IP。
  4. 如何确保每个代理端口始终使用同一调制解调器?在3proxy中指定每个块的external为wwanX,并避免在USB端口间进行调制解调器的动态重排。进行物理固定调制解调器。
  5. 可以使用除了3proxy以外的其他代理服务器吗?当然可以,如tinyproxy或mitmproxy。但3proxy轻巧且提供便于绑定external的功能。
  6. 如何实现IP的自动更换?没有绝对的保证,这取决于运营商。您可以通过计划表重启接口或调制解调器,有时外部IP会变化。所有行为均需遵循与运营商的协议。
  7. 如何检查稳定性?通过ping外部节点,定期通过每个代理发起curl请求,监控日志,以及不在线时触发报警。
  8. 如果闪存空间不足该如何处理?删除不必要的软件包,将日志移动到/tmp或外部存储,使用OpenWRT的精简版本。
  9. 可以使用IPv6吗?可以,如果运营商分配IPv6前缀。请配置相应的协议,并确保3proxy在需要时能够处理IPv6。
  10. 这适合与分析和解析服务集成吗?当然可以,只要遵循法律规范。例如,可以用于自己的网页和API。在工业负载下,注意运营商的政策和通道速度。

建议:在实际运行之前,进行长时间的测试:通过每个代理的请求连续运行2–4小时,并记录日志,随后分析错误和延迟。

总结

您已经完成了整个过程:准备设备,安装OpenWRT,配置移动调制解调器为QMI/MBIM/NCM模式,必要时启用raw-IP,部署3proxy,并确保每个代理端口通过其接口连接。您学会了通过curl和日志检查结果,解决常见问题,并了解如何将农场扩展到多个调制解调器,具备自动重连、监控与安全功能。现在,您可以将您的代理农场用于合法的任务自动化、测试和集成,也可以进一步扩展基础设施——添加新的调制解调器、优化路由和备份逻辑、设置调度器和监控系统。

如果您需要统一的管理面板和现成的扩展工具,请查看商业解决方案和服务,如MobileProxy.space。但现在,您已经拥有一个自主控制且充分理解每个环节的OpenWRT工作组装。祝您在使用和扩展中好运!