连接设备
IronFlock 支持多种方式连接设备,具体取决于硬件和操作系统。手头没有硬件?您可以在几分钟内在笔记本电脑上模拟一台设备。
前提条件
连接设备之前,请确保您已具备:
- 在 IronFlock 上创建了一个项目
- 在该项目中创建了一个设备条目(在项目 Settings -> Devices 面板中点击 NEW DEVICE。)
- 已下载设备配置文件(
.flock)
设备位于受限的企业网络中? 请在安装之前规划好网络设置——这是新安装的设备始终处于离线状态最常见的原因:
- 身份感知防火墙或代理: 放行设备的规则必须绑定到设备本身,而绝不能绑定到已登录的用户——否则一旦该用户的会话失效,设备就会从网络中掉线。参见身份感知防火墙与代理。
- 企业 HTTP 代理: 代理程序和 Docker 都必须显式配置该代理——参见位于企业代理之后 → 边缘设备。
- 连接到本地 Appliance: 设备必须能直接访问 Appliance 的服务端口——或者,当 Appliance 运行使用您的企业证书的 HTTPS 时,只需访问端口
443,且设备须信任您的企业根 CA。参见 Appliance 指南中的设备连接。- 时钟偏移: 企业防火墙通常会拦截全新安装的操作系统自带的公共时间服务器,设备时钟会因此悄悄偏走——请配置您的内部 NTP 服务器。参见时间同步 (NTP)。
身份感知防火墙与代理
每台边缘设备都以无人值守的系统服务形式运行 IronFlock 代理程序。它随系统启动,全天候保持连接,并持续安装应用、拉取镜像和自我更新——无论是否有人登录该设备。无论您的平台运行在哪里——IronFlock 云、您的私有云,还是本地 Appliance——情况都是如此。
OT 网络越来越多地由身份感知防火墙和代理来保护,这类产品按目录身份而非网络地址授予访问权限。如果放行某台边缘设备的规则绑定到在该设备上登录的用户,那么一旦该用户的会话失效,设备就会失去网络访问:
- 已经建立的连接会继续运行,因此设备仍显示为在线。
- 每个新连接都会被静默丢弃——应用安装、镜像拉取、代理程序更新和重新连接都会失败。
- 在代理程序或设备下一次重启之后,设备将完全无法重新连接,并一直处于离线状态,直到有人再次登录该设备或规则被修改。
请让您的网络团队将规则绑定到设备,而绝不能绑定到某个人:
| 设备 | 规则中应使用的身份 |
|---|---|
| 已加入您的域的 Windows 设备 | 其计算机账户——即计算机对象,或诸如 IronFlock Edge Devices 之类的组 |
| Linux 或 FlockOS 设备,或未加入域的 Windows 设备 | 带有预留 IP 地址的命名主机对象,或由您的网络准入控制(802.1X 或 MAC 认证)分配的身份 |
在常见产品中的对应做法:
- Check Point Identity Awareness: 在 Access Role 中选择机器(计算机对象或组),而不是用户。机器身份依靠计算机自身的域活动来刷新;如果在您的网关上机器身份可能失效,请改用网络对象。
- Palo Alto Networks User-ID: 计算机账户不会产生 IP 到用户的映射,因此请使用地址对象、标签(tag)或 Device-ID。
- Fortinet FSSO 及类似的基于目录的防火墙: 为该设备使用地址对象,或使用您的网络准入控制分配的动态地址。
- Zscaler、Prisma Access 及其他云安全网关: 将设备网络注册为 IoT 或服务器位置(受信任的来源),使设备流量按位置而非按用户来识别。
这并不是对您身份策略的豁免——而是按设备实际具有的身份来识别它。如果您运行本地 Appliance,同样的要求也适用于 Appliance 主机:参见 IronFlock 主机的网络身份。
如何识别这类故障。 如果设备保持在线,而应用安装、镜像拉取或代理程序更新却因超时而失败——同时 ping 仍然成功——那么问题出在已过期的身份规则上,而不在设备本身。在设备重新能够成功建立新连接之前,请不要重启代理程序或设备:仍然保持打开的那个会话是当前唯一可用的连接,并且在此期间,正是它让设备仍可被远程管理。
先测试:在笔记本电脑上模拟设备
探索 IronFlock 无需实体硬件。FlockFlasher 应用可以直接在您的笔记本电脑上运行 IronFlock 代理程序,让您的笔记本电脑在项目中扮演一台真实设备——非常适合在部署到实际硬件之前先测试应用和仪表板。
- 安装 Docker Desktop(Linux 上安装 Docker Engine),并确保其正在运行。
- 为您的操作系统下载并安装 FlockFlasher 应用。
- 双击已下载的设备
.flock文件——它会在 FlockFlasher 中打开,设备随即出现在列表中。(也可以打开 FlockFlasher,通过 + 按钮添加该文件。) - 在设备条目上点击 Test Device(▶,测试设备)。FlockFlasher 首次使用时会自动下载 IronFlock 代理程序,并使用您的设备配置启动它。
现在,您的笔记本电脑就会在 IronFlock 项目中充当这台设备:它会显示为在线状态,您可以像在真实设备上一样在其上安装并运行应用。这些应用以 Docker 容器的形式在您的笔记本电脑上运行。
测试完成后,请在 FlockFlasher 中停止测试。之后您仍可以使用同一个 .flock 文件来配置真实设备——只需确保同一份设备配置在同一时间只在一台机器上运行。
方法一:烧录 SD 卡
最适合从 SD 卡启动的 Raspberry Pi 和其他 ARM 设备。
- 为您的操作系统下载 FlockFlasher 应用。
- 将 SD 卡(最少 16 GB)插入电脑。
- 打开 FlockFlasher,点击 + 按钮加载
.flock文件。 - 选择 SD 卡驱动器(FlockFlasher 会自动检测外部驱动器)。
- 为您的设备选择正确的镜像(Raspberry Pi 3/4、Zero 等)。
- 可选配置 WiFi,以便设备在目标位置可以联网。
- 点击 Flash,等待写入、验证和配置完成。
- 将 SD 卡插入设备并开机。
设备应在 20 分钟内上线。
警告:烧录过程会擦除所选驱动器上的所有数据。FlockFlasher 默认隐藏内部驱动器,但请务必仔细核对您的选择。
方法二:工业 PC 的 USB 安装器
适用于支持 EFI 启动的 AMD64 设备(例如 Siemens SIMATIC Box IPC)。
- 插入 USB 存储器(最少 16 GB)并打开 FlockFlasher。
- 加载
.flock文件并选择 USB 驱动器。 - 选择 Industrial PC x86_64 (EFI) 镜像。
- 点击 Flash 并等待完成。
- 如有必要,在设备的 BIOS 中更改启动顺序以从 USB 启动。
- 插入 USB 存储器并启动设备。
设备应在 60 分钟内上线。
方法三:自定义安装
适用于保留现有 Linux 操作系统的设备。非常适合 NVIDIA Jetson 和自定义硬件。
注意:这种手动安装方式面向工业 PC、网关和嵌入式设备等真实生产硬件——不适用于笔记本电脑。如果您只是想在笔记本电脑上试用 IronFlock,请改为按照先测试:在笔记本电脑上模拟设备进行操作——无需手动安装代理程序。
Linux / Unix 设备
- 通过 SSH 连接到设备。
- 将
.flock文件从电脑复制到设备:scp mydevice.flock user@device-ip:/home/user/ - 下载并运行安装程序:
curl -fsSL https://instance-registry.ironflock.com/dl/device-init/install.sh | sudo bash -s -- -c mydevice.flock在 IronFlock Appliance 上? 请使用 新建设备 对话框中显示的命令——它们指向 Appliance 而不是
instance-registry.ironflock.com。
install.sh 会按设备的 CPU 下载设置工具 ironflock-init,用脚本内置的 IronFlock 密钥校验其 OpenPGP 签名,然后带着您传入的参数运行它。不带参数时,它只会把 ./ironflock-init 下载到当前目录;之后请用 sudo ./ironflock-init -c mydevice.flock 启动。
ironflock-init 会安装 Docker(如果缺少)和设备代理程序,并设置:
- 项目所有者的 SSH 用户——仅允许用密钥(设备密钥)登录,
sudo无需密码; - 来自
.flock文件的 WiFi 配置,通过 NetworkManager 实现; - 登录横幅。
它不会改动无人值守的安全升级,除非您传入 --reboot,否则也不会重启设备。它所做的一切更改都记录在 /opt/ironflock/device-init/installed.json 中,因此 remove 命令可以精确撤销这些更改:
curl -fsSL https://instance-registry.ironflock.com/dl/device-init/install.sh | sudo bash -s -- removeironflock-init 的其他选项:
-a— 采用默认值,不再询问--disable-suspend(-s)— 阻止设备进入休眠--reboot— 设置完成后重启设备--update-config(-u)— 替换已安装设备的.flock文件--http-proxy、--https-proxy、--no-proxy— 让设置过程经由代理进行--download-base— 从其他位置(例如 IronFlock Appliance)下载
在设备上,代理程序位于 /opt/ironflock/device-agent,作为 systemd 服务 ironflock-device-agent 运行。可用 systemctl status ironflock-device-agent 查看状态;日志可通过 journalctl -u ironflock-device-agent 以及 /var/log/ironflock/device-agent.log 查看。配置文件为 /opt/ironflock/device-agent/device-config.flock(仅 root 可读,/boot 中不再有副本),Docker 的数据存放在 /opt/ironflock/device-agent/docker-apps,应用的数据仍在 /apps。
代理程序会自行更新,不再有单独的更新管理器。更新经过签名并会被校验,失败的更新会自动回滚。更新只会在代理程序启动时,或用户在 Studio 中发起更新时应用。
2026 年 10 月之前安装的设备使用的是
/opt/reagent和服务reagent.service。这类设备一旦运行代理程序 1.3.x,就会自行迁移到上述布局(Docker 和应用会重启一次),/opt/reagent则保留为链接。
位于企业代理之后? 也要为安装程序的下载提供代理,并在第 3 步的参数中加入
--http-proxy/--https-proxy,让ironflock-init为您配置 Docker 引擎。完整命令和企业 CA 的步骤请参见 位于企业代理之后。
可选:先验证安装程序
如果想在脚本以 root 身份运行之前先检查它,请连同签名一起下载,并用 IronFlock 引导密钥验证:
curl -fsSLO https://instance-registry.ironflock.com/dl/device-init/install.sh
curl -fsSLO https://instance-registry.ironflock.com/dl/device-init/install.sh.asc
curl -fsSL https://instance-registry.ironflock.com/dl/device-init/ironflock-bootstrap.asc | gpg --import
gpg --verify install.sh.asc install.shgpg 必须报告这是由 IronFlock Bootstrap <[email protected]> 签出的有效签名,指纹为 F6C9 4D96 CE31 5377 ACA7 C8EA 4990 5433 7321 2788。然后运行验证过的脚本:
sudo bash install.sh -c mydevice.flockWindows 设备
- 在设备上安装 Docker Desktop,并在 Docker Desktop 设置中启用 Start Docker Desktop when you sign in。对于无人值守的设备,还应配置 Windows 自动登录,以便重启后无需任何人登录即可使用 Docker。
- 下载 device-agent.exe。
- 将
.flock文件复制到设备。 - 在提升权限(管理员)的命令提示符中,将代理程序安装为 Windows 服务并启动:
服务
device-agent.exe service install -config path\to\config.flockironflock-device-agent会立即启动,此后随系统一同启动,出现故障时自动重启,并使代理程序保持最新。如需安装但不启动,请添加-noStart;可随时使用device-agent.exe service status查看状态。
在设备上,代理程序位于 %ProgramData%\IronFlock\DeviceAgent——其中包括 device-agent.exe、配置文件 device.flock、日志 device-agent.log,以及位于 apps\ 下的应用数据。更新经过签名并会被校验,更新失败时会自动回滚;更新仅在代理程序启动时,或用户在 Studio 中启动更新时才会应用。
在代理程序 1.4.0 之前安装的 Windows 设备使用的是
%ProgramData%\IronFlock\Reagent和服务reagent。代理程序 1.4.0 会将这类设备迁移到上述布局——代理程序及其应用会重启一次。
位于企业代理之后? 在
service install命令中添加-proxy http://proxy.example.com:3128,并在 Settings → Resources → Proxies 中配置 Docker Desktop 的代理。详情及企业 CA 配置步骤请参阅 位于企业代理之后。
已加入您的域的 Windows 设备? 代理程序服务以 LocalSystem 身份运行,与是否有人登录无关,因此绑定到已登录用户的防火墙规则覆盖不到它。请让规则绑定到设备的计算机账户——参见身份感知防火墙与代理。
时间同步 (NTP)
设备代理程序需要准确的时钟。与平台的 TLS 握手、授权拉取镜像的令牌,以及设备发布的每一个数据点的时间戳,都依赖它。时钟偏差超过 15 分钟的设备还会被文件存储以 CLOCK_SKEW 拒绝。
在企业网络中,这是一个需要动手完成的配置步骤,而不是理所当然的前提:出站 NTP 所用的 UDP 123 端口常被拦截,操作系统自带的公共时间服务器因此无法访问,时钟会在没有任何可见错误的情况下偏走。请向 IT 部门索取内部时间服务器并在设备上配置,或请他们为设备网络放行出站 UDP 123。
Linux
使用 systemd-timesyncd(Debian 和 Ubuntu 的默认方式):
sudo mkdir -p /etc/systemd/timesyncd.conf.d
sudo tee /etc/systemd/timesyncd.conf.d/corporate.conf > /dev/null <<'EOF'
[Time]
NTP=ntp.your-company.com
EOF
sudo systemctl restart systemd-timesyncd
timedatectl status使用 chrony:
echo "server ntp.your-company.com iburst" | sudo tee -a /etc/chrony/chrony.conf
sudo systemctl restart chrony
chronyc sourcestimedatectl status 必须显示 System clock synchronized: yes。
Windows
在以管理员身份打开的命令提示符中:
w32tm /config /manualpeerlist:"ntp.your-company.com" /syncfromflags:manual /update
w32tm /resync
w32tm /query /status使用现成 IronFlock 镜像烧录的设备(方法一和方法二)默认与公共时间服务器同步。在拦截这些服务器的网络中,请为设备子网放行出站 UDP
123,或在首次启动后通过 SSH 按上面 Linux 的方式配置内部时间服务器。
验证连接
连接后,在项目中检查设备状态:
- 绿色指示器 — 设备在线,正在与 IronFlock 通信。
- 红色指示器 — 设备离线。请检查网络连接并确保代理程序正在运行。
- 绿色指示器,但应用安装、镜像拉取或代理程序更新超时 — 可能是某条防火墙规则已不再放行来自该设备的新连接。在重启任何东西之前,请先阅读身份感知防火墙与代理。
设备地图视图显示项目中所有设备的地理位置。