Skip to Content
IoT 设备管理连接设备

连接设备

IronFlock 支持多种方式连接设备,具体取决于硬件和操作系统。手头没有硬件?您可以在几分钟内在笔记本电脑上模拟一台设备。

前提条件

连接设备之前,请确保您已具备:

  1. 在 IronFlock 上创建了一个项目
  2. 在该项目中创建了一个设备条目(在项目 Settings -> Devices 面板中点击 NEW DEVICE。)
  3. 已下载设备配置文件(.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 代理程序,让您的笔记本电脑在项目中扮演一台真实设备——非常适合在部署到实际硬件之前先测试应用和仪表板。

  1. 安装 Docker Desktop(Linux 上安装 Docker Engine),并确保其正在运行。
  2. 为您的操作系统下载并安装 FlockFlasher 应用。
  3. 双击已下载的设备 .flock 文件——它会在 FlockFlasher 中打开,设备随即出现在列表中。(也可以打开 FlockFlasher,通过 + 按钮添加该文件。)
  4. 在设备条目上点击 Test Device(▶,测试设备)。FlockFlasher 首次使用时会自动下载 IronFlock 代理程序,并使用您的设备配置启动它。

现在,您的笔记本电脑就会在 IronFlock 项目中充当这台设备:它会显示为在线状态,您可以像在真实设备上一样在其上安装并运行应用。这些应用以 Docker 容器的形式在您的笔记本电脑上运行。

测试完成后,请在 FlockFlasher 中停止测试。之后您仍可以使用同一个 .flock 文件来配置真实设备——只需确保同一份设备配置在同一时间只在一台机器上运行。

方法一:烧录 SD 卡

最适合从 SD 卡启动的 Raspberry Pi 和其他 ARM 设备。

  1. 为您的操作系统下载 FlockFlasher 应用。
  2. 将 SD 卡(最少 16 GB)插入电脑。
  3. 打开 FlockFlasher,点击 + 按钮加载 .flock 文件。
  4. 选择 SD 卡驱动器(FlockFlasher 会自动检测外部驱动器)。
  5. 为您的设备选择正确的镜像(Raspberry Pi 3/4、Zero 等)。
  6. 可选配置 WiFi,以便设备在目标位置可以联网。
  7. 点击 Flash,等待写入、验证和配置完成。
  8. 将 SD 卡插入设备并开机。

设备应在 20 分钟内上线。

警告:烧录过程会擦除所选驱动器上的所有数据。FlockFlasher 默认隐藏内部驱动器,但请务必仔细核对您的选择。

方法二:工业 PC 的 USB 安装器

适用于支持 EFI 启动的 AMD64 设备(例如 Siemens SIMATIC Box IPC)。

  1. 插入 USB 存储器(最少 16 GB)并打开 FlockFlasher。
  2. 加载 .flock 文件并选择 USB 驱动器。
  3. 选择 Industrial PC x86_64 (EFI) 镜像。
  4. 点击 Flash 并等待完成。
  5. 如有必要,在设备的 BIOS 中更改启动顺序以从 USB 启动。
  6. 插入 USB 存储器并启动设备。

设备应在 60 分钟内上线。

方法三:自定义安装

适用于保留现有 Linux 操作系统的设备。非常适合 NVIDIA Jetson 和自定义硬件。

注意:这种手动安装方式面向工业 PC、网关和嵌入式设备等真实生产硬件——不适用于笔记本电脑。如果您只是想在笔记本电脑上试用 IronFlock,请改为按照先测试:在笔记本电脑上模拟设备进行操作——无需手动安装代理程序。

Linux / Unix 设备

  1. 通过 SSH 连接到设备。
  2. 将 .flock 文件从电脑复制到设备:
    scp mydevice.flock user@device-ip:/home/user/
  3. 下载并运行安装程序:
    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 -- remove

ironflock-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.sh

gpg 必须报告这是由 IronFlock Bootstrap <[email protected]> 签出的有效签名,指纹为 F6C9 4D96 CE31 5377 ACA7 C8EA 4990 5433 7321 2788。然后运行验证过的脚本:

sudo bash install.sh -c mydevice.flock

Windows 设备

  1. 在设备上安装 Docker Desktop,并在 Docker Desktop 设置中启用 Start Docker Desktop when you sign in。对于无人值守的设备,还应配置 Windows 自动登录,以便重启后无需任何人登录即可使用 Docker。
  2. 下载 device-agent.exe。
  3. 将 .flock 文件复制到设备。
  4. 在提升权限(管理员)的命令提示符中,将代理程序安装为 Windows 服务并启动:
    device-agent.exe service install -config path\to\config.flock
    服务 ironflock-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 sources

timedatectl 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 通信。
  • 红色指示器 — 设备离线。请检查网络连接并确保代理程序正在运行。
  • 绿色指示器,但应用安装、镜像拉取或代理程序更新超时 — 可能是某条防火墙规则已不再放行来自该设备的新连接。在重启任何东西之前,请先阅读身份感知防火墙与代理。

设备地图视图显示项目中所有设备的地理位置。

Last updated on