全部文章

把 iPhone 变成局域网代理中心:MonoProxy 实用指南

从选择可达的 iPhone 网络接口,到配置客户端、验证流量并保护局域网代理访问的一套实用流程。

MonoProxyiPhone局域网代理设置隐私
把 iPhone 变成局域网代理中心:MonoProxy 实用指南

测试环境里最好用的代理,很多时候并不在数据中心。它可能就是放在电脑、平板、游戏机或开发设备旁边的那台 iPhone。

MonoProxy 把 iPhone 变成一个局域网代理端点。附近设备通过当前网络直接连接到手机,连接不会先绕到 MonoWare 的远端中继。它适合临时测试,也保留了足够清楚的状态和控制,让人知道连接到底进行到了哪一步。

实际使用时,最稳妥的顺序是:先选对可达的网络接口,启动监听器,只配置一台客户端,确认真实流量已经经过代理,再逐步增加设备。

MonoProxy 做什么,也不做什么

MonoProxy 是面向可填写代理主机和端口的设备、系统和应用的正向代理。一个监听端点支持:

客户端设置适合场景说明
HTTP 代理普通 HTTP 请求转发前会移除代理专用头
HTTPS 代理通过 CONNECT 访问 HTTPSTLS 保持在客户端与目标站点之间
SOCKS4 / SOCKS4a较旧的客户端SOCKS4 协议本身没有密码认证
SOCKS5通用 TCP 客户端支持无认证或用户名密码认证
PAC 地址支持自动代理配置的系统PAC 文件会把客户端指向当前局域网端点

它不是 VPN,也不会改变 iPhone 上每个 App 的路由。它同样不会解密 HTTPS。客户端必须明确配置为使用代理,而且两台设备需要在当前网络中能够互相访问。

先选网络接口,再启动

iPhone 可能同时存在多个地址:Wi-Fi、蜂窝网络、个人热点、VPN 创建的接口,以及回环地址。另一台设备通常能够访问的,是与它处在同一个 Wi-Fi 或局域网里的地址。

在 MonoProxy 主界面:

  1. 打开网络接口选择器。
  2. 选择与客户端处于同一 Wi-Fi 或局域网的地址。
  3. 确认共享代理端口。
  4. 点击“启动”。

监听器就绪后,Hub 会把主机地址和端口一起显示出来。HTTP、HTTPS CONNECT 以及已启用的 SOCKS 协议共用这个端点。

Flow diagram Preparing diagram
View diagram source
flowchart LR
    A[运行 MonoProxy 的 iPhone] -->|同一 Wi-Fi 或局域网| B[Mac 或 PC]
    A -->|同一 Wi-Fi 或局域网| C[手机或平板]
    A -->|同一 Wi-Fi 或局域网| D[测试设备]
    B --> E[目标服务]
    C --> E
    D --> E

如果手机切换网络,原来选中的接口可能消失。这时应选择新的接口并重新启动监听器。昨天 Wi-Fi 上复制的地址,到了今天的网络并不一定还能访问。

先配置第一台客户端

点击二维码按钮打开“快速配置”。这个页面会同时显示服务器地址、端口、可用代理类型、二维码,以及针对所选客户端平台的设置步骤。

MonoProxy 快速配置页面,包含二维码和局域网端点
快速配置把地址、端口、协议选择和平台操作步骤放在同一处。

二维码分享的是配置数据,不会在另一台设备上偷偷修改系统代理设置。这个边界是有意保留的:客户端的使用者可以先检查端点,再决定是否应用。

常见的 Wi-Fi 代理设置步骤是:

  1. 让 iPhone 和客户端连接同一个网络。
  2. 在客户端打开当前网络的代理设置。
  3. 选择手动配置。
  4. 输入 MonoProxy 显示的主机和端口。
  5. 保存,然后打开网页或启动要测试的应用。

快速配置还可以生成明确的 HTTP、SOCKS4、SOCKS5、PAC 和 PAC URL 格式。能够携带凭据的格式默认隐藏用户名密码;显示或分享含密码的配置前会再次确认,敏感剪贴板内容也使用更短的过期时间。PAC 文件不会嵌入代理凭据。

MonoProxy 产品网站 还提供 macOS 和 Windows 的平台说明,系统设置入口不容易找到时可以直接对照。

根据客户端能力选协议

操作系统或应用提供了专门的 Web 代理输入框时,优先使用 HTTP/HTTPS 设置。大多数浏览器和很多开发工具都适合这种方式。HTTPS 通过 CONNECT 建立隧道,因此 MonoProxy 不需要安装根证书,只负责转发加密字节。

客户端提供 SOCKS 设置,或者工具需要通用 TCP 代理时,可以选择 SOCKS5。SOCKS5 还支持代理用户名密码协商。SOCKS4/4a 为旧软件保留,但启用认证后不应选择它,因为 SOCKS4 没有兼容的密码机制。

共享端口意味着 HTTP 和 SOCKS 不需要填写不同端口。MonoProxy 会读取连接开头的字节,把它交给正确的握手处理器。不过配置中仍然要选对代理类型,因为由客户端决定自己会发送哪一种握手。

按顺序确认三个状态

“服务已经启动”和“我的流量正在经过它”是两件事。MonoProxy 把它们分开显示:

  1. 监听器就绪:iPhone 已经成功打开选定的地址和端口。
  2. 发现客户端:另一台设备已经连到这个监听器。
  3. 流量已验证:确实有字节经过代理。

这个顺序会让排查快很多。监听器没有就绪,应检查网络接口和端口;一直没有客户端,应检查 Wi-Fi 隔离、客户端填写的地址端口,以及局域网可达性;客户端出现但流量仍为零,则应检查代理类型、认证和应用本身是否支持代理。

统计页面会显示运行时间、连接数量、上传和下载总量、流量趋势,以及峰值和平均速率。

MonoProxy 统计页面,显示连接数和流量趋势
连接数量和流量曲线可以证明客户端不只是碰到了一个开放端口,而是真的在传输数据。

需要更结构化的检查时,诊断中心会分别判断监听器、所选接口、客户端、流量和安全事件。它还会统计认证失败、限速、访问策略拒绝、连接容量拒绝、失败会话和超时。

增加设备之前,先补上安全边界

家庭或办公局域网并不会自动变成可信环境。准备让更多设备接入前,应根据网络情况选择控制:

  • 身份认证:为 HTTP、CONNECT 和 SOCKS5 设置代理用户名密码。
  • 仅允许私有客户端:拒绝私有或本地地址范围之外的来源。
  • 允许和阻止规则:支持 IPv4、IPv6 地址及 CIDR 网段。
  • 单客户端容量:限制一台设备同时占用的连接数量。

认证有用,但 Basic 代理凭据只是编码,不是加密,应该只在自己可控的网络中使用。启用认证时,也不要把 SOCKS4 当作安全选项;MonoProxy 会拒绝它,因为 SOCKS4 无法完成当前配置的密码交换。

先连接一台设备,确认成功后再添加下一台。这样访问规则写错时会马上暴露,不必同时排查几台设备。

用 PAC 做可重复的 Web 代理配置

客户端支持自动配置 URL,或者需要反复应用同一端点时,PAC 文件会更方便。MonoProxy 可以通过活动监听器提供 /proxy.pac,并为 PAC 地址显示二维码。

如果开始分享 PAC 时服务尚未运行,MonoProxy 会在选定的局域网接口上准备监听器,让另一台设备能够下载文件。客户端获取 URL 的过程中,监听器必须保持可达。凭据不会写入 PAC 正文,客户端需要时会自行提示输入。

PAC 是配置方式,不是自动发现魔法。另一台设备仍然必须能够连接 iPhone,网络切换也可能让 URL 中的地址失效。

一条更有效的排查路径

客户端无法连接时,按下面顺序检查,通常不需要猜:

  1. 确认两台设备位于同一个可互通网络。
  2. 确认 Hub 显示的是预期局域网地址和端口。
  3. 确认客户端选的是 HTTP、HTTPS 还是 SOCKS。
  4. 在连接列表或诊断中心查看是否发现客户端。
  5. 检查认证和访问策略的拒绝计数。
  6. 发起一个简单请求,观察是否出现流量。
  7. 最后再排查目标服务本身。

这个顺序可以避免把目标站点故障误认为本地配置错误。

使用结束后关闭监听器

MonoProxy 会明确显示自己的活动状态。测试、传输或临时配置结束后,从主 Hub 停止服务。手机进入另一个网络时,再次启动前应重新检查所选接口。

局域网代理的价值不只是“打开了一个端口”。真正有用的是:给附近设备一个端点,看见连接到达,确认字节在流动,并在工作结束时关闭这条路径。MonoProxy 把这套流程留在了 iPhone 上。

来自 MonoWare

MonoProxy 背后还有更多上下文。

打开产品网站,或继续阅读按 MonoProxy 筛选的笔记。

通讯

隐私与产品工程笔记,偶尔发送。