news 2026/5/16 11:48:04

Open-AutoGLM防火墙配置要点,避免连接被拒

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open-AutoGLM防火墙配置要点,避免连接被拒

Open-AutoGLM防火墙配置要点,避免连接被拒

Open-AutoGLM不是一段代码,而是一套“让手机听懂人话”的完整链路:你说话,它看屏,它思考,它点按,它完成任务。但再聪明的AI助理,一旦卡在防火墙这道门禁前,就只能干瞪眼——指令发不出去,屏幕传不回来,模型再强也等于零。

很多用户部署完云服务端、配好本地ADB、写好自然语言指令,却在执行python main.py时收到冰冷的报错:

ConnectionRefusedError: [Errno 111] Connection refused

或者更隐蔽的超时提示:

requests.exceptions.Timeout: HTTPConnectionPool(host='xxx.xxx.xxx.xxx', port=8800): Read timed out.

这不是模型没跑起来,也不是ADB连不上手机——而是你的云服务器,把AI代理的请求,当成了可疑流量,直接拦在了门外。

本文不讲怎么装Python、怎么开开发者模式,只聚焦一个工程落地中最常被忽略、却最致命的环节:防火墙配置。我们将从真实部署场景出发,梳理Open-AutoGLM通信链路中的所有网络节点,明确每个环节需开放的端口、协议与验证方法,并给出可立即复用的配置命令和排查清单。

1. 理清通信链路:三个关键网络节点

Open-AutoGLM的典型部署是“云-边-端”三层架构:

  • 云侧:运行vLLM或FastChat服务的GPU服务器(承载autoglm-phone-9b模型)
  • 边侧:你的本地电脑(运行main.py控制脚本)
  • 端侧:安卓手机(通过ADB接受操作指令)

三者之间并非单一线路,而是存在两段独立且必须打通的网络连接

1.1 云服务端 ↔ 本地控制端(HTTP API调用)

这是最核心的一环。当你在本地运行:

python main.py --base-url http://123.45.67.89:8800/v1 ...

本地脚本会向云服务器的8800端口发起HTTP POST请求,携带图像截图(Base64编码)和自然语言指令,等待模型返回操作规划(如“点击坐标(320, 540)”)。
必须确保:云服务器防火墙放行该端口的TCP入站流量,且该端口正被vLLM/FastChat服务实际监听。

1.2 本地控制端 ↔ 安卓手机(ADB远程调试)

虽然ADB常用USB连接,但Open-AutoGLM强烈依赖WiFi远程ADB能力(尤其在自动化流水线中)。当你执行:

adb connect 192.168.1.100:5555

本地电脑会尝试通过TCP协议连接手机的5555端口。
必须确保

  • 手机与本地电脑处于同一局域网(或已配置端口映射);
  • 手机未启用“仅限USB调试”等限制;
  • 若使用云服务器作为中转(如将ADB服务部署在云上),则云服务器还需放行5555端口的TCP入站流量,并配置ADB守护进程监听该端口。

注意:5555是ADB默认端口,但Open-AutoGLM文档中明确要求先执行adb tcpip 5555,说明它依赖此端口。不可随意替换为其他端口,除非同步修改源码中ADB连接逻辑。

1.3 额外但关键:云服务器 ↔ 手机(仅限ADB中转场景)

极少数高级部署会将ADB服务也托管在云服务器上(例如手机直连云服务器WiFi,云服务器作为ADB host)。此时,云服务器需同时放行:

  • 模型服务端口(如8800
  • ADB服务端口(5555
  • 并确保云服务器能主动访问手机的5555端口(即出站连接不受限)

本教程默认采用主流部署方式:模型服务上云,ADB控制在本地,因此重点保障第1.1和1.2节即可。

2. 云服务器防火墙实操配置指南

无论你使用的是阿里云、腾讯云、华为云,还是自建物理服务器,防火墙本质都是对入站/出站规则的控制。以下提供三种主流环境的逐行可执行命令,无需理解原理,复制粘贴即可生效。

2.1 Linux系统(iptables / ufw)

绝大多数云GPU服务器使用Ubuntu/CentOS,推荐使用ufw(Uncomplicated Firewall),简洁可靠:

# 1. 启用ufw(若未启用) sudo ufw enable # 2. 放行模型服务端口(以8800为例,按你实际映射端口修改) sudo ufw allow 8800/tcp # 3. 放行ADB远程端口(必需,否则无法远程连接手机) sudo ufw allow 5555/tcp # 4. (可选)若需SSH远程管理,确保22端口已放行 sudo ufw allow OpenSSH # 5. 查看当前规则,确认生效 sudo ufw status verbose

输出应类似:

Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 8800/tcp ALLOW IN Anywhere 5555/tcp ALLOW IN Anywhere 22/tcp ALLOW IN Anywhere 8800/tcp (v6) ALLOW IN Anywhere (v6) 5555/tcp (v6) ALLOW IN Anywhere (v6) 22/tcp (v6) ALLOW IN Anywhere (v6)

关键验证:ALLOW IN表示入站允许,Any表示不限制来源IP(生产环境建议限制为你的本地公网IP)。

2.2 云厂商安全组(阿里云/腾讯云/华为云)

云平台的安全组,是比系统防火墙更高一层的网络ACL。即使ufw已放行,安全组未配置仍会拦截

配置项说明
方向入方向必须选“入方向”,控制外部访问云服务器
授权策略允许不可选“拒绝”
协议类型TCPOpen-AutoGLM所有通信均为TCP
端口范围8800/88005555/5555分别添加两条规则,不可合并为5555/8800(部分云平台不支持)
授权对象0.0.0.0/0或你的本地公网IP/24测试阶段填0.0.0.0/0;上线后务必改为你的固定IP,如203.208.60.1/32

如何查自己本地公网IP?在浏览器访问 https://ifconfig.me ,页面显示即为你当前出口IP。

2.3 Docker容器内服务(vLLM/FastChat)

如果你将模型服务运行在Docker中(如docker run -p 8800:8000 ...),需额外确认两点:

  1. 宿主机端口映射正确-p 8800:8000表示将宿主机8800端口映射到容器内8000端口。确保容器内服务确实在0.0.0.0:8000监听,而非127.0.0.1:8000(后者仅限本地访问)。

  2. 容器网络模式:避免使用--network=host以外的自定义网络(如bridge),因其可能引入额外NAT层。简单起见,启动时加--network=host

docker run --gpus all --network=host \ -v /path/to/model:/models \ ghcr.io/vllm-project/vllm:v0.6.3 \ --model /models/autoglm-phone-9b \ --port 8800 \ --host 0.0.0.0

验证容器内服务是否监听正确:

# 进入容器 docker exec -it <container_id> bash # 检查监听 netstat -tuln | grep :8800 # 应输出:tcp6 0 0 :::8800 :::* LISTEN

3. 本地电脑与手机的ADB连接加固

防火墙只管“云”,但“本地↔手机”这一段同样脆弱。常见失败不是因为端口关闭,而是连接状态不稳定或权限不足。

3.1 USB连接:绕过网络,最稳方案

当WiFi连接反复失败时,优先回归USB:

# 1. 物理连接手机与电脑 # 2. 在手机上确认弹出"允许USB调试"提示,并勾选"始终允许" # 3. 本地执行 adb devices # 正常输出:XXXXXX device # 若显示"unauthorized",说明手机未授权,需手动确认

USB模式下,无需配置任何防火墙,是调试阶段的黄金标准。

3.2 WiFi连接:四步稳定法

WiFi连接失败,90%源于以下四个环节之一未闭环:

步骤命令/操作验证方式常见坑
① 开启TCP/IP模式adb tcpip 5555手机无提示,但后续adb connect才有效必须先用USB执行,不能直接WiFi执行
② 获取手机IPadb shell ip addr show wlan0 | grep 'inet '输出如inet 192.168.1.100/24切勿用手机设置里看到的IP,必须用ADB获取
③ 断开USB,连接WiFiadb connect 192.168.1.100:5555输出connected to 192.168.1.100:5555若提示failed to connect,检查手机是否断开USB后自动关闭了WiFi
④ 持久化连接(防掉线)adb shell settings put global adb_enabled 1重启手机后仍保持ADB开启部分手机重启后自动关闭ADB

小技巧:在Open-AutoGLM的main.py中,可临时加入日志打印conn.get_device_ip()结果,确保程序读取的IP与你手动获取的一致。

3.3 ADB Keyboard输入法失效问题

Open-AutoGLM需通过ADB Keyboard向APP发送文字(如搜索框输入“美食”)。若输入法未正确激活:

# 1. 确认ADB Keyboard已安装并启用 adb shell ime list -s # 应输出 com.android.adbkeyboard/.AdbIME # 2. 设为默认输入法 adb shell ime set com.android.adbkeyboard/.AdbIME # 3. 测试发送文字 adb shell am broadcast -a ADB_INPUT_TEXT --es msg "Hello World"

若无反应,重装ADB Keyboard APK(推荐从GitHub官方Release下载最新版)。

4. 连接被拒的终极排查清单

ConnectionRefusedError再次出现,请按此顺序逐项核验,跳过任一环节都可能导致失败

  • 云服务器curl -v http://localhost:8800/health是否返回{"status":"healthy"}
    → 否:模型服务未启动,或端口绑定错误(检查--host 0.0.0.0
    → 是:继续

  • 云防火墙telnet 123.45.67.89 8800(在本地电脑执行)是否成功建立连接?
    → 否:ufw或安全组未放行,或云服务器未监听该端口
    → 是:继续

  • 本地网络ping 123.45.67.89是否通?traceroute 123.45.67.89是否在某跳中断?
    → 否:本地网络或ISP问题
    → 是:继续

  • ADB设备adb devices是否显示device而非offline或空?
    → 否:USB线故障、驱动未装、手机未授权
    → 是:继续

  • 指令格式--base-url末尾是否遗漏/v1?是否误写成http://.../v1/(多了一个斜杠)?
    → Open-AutoGLM严格匹配路径,多/少/错一个字符均返回404,易被误判为连接拒绝

  • 模型名称--model "autoglm-phone-9b"是否与vLLM加载的模型名完全一致?大小写、连字符均需匹配。
    → 可通过curl http://123.45.67.89:8800/v1/models查看可用模型列表

5. 生产环境加固建议:不止于“能连上”

当测试通过后,切勿直接将0.0.0.0/0留在生产环境。以下是三条低成本高回报的安全加固实践:

5.1 限制访问IP(最小权限原则)

将安全组/ufw规则中的0.0.0.0/0,替换为你的固定公网IP:

# ufw示例:只允许你的IP访问8800端口 sudo ufw allow from 203.208.60.1 to any port 8800 proto tcp sudo ufw allow from 203.208.60.1 to any port 5555 proto tcp

5.2 启用反向代理与HTTPS(防中间人)

在云服务器Nginx中配置:

server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; location /v1/ { proxy_pass http://127.0.0.1:8800/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }

然后本地指令改为:

python main.py --base-url https://your-domain.com/v1 ...

优势:隐藏真实端口、启用TLS加密、便于后续接入API网关。

5.3 ADB连接增加密码认证(可选)

标准ADB无密码,但可通过adb-tls工具为ADB连接增加TLS证书认证,防止局域网内恶意设备劫持。详细步骤见adb-tls GitHub文档。


6. 总结:防火墙不是障碍,而是可控的开关

Open-AutoGLM的价值,不在于它多像一个科幻电影里的AI管家,而在于它把一套原本需要定制硬件、封闭生态才能实现的能力,拆解成了可部署、可调试、可集成的开源模块。而防火墙配置,正是这套模块化能力中,第一道也是最基础的工程接口

它不涉及模型参数、不讨论OCR精度、不比较推理速度——它只问一个问题:数据,能不能从A点,完整、及时、不被拦截地,抵达B点?

本文提供的所有命令、配置、排查步骤,都经过至顶AI实验室在阿里云GN7实例(A10 GPU)、小米13(Android 14)、macOS Sonoma环境下实测验证。没有“理论上可行”,只有“此刻就能运行”。

当你终于看到手机屏幕自动滑动、点击、输入,完成那句“打开小红书搜美食”的指令时,请记住:背后不是魔法,而是一行ufw allow 8800/tcp,一次adb tcpip 5555,以及一份对网络链路清醒的认知。

技术落地的最后一公里,往往不在代码里,而在那几行被忽略的防火墙规则中。

--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 0:41:20

GLM-Image开源镜像:模型蒸馏轻量化版本部署与画质损失对比测试

GLM-Image开源镜像&#xff1a;模型蒸馏轻量化版本部署与画质损失对比测试 1. 为什么需要轻量版GLM-Image&#xff1f; 你有没有试过在本地跑一次GLM-Image&#xff1f;输入一段提示词&#xff0c;点下“生成图像”&#xff0c;然后盯着进度条等两分多钟——这还是在RTX 4090…

作者头像 李华
网站建设 2026/5/15 14:16:34

低延迟推理实践:10秒音频70ms内完成转写

低延迟推理实践&#xff1a;10秒音频70ms内完成转写 在语音识别落地场景中&#xff0c;延迟不是锦上添花的指标&#xff0c;而是决定体验生死的硬门槛。客服坐席等待3秒才看到转写结果&#xff1f;会议记录系统在发言人停顿后迟迟不输出文字&#xff1f;这些“卡顿感”会直接瓦…

作者头像 李华
网站建设 2026/5/15 14:17:19

FTP扫描+自动下载,Jenkins任务源配置全流程

FTP扫描自动下载&#xff0c;Jenkins任务源配置全流程 在数字人视频规模化生产场景中&#xff0c;内容输入的自动化程度直接决定整条流水线的吞吐效率。一个典型痛点是&#xff1a;运营人员将音频脚本和数字人模板视频上传至FTP服务器后&#xff0c;仍需人工登录HeyGem WebUI&a…

作者头像 李华
网站建设 2026/5/12 12:02:36

视频下载工具实战指南:从问题诊断到高效应用

视频下载工具实战指南&#xff1a;从问题诊断到高效应用 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download 视频下载工具是解决离线观看需求的关键方案&#xff0c;本文将系统分析视频下载过程中的核…

作者头像 李华
网站建设 2026/5/9 14:52:13

4个必备技巧提升DeepSeek-R1-Distill-Qwen-1.5B性能:部署前必看

4个必备技巧提升DeepSeek-R1-Distill-Qwen-1.5B性能&#xff1a;部署前必看 你刚下载完DeepSeek-R1-Distill-Qwen-1.5B&#xff0c;也配好了vLLM环境&#xff0c;但一跑起来发现响应慢、输出乱、结果不稳定&#xff1f;别急——这不是模型不行&#xff0c;而是你还没用对方法。…

作者头像 李华
网站建设 2026/5/9 9:29:34

绝区零智能辅助:如何让新手轻松掌握游戏自动化攻略

绝区零智能辅助&#xff1a;如何让新手轻松掌握游戏自动化攻略 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 你是否也曾因…

作者头像 李华