对自己的机器实施物理网络隔离 推理
对推理机器实施物理网络隔离,就是切断其所有网络连接(网线、Wi-Fi、蓝牙),并且只通过受控的物理介质导入模型和更新。出站防火墙是一层有用的防护,但不等于物理网络隔离:它只是软件配置。真正的薄弱环节是会连接外部的软件(Ollama Cloud、更新、下载)以及 U 盘。
在某些敏感场景中,仅说“本地”还不够:本地机器仍然联网,其软件也可能连接外部网络。本指南区分真正的物理隔离(air-gap)和防火墙隔离,列出 LLM 技术栈中默认会连接外部网络的组件及阻断这些连接的方法,介绍通过 U 盘传输模型并核对文件指纹的方法,还提供了您可以重复执行的网络隔离有效性测试。
#何时值得采用物理隔离,何时代价过高
是否采用物理隔离(air-gap),应根据风险分析决定,而不是原则上一律采用。适合采用物理隔离的情况包括:涉密数据或受高度工业机密保护的数据;合同或行业要求明确规定必须使用隔离网络;已实行隔离、且LLM必须融入其中的环境;以及专门处理极其敏感案卷或研究资料的工作站(例如律师或研究人员使用的工作站)。对于普通个人数据,包括健康或财务数据,相关法规要求采取与风险相称的措施,而不是完全隔离:在加密工作站上运行本地LLM,不使用云端账户,已能满足大多数需求。企业本地AI指南和隐私检查清单涵盖了这一中间层级的防护措施。
开始之前,请先问自己三个问题。谁负责传输,多久传输一次?这套技术栈要求更新哪些组件(Ollama、llama.cpp、界面、模型)?如果有一天某个更新的模型变得不可或缺,该怎么办?整个流程必须无需破例也能切实执行,因为破例一次就会变成惯例。如果您无法回答这三个问题,请先为每种用途各配置一台带有严格防火墙的离线工作站,只有当风险确实需要时,才提高隔离级别。
#物理隔离(air-gap)、近似物理隔离与防火墙:不要混淆
在工作场所部署本地 AI:GDPR、AI 法案、多用户架构、成本、供管理层参考的说明材料。
- 在线空间,终身可用
- PDF + 文件
- 30 天内退款
| 级别 | 这是什么 | 仍能做什么 |
|---|---|---|
| 使用时保持离线的机器 | 没有活动连接,但网卡仍然存在 | 因误操作或软件而重新联网;一切取决于是否严格遵守操作规范 |
| 严格防火墙(默认拒绝,包括出站流量) | 阻止出站流量的软件配置 | 一条“试试看”而添加的规则、一个系统漏洞、一个绕过限制的服务 |
| 物理隔离 | 未启用任何网络接口:无网线,Wi-Fi 和蓝牙在固件中关闭或已移除 | 通过可移动存储设备的泄漏;物理通道(超出本指南范围) |
本指南涵盖这三种方式:防火墙是所有处理敏感信息的工作站都应具备的最低防护层,物理断网隔离则是更高一级的防护。在 Mac 上,macOS 特有的设置见 Apple 芯片 Mac 优化指南;在 Windows 下,原则相同,但对发起外部连接的组件的控制不如精简 Linux 系统细致,因此本指南优先推荐 Linux。
#准备机器
- 最小系统
- 推理服务器采用不带图形界面的 Debian 或 Ubuntu Server。不安装浏览器,也不安装连接应用商店的软件包管理器。
- 自动更新服务
- 禁用更新定时器,例如 sudo systemctl disable --now apt-daily.timer apt-daily-upgrade.timer,以免在您不知情的情况下发起任何连接尝试。
- 账户
- 为LLM使用专门的账户,sudo权限仅授予管理员。
- 无线通信模块与接口
- 在 BIOS 或固件中禁用 Wi-Fi 和蓝牙;更好的是,机器根本不配备这些无线硬件。不接网线。
- 不使用双系统启动
- 同一机器上另有一个可联网的分区,会形成间接通道(交换文件、共享文件)。
- 时间
- 手动设置系统时间,或通过内部时间源校准:与公共时间服务器同步会产生出站流量。
- 加密硬盘
- 隔离的计算机也可能被盗或被扣押:请加密磁盘(参见专题指南)。
#LLM 软件栈中默认会向外部发起网络请求的软件
对于物理隔离的机器,这些调用会失败,但不会造成损害;对于仅靠防火墙隔离或尚未断网的机器,它们才是真正的风险。典型的本地技术栈包含多个组件,如果不加以阻止,它们就会连接互联网。以下是官方文档说明可以关闭的组件。
| 组件 | 它可能执行的操作 | 文档中说明的设置 |
|---|---|---|
| Ollama | 托管模型与网页搜索(Ollama 云) | OLLAMA_NO_CLOUD=1 或在 ~/.ollama/server.json 中设置 disable_ollama_cloud;日志将显示 « Ollama cloud disabled: true » |
| Ollama (网络暴露) | 本地HTTP服务器 | 默认监听 127.0.0.1;只有用于隔离的内部网络时,才可修改 OLLAMA_HOST |
| Open WebUI | 更新检查、从 Hugging Face 下载嵌入模型 | OFFLINE_MODE=true(同时禁用 ENABLE_VERSION_UPDATE_CHECK);请事先下载嵌入模型 |
| Hugging Face 库(transformers、sentence-transformers) | 调用 Hub 以验证或下载 | HF_HUB_OFFLINE=1:不向 Hub 发起任何 HTTP 请求,仅使用缓存中的文件 |
| 向量数据库 | 可能的遥测数据 | Weaviate:DISABLE_TELEMETRY=true;请检查每个组件的对应选项 |
Ollama 的文档明确指出,在本地使用 Ollama 时,软件开发方看不到请求或数据;禁用云端功能后,将无法访问托管模型和网页搜索,而这正是要达到的目的。请注意 Open WebUI:其文档警告,如果在启用 OFFLINE_MODE 之前没有下载嵌入模型,RAG、网页搜索和文档分析功能可能无法运行。请在断开机器的网络连接之前,下载好它所需的一切。
#严格的防火墙策略:入站和出站流量均默认拒绝
防火墙是物理断开连接之后的第二道防线,也是设备仍连接内部网络时唯一的防护措施。原则是默认拒绝双向流量,仅明确允许少量通往隔离内部网络的连接。请先编写允许规则,再启用防火墙,否则会切断您自己的 SSH 会话。
本地接口(环回)流量对Ollama和Open WebUI的正常运行至关重要,二者通过127.0.0.1通信;请使用ufw status verbose检查您的配置是否阻止了该流量。如果设备位于内部局域网中,请在路由器侧增加防护:确保该VLAN无通往互联网的路由。
#检查 Ollama 的监听设置
#通过 U 盘传输模型和更新
一台与外界隔离的机器需要接收模型(几 GB 到几十 GB)、更新(Ollama、llama.cpp、Open WebUI),有时还会接收文档。关键在于 U 盘:它是唯一的入口,因此也是恶意软件进入的唯一途径。始终使用同一个专用 U 盘,定期格式化,绝不要使用曾用于其他用途的 U 盘。
- 01在联网的电脑上下载从 Hugging Face 下载模型的 GGUF 文件,或从官方网站获取更新用的二进制文件。如果来源页面提供了 SHA-256 校验值,请将其记录下来。
- 02计算文件哈希值并扫描对文件运行 sha256sum,然后在这台中转机器上使用杀毒软件(例如 ClamAV)扫描文件;这台机器并不是隔离机器。
- 03复制到U盘复制文件并复制一个包含其指纹的文本文件。
- 04使用前在隔离机器上验证在隔离设备上重新计算哈希值:必须与原始值一致。若存在差异,说明文件被修改或损坏:请勿使用。
- 05导入到 Ollama创建一个 Modelfile,其中包含 FROM /chemin/vers/modele.gguf,然后执行 ollama create nom-du-modele -f Modelfile。Ollama 不会在导入时对 GGUF 文件进行量化:文件必须事先采用所需的量化方式。
替代方法是将连接设备上的模型目录(包括blobs和manifests)完整复制到隔离设备上。该方法可行,但模型目录位置因安装环境而异:Ollama的常见问题解答中指出,在macOS上为~/.ollama/models,Linux标准安装器下为/usr/share/ollama/.ollama/models,Windows下为C:\Users\%username%\.ollama\models。通过单独的GGUF文件传输更易于验证,因为只需比对单一哈希值。GGUF导入指南详细说明了Modelfile的使用。
#加固 USB 端口安全
U 盘可以伪装成键盘或其他外设。在 Linux 上,USBGuard 可以用一句话概括为 USB 设备白名单工具:它规定允许哪些类型的设备接入,以及这些设备可以如何与系统交互。还应禁用存储介质的自动挂载,确保插入时不会执行任何内容。在高度敏感的场景中,可以用数据二极管(一种只允许数据单向传输的设备)替代 U 盘,但部署起来更复杂。
#测试隔离是否严密
一次测试只能证明观测期间的网络隔离有效:每次更新后都应重新测试,并在整个工作会话期间持续抓包。最低限度的测试流程应涵盖正常运行、无路由、无名称解析以及实际网络流量。
- 离线运行
- 拔掉电缆并关闭所有无线通信功能,然后运行完整流程(模型、RAG、界面)。所有功能都应正常运行;否则,就说明某个组件依赖互联网。
- 无路由
- ping -c 1 8.8.8.8 命令应失败(提示「Network is unreachable」或类似信息)
- 无 DNS
- host exemple.org 应失败;请检查 /etc/resolv.conf:无外部服务器。
- 连接已建立
- sudo ss -tunp state established : aucune connexion vers une adresse hors du réseau interne.
- 真实流量
- 使用tcpdump对所有接口抓包,并排除内部网络流量;在整个使用会话期间,抓包结果应始终为空。
#定期审计
| 频率 | 控制 | 目标 |
|---|---|---|
| 每月 | ufw status verbose 和规则列表;ss -tlnp | 识别添加的「用于测试」规则 |
| 每次传输 | 密钥前后指纹;病毒扫描分析 | 检测已修改的文件 |
| 每次组件更新时 | 重新运行网络隔离测试,并复查离线相关变量 | 新组件可能会增加一次对外网络调用 |
| 每半年或每年一次 | 使用已验证的系统镜像进行全新安装;重新审视威胁 | 清除长期积累的安全入侵影响 |
#关于 LLM 机器物理隔离(air-gap)的常见问题
仅靠出站防火墙就能称为物理隔离(air-gap)吗?+
如何在无互联网的机器上更新 Ollama?+
如何将模型传输到隔离的设备上?+
Ollama会将我的请求发送到外部吗?+
U 盘是否是安全防护中的薄弱环节?+
已隔离的机器需要对磁盘进行加密吗?+
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。