RouterOS Central Controller

{{ error }}

{{ currentTitle }}

{{ devices.length }} 台设备,{{ registrations.length }} 个注册项
{{ error }}
{{ notice }}

设备注册参数

RouterOS 脚本

尚未生成

受控设备

设备名 区域 公网 IP DDNS SSH API 版本 最近心跳 配置
{{ device.identity }} {{ device.region || device.site }} {{ publicIpText(device) }}
中控 {{ device.ddns_hostname || '-' }}
上报 {{ reportedHostname(device) }}
脚本 {{ configDdnsHostnames(device) || (device.config_ddns && device.config_ddns.detected ? '已识别未提取域名' : '-') }}
{{ device.ddns_last_ip || device.ddns_status || configDdnsProviders(device) || '' }}
{{ device.ssh_port || '-' }} {{ device.api_enabled ? (device.api_port || (device.api_use_ssl ? 8729 : 8728)) : 'off' }}
{{ device.api_last_status || '' }}
{{ device.routeros_version || '-' }} {{ fmt(device.last_seen_at) }} {{ device.latest_config_status || 'none' }}
暂无设备

设备详情

选择一台设备

最新配置:{{ latestConfig.status }}

{{ latestConfig.config_text || latestConfig.error }}

全网维护

设备 {{ maintenanceReport.summary.devices }}
健康 {{ maintenanceReport.summary.healthy_devices }}
问题 {{ maintenanceReport.summary.issues.total }}
隧道 {{ maintenanceReport.summary.tunnels }}
路由 {{ maintenanceReport.summary.routes }}
真实网段冲突 {{ maintenanceReport.summary.hard_subnet_overlaps }}
脚本 / 计划 {{ maintenanceReport.summary.scripts }}/{{ maintenanceReport.summary.schedulers }}
DDNS 自动化 {{ maintenanceReport.summary.automation ? maintenanceReport.summary.automation.ddns_devices : 0 }}
拓扑 {{ maintenanceReport.summary.topology_nodes }} 个节点 / {{ maintenanceReport.summary.topology_edges }} 条连接; 地址段 {{ maintenanceReport.summary.subnets }} 个; DDNS 自动化 {{ maintenanceReport.summary.automation ? maintenanceReport.summary.automation.ddns_devices : 0 }} 台; 异常计划 {{ maintenanceReport.summary.automation ? maintenanceReport.summary.automation.broken_schedulers : 0 }}; 高权限脚本 {{ maintenanceReport.summary.automation ? maintenanceReport.summary.automation.high_privilege_scripts : 0 }}; 严重 {{ maintenanceReport.summary.issues.critical }},警告 {{ maintenanceReport.summary.issues.warning }},提示 {{ maintenanceReport.summary.issues.info }}。

服务器备份

备份文件 {{ backupStatus.count || 0 }}
备份占用 {{ formatBytes(backupStatus.total_size) }}
保留上限 {{ backupStatus.limits ? backupStatus.limits.max_files : 0 }}
磁盘剩余 {{ backupStatus.disk ? formatBytes(backupStatus.disk.free) : '-' }}
目录 {{ backupStatus.backup_dir }}; 最多 {{ backupStatus.limits.max_files }} 个 / {{ backupStatus.limits.max_age_days }} 天 / {{ formatBytes(backupStatus.limits.max_total_size) }}。
文件 大小 时间
{{ item.name }} {{ formatBytes(item.size) }} {{ fmt(item.mtime) }}

维护问题

级别 类别 设备 问题 建议
{{ severityLabel(issue.severity) }} {{ issue.category }} {{ issue.device_name || '-' }} {{ issue.title }}
{{ issue.detail }}
{{ issue.recommendation }}
暂无维护问题

设备健康

设备 区域 公网 心跳 配置 配置对象
{{ device.identity }} {{ device.region || '-' }} {{ publicIpText(device) }} {{ healthLabel(device.health) }}
{{ fmt(device.last_seen_at) }} · {{ ageLabel(device.last_seen_age_seconds) }}
{{ healthLabel(device.config_health) }}
{{ device.latest_config_status || '-' }} · {{ fmt(device.config_collected_at || device.latest_config_at) }}
隧道 {{ device.counts.tunnels }} / 路由 {{ device.counts.routes }} / 地址 {{ device.counts.addresses }} / 脚本 {{ device.counts.scripts }} / 计划 {{ device.counts.schedulers }}
{{ device.automation ? device.automation.summary : '' }}
暂无设备

自动化与 DDNS 分析

设备 状态 DDNS 脚本/计划 关注项 建议
{{ device.identity }} {{ healthLabel(device.automation ? device.automation.status : 'info') }} controller {{ (device.automation.ddns.providers || []).join(', ') || 'local' }} 未识别
中控 {{ device.automation && device.automation.ddns.controller_hostname ? device.automation.ddns.controller_hostname : '-' }}
脚本 {{ automationDdnsHostnames(device) || '-' }}
{{ device.automation ? device.automation.counts.scripts : 0 }} / {{ device.automation ? device.automation.counts.schedulers : 0 }} 异常计划 {{ device.automation ? device.automation.counts.broken_schedulers : 0 }} / 孤立脚本 {{ device.automation ? device.automation.counts.orphan_scripts : 0 }} / 高权限 {{ device.automation ? device.automation.counts.high_privilege_scripts : 0 }} {{ device.automation ? device.automation.recommendation : '-' }}
暂无自动化分析

自动化优化建议

级别 设备 对象 问题 建议
{{ severityLabel(item.severity) }} {{ item.device_name || '-' }} {{ automationObjectLabel(item.object_type) }}
{{ item.object_name || '-' }}
{{ item.title }}
{{ item.detail }}
{{ item.recommendation }}
暂无自动化优化建议

管理服务

设备 服务 端口 允许地址 状态 风险
{{ service.device_name }} {{ service.name }} {{ service.port || '-' }} {{ service.address || '0.0.0.0/0' }} {{ service.disabled ? 'disabled' : 'enabled' }} {{ severityLabel(service.risk) }}
暂无服务清单

脚本与计划任务

设备 脚本 类型 策略 调用 状态
{{ script.device_name }} {{ script.name || '-' }} {{ automationKindLabel(script.automation_kind) }}
{{ script.ddns_provider }}
{{ script.ddns_hostnames.join(', ') }}
{{ endpointRefreshText(script) }}
{{ script.policy || '-' }} {{ script.scheduler_count || 0 }}
{{ (script.referenced_by || []).join(', ') }}
{{ script.source_present ? '有' : '无' }}
{{ script.source_hash || '-' }} · {{ script.source_size || 0 }}B
{{ script.disabled ? 'disabled' : healthLabel(script.status || 'ok') }}
暂无脚本
设备 计划任务 类型 间隔 目标 状态
{{ scheduler.device_name }} {{ scheduler.name || '-' }} {{ automationKindLabel(scheduler.automation_kind) }}
{{ scheduler.ddns_provider }}
{{ scheduler.ddns_hostnames.join(', ') }}
{{ endpointRefreshText(scheduler) }}
{{ scheduler.interval || '-' }} {{ scheduler.target_script || scheduler.on_event || '-' }}
{{ automationExecutionLabel(scheduler.execution_type) }}
{{ scheduler.disabled ? 'disabled' : healthLabel(scheduler.status || 'ok') }}
暂无计划任务

隧道清单

来源 目标 协议 名称 双端地址 承载路由
{{ tunnel.source }} {{ tunnel.target }} 未纳管 {{ tunnel.protocol }} {{ tunnel.name || '-' }} {{ tunnel.local_address || '-' }} → {{ tunnel.remote_address || '-' }}
{{ route.dst_address }}
-
暂无隧道

自动化管理

设备 {{ automationAudit.summary.devices }}
脚本 / 计划 {{ automationAudit.summary.scripts }}/{{ automationAudit.summary.schedulers }}
发现项 {{ automationAudit.summary.findings }}
整改动作 {{ automationAudit.summary.actions }}
可自动执行 {{ automationAudit.summary.executable_actions }}
DDNS 设备 {{ automationAudit.summary.ddns_devices }}
异常计划 {{ automationAudit.summary.broken_schedulers }}
高权限脚本 {{ automationAudit.summary.high_privilege_scripts }}
{{ automationResult.dry_run ? '整改预览' : '整改结果' }}:{{ automationResult.action ? automationResult.action.title : '' }}
备份:{{ automationResult.backup.status || '-' }} · 配置 {{ automationResult.backup.config_id || '-' }}
刷新:{{ automationResult.after_refresh.map(item => item.status).join(', ') }}
{{ automationResult.commands.join('\n') }}
{{ dynamicUpdaterResult.dry_run ? '动态隧道更新器预览' : '动态隧道更新器下发结果' }}:{{ dynamicUpdaterResult.plan ? dynamicUpdaterResult.plan.device_name : '' }}
备份:{{ dynamicUpdaterResult.backup.status || '-' }} · 配置 {{ dynamicUpdaterResult.backup.config_id || '-' }}
刷新:{{ dynamicUpdaterResult.after_refresh.map(item => item.status).join(', ') }}
{{ dynamicUpdaterResult.commands.join('\n') }}

PPPoE 动态隧道公网更新

设备 公网接口 状态 本端隧道 对端 SSH 更新 现有 upip 操作
{{ plan.device_name }}
{{ plan.region || '-' }}
{{ plan.public_ip || '-' }}
{{ plan.source_interface || '-' }}
间隔 {{ plan.interval || '1m' }}
{{ dynamicUpdaterSourceKindLabel(plan.source_kind) }}
{{ dynamicUpdaterStatusLabel(plan) }}
已安装 controller-upip1
{{ plan.warnings.join(' / ') }}
{{ item.protocol }} {{ item.interface }}
{{ item.local_address || '-' }} -> {{ item.remote_address || '-' }}
未识别到需要动态维护的公网隧道
{{ peer.address }}:{{ peer.port }} · {{ peer.protocol }} {{ peer.interface }}
{{ peer.device_name || peer.source || '-' }}
仅更新本端或待核对对端
未发现
下发后禁用旧 upip1,成功后刷新配置
暂无动态隧道公网更新计划

设备自动化画像

设备 状态 DDNS 对象 发现/整改 建议
{{ device.identity }}
{{ device.region || '-' }}
{{ healthLabel(device.automation_status) }}
{{ fmt(device.config_collected_at) }}
controller {{ (device.ddns.providers || []).join(', ') || 'local' }}
{{ automationDeviceDdnsText(device) || '-' }}
脚本 {{ device.counts.scripts || 0 }} / 计划 {{ device.counts.schedulers || 0 }}
隧道 {{ device.counts.tunnels || 0 }} / 路由 {{ device.counts.routes || 0 }}
发现 {{ device.counts.findings || 0 }} / 整改 {{ device.counts.actions || 0 }}
可执行 {{ device.counts.executable_actions || 0 }}
{{ device.recommendation || '-' }}
暂无自动化画像

智能整改方案

级别 设备 对象 方案 命令 操作
{{ severityLabel(action.severity) }} {{ action.device_name }} {{ automationObjectLabel(action.object_type) }}
{{ action.object_name || '-' }}
{{ action.title }}
{{ action.reason }}
{{ action.impact }}
{{ action.command }}
{{ (action.manual_steps || []).join(' / ') || '-' }}
{{ automationSafetyLabel(action.safety) }}
暂无整改方案

发现项

级别 设备 对象 问题 建议
{{ severityLabel(finding.severity) }} {{ finding.device_name }} {{ automationObjectLabel(finding.object_type) }}
{{ finding.object_name || '-' }}
{{ finding.title }}
{{ finding.detail }}
{{ finding.recommendation }}
暂无发现项

脚本与计划任务提取

设备 脚本 类型 策略 调用 源摘要
{{ script.device_name }} {{ script.name || '-' }} {{ automationKindLabel(script.automation_kind) }}
{{ script.ddns_provider }}
{{ endpointRefreshText(script) }}
{{ script.policy || '-' }} {{ script.scheduler_count || 0 }}
{{ (script.referenced_by || []).join(', ') }}
{{ script.source_hash || '-' }} · {{ script.source_size || 0 }}B
暂无脚本
设备 计划任务 类型 间隔 目标
{{ scheduler.device_name }} {{ scheduler.name || '-' }} {{ automationKindLabel(scheduler.automation_kind) }}
{{ endpointRefreshText(scheduler) }}
{{ scheduler.interval || '-' }} {{ scheduler.target_script || scheduler.on_event || '-' }}
{{ automationExecutionLabel(scheduler.execution_type) }}
暂无计划任务

网络拓扑

节点 {{ topology.summary.nodes }} 个,连接 {{ topology.summary.edges }} 条,RouterOS {{ topology.summary.routeros_nodes }} 台
{{ topologySelectionSummary() }}
RouterOS 公网/对端地址 路由表目标网段 {{ edge.graphLabel }} {{ node.title }} {{ node.subtitle }}
选择设备后生成拓扑
{{ topology.warnings.join(';') }}

连接

类型 来源 目标 标签 双端地址 承载路由
{{ edge.kind }} {{ edge.protocol || '' }} {{ nodeLabel(edge.source) }} {{ nodeLabel(edge.target) }} {{ edge.short_label || edge.label }} {{ edge.local_address || edge.gateway || '-' }} → {{ edge.remote_address }}
-
暂无连接

Mermaid

{{ topology.mermaid }}

公网隧道自动纳管

默认用户名 {{ (unmanagedDefaults.usernames || []).join(', ') || '-' }}; 默认端口 {{ (unmanagedDefaults.ports || []).join(', ') || '-' }}; 私钥 {{ unmanagedDefaults.private_key_configured ? '已在服务器配置' : '未配置' }}; 密码 {{ unmanagedDefaults.passwords_configured ? '已在服务器配置' : '未配置' }}; 后台 {{ unmanagedDefaults.auto_enabled ? '已开启' : '未开启' }}; 间隔 {{ unmanagedDefaults.auto_interval_seconds || '-' }}s; 失败重试 {{ unmanagedDefaults.auto_retry_seconds || '-' }}s; 每轮最多 {{ unmanagedDefaults.auto_max_per_run || '-' }} 台。
后台状态 {{ autoAdoptionStatus.auto.running ? '运行中' : autoAdoptionStatus.auto.last_status || 'idle' }}; 上次开始 {{ fmt(autoAdoptionStatus.auto.last_started_at) }}; 上次结束 {{ fmt(autoAdoptionStatus.auto.last_finished_at) }}; 候选 {{ autoAdoptionStatus.auto.last_result.candidates || 0 }}, 尝试 {{ autoAdoptionStatus.auto.last_result.attempted || 0 }}, 纳管 {{ autoAdoptionStatus.auto.last_result.adopted || 0 }}, 失败 {{ autoAdoptionStatus.auto.last_result.failed || 0 }}, 延后 {{ autoAdoptionStatus.auto.last_result.deferred || 0 }}, 已存在跳过 {{ autoAdoptionStatus.auto.last_result.skipped_managed || 0 }}, 近期失败跳过 {{ autoAdoptionStatus.auto.last_result.skipped_recent || 0 }}。
{{ adoptionResult.status === 'adopted' ? '已纳管' : adoptionResult.status }}: {{ adoptionResult.device_name || adoptionResult.host }} {{ adoptionResult.host }}:{{ adoptionResult.ssh_port || '-' }} ;配置抓取 {{ adoptionResult.config.status }}
远端公网 来源设备 隧道 推断区域 承载路由 自动状态
{{ candidate.host }} {{ candidate.source_device_name }}
{{ candidate.source_region || '-' }}
已合并 {{ candidate.source_count }} 个来源
{{ candidate.protocol }} {{ candidate.tunnel_name || '-' }}
{{ candidate.local_address || '-' }} → {{ candidate.remote_address || '-' }}
{{ candidate.inferred_region || '-' }} {{ candidate.route_count || 0 }}
{{ (candidate.carried_routes || []).slice(0, 3).map(route => route.dst_address).join(', ') }}
{{ adoptionAttemptLabel(candidate.auto_attempt) }}
{{ candidate.auto_attempt && candidate.auto_attempt.last_attempt_at ? fmt(candidate.auto_attempt.last_attempt_at) : '' }}
暂无未纳管公网隧道对端

隧道工作台

配置设备 {{ tunnelInventory.summary.devices_with_configs }}/{{ tunnelInventory.summary.devices }}
现有隧道 {{ tunnelInventory.summary.tunnels }}
可导入规划 {{ tunnelInventory.summary.planning_candidates || 0 }}
受控对端 {{ tunnelInventory.summary.managed_peer_tunnels }}
外部对端 {{ tunnelInventory.summary.external_peer_tunnels }}
隧道承载路由 {{ tunnelInventory.summary.tunnel_routes }}
待核对 {{ tunnelInventory.summary.warnings }}

设备配置快照

设备 区域 公网 IP 版本 配置时间 隧道/路由/地址
{{ device.device_name }} {{ device.region || '-' }} {{ device.public_ip || '-' }} {{ device.routeros_version || '-' }} {{ fmt(device.config_collected_at) }} {{ device.has_config ? 'ok' : 'no config' }} {{ device.tunnel_count }} / {{ device.route_count }} / {{ device.address_count }}
暂无设备配置

现有隧道

设备 协议/接口 对端 本端/远端地址 接口地址 承载路由 状态 规划 备注
{{ tunnel.device_name }}
{{ tunnel.protocol }} {{ tunnel.name || '-' }}
{{ tunnel.path }}
{{ tunnel.peer_device_name }} {{ tunnel.remote_address || '-' }}
{{ tunnel.peer_region || tunnel.raw_remote || '' }}
{{ tunnel.local_address || '-' }} → {{ tunnel.remote_address }}
{{ address.address }}
-
{{ route.dst_address }} via {{ route.gateway }}
-
{{ inventoryStatusLabel(tunnel.status) }} - {{ tunnel.comment || '-' }}
暂无现有隧道

现有路由

设备 目标网段 网关 关联隧道/网关设备 路由表/距离 状态 备注
{{ route.device_name }} {{ route.dst_address }} {{ route.gateway || '-' }} {{ route.tunnel_protocol }} {{ route.tunnel_name }} {{ route.gateway_device_name }} -
{{ route.out_interface || route.gateway_region || '' }}
{{ route.routing_table || route.routing_mark || 'main' }}
distance {{ route.distance || '-' }}
{{ inventoryStatusLabel(route.status) }} {{ route.comment || '-' }}
暂无现有路由

待核对项

级别 设备 类别 问题 说明
{{ severityLabel(item.severity) }} {{ item.device_name }} {{ item.category }} {{ item.title }} {{ item.detail }}
暂无待核对项

内网地址段占用

地址段 {{ subnetInventory.summary.subnets }}
涉及设备 {{ subnetInventory.summary.devices }}
真实冲突 {{ subnetInventory.summary.hard_overlaps || 0 }}
重复组 {{ subnetInventory.summary.exact_duplicate_groups || 0 }}
诊断项 {{ subnetInventory.summary.diagnostics || 0 }}
关联路由 {{ subnetInventory.summary.route_diagnostics || 0 }}
发现重复或重叠地址段,请先处理真实占用冲突,再继续规划新隧道。

冲突诊断

级别 类型 冲突网段 关联设备 关联路由 整改方向
{{ severityLabel(item.severity) }} {{ diagnosticCategoryLabel(item.category) }} {{ item.cidrs.join(' / ') }}
{{ device.device_name }} {{ device.region || '' }}
{{ item.related_route_count }} 条 {{ item.suggested_action }}
暂无匹配的冲突诊断

{{ selectedSubnetDiagnostic().title }} · {{ selectedSubnetDiagnostic().cidrs.join(' / ') }}

{{ selectedSubnetDiagnostic().summary }}

真实占用对象

设备 来源 网段 接口/隧道
{{ item.device_name }} {{ sourceLabel(item.source) }} {{ item.cidr }} {{ item.interface || item.comment || '-' }}

关联静态路由

设备 目标网段 网关 备注
{{ route.device_name }} {{ route.cidr }} {{ route.gateway || '-' }} {{ route.comment || '-' }}
暂无关联路由

逐条整改方案

{{ step.recommended_role || '建议核对' }} {{ step.device_name }} · {{ step.object_type }} · {{ step.object_ref || '-' }}

{{ step.summary || step.action }}

{{ step.cidr }}
{{ step.tunnel_endpoints && step.tunnel_endpoints.length ? '隧道双端地址' : '本端地址段' }}
{{ endpoint.address || endpoint.cidr }}
{{ rangeDeviceText(endpoint) }}
{{ rangeObjectText(endpoint) }}
冲突对端地址段
{{ peer.cidr }}
{{ rangeDeviceText(peer) }}
{{ rangeObjectText(peer) }}
暂无明确对端
建议目标
{{ step.suggested_replacement_cidr }}
{{ endpoint.device_name }}
{{ endpoint.replacement_address }}
{{ stepSuggestionValue(step) }}
先确认保留端,再处理关联路由
{{ step.action }}
关联路由 {{ route.device_name }} {{ route.cidr }} via {{ route.gateway || '-' }}
联动修改 {{ dependencyText(reference) }}
{{ command }}
{{ step.command_hint }}
该项需要人工处理,暂不支持自动执行。

整改结果

{{ pretty(subnetRemediationResult) }}
地址段 设备 区域 来源 接口/隧道 冲突 备注
{{ item.cidr }} {{ item.device_name }} {{ item.region || '-' }} {{ sourceLabel(item.source) }} {{ item.interface || '-' }} {{ item.conflict_count }}- {{ item.comment || item.gateway || '-' }}
暂无地址段

隧道规划

名称 协议 双端 隧道地址 状态 运行
{{ item.name }} 当前 {{ item.protocol }} {{ item.endpoint_a.identity }} ↔ {{ item.endpoint_b.identity }} {{ item.endpoint_a_tunnel_address }} ↔ {{ item.endpoint_b_tunnel_address }} {{ item.status }} {{ tunnelStatusLabel(tunnelOverallStatus(item)) }}
{{ tunnelStatusTime(item) }}
暂无隧道规划

{{ tunnelForm.id ? '编辑隧道' : '新建隧道' }}

当前草稿来自现有隧道: {{ selectedInventoryTunnel().device_name }} · {{ selectedInventoryTunnel().protocol }} {{ selectedInventoryTunnel().name || '-' }}
已保存:{{ tunnelForm.name }}
确认下发 {{ pendingTunnelApplyName() }} 到双端 RouterOS? 系统将通过 SSH 写入隧道接口、隧道地址和对端路由。建议先点“预览配置”确认脚本内容。
A 端:{{ deviceName(tunnelForm.endpoint_a_device_id) }}
公网:{{ devicePublicIp(tunnelForm.endpoint_a_device_id) || '-' }} 隧道地址:{{ tunnelForm.endpoint_a_tunnel_address || '-' }}
{{ routeKindLabel(item.kind) }} {{ item.cidr }} 选择设备后显示本端内网/VPN 网段
B 端:{{ deviceName(tunnelForm.endpoint_b_device_id) }}
公网:{{ devicePublicIp(tunnelForm.endpoint_b_device_id) || '-' }} 隧道地址:{{ tunnelForm.endpoint_b_tunnel_address || '-' }}
{{ routeKindLabel(item.kind) }} {{ item.cidr }} 选择设备后显示本端内网/VPN 网段
正在根据双端配置规划隧道地址和路由...
建议隧道内网:{{ tunnelPlan.tunnel_network }}; A 端 {{ tunnelPlan.endpoint_a_tunnel_address }}, B 端 {{ tunnelPlan.endpoint_b_tunnel_address }}。
A 端本地内网 B 端默认路由
{{ route.cidr }} dst={{ route.cidr }} via {{ tunnelPlanGateway('a') || '-' }}
未从 A 端配置中识别到可发布内网
B 端本地内网 A 端默认路由
{{ route.cidr }} dst={{ route.cidr }} via {{ tunnelPlanGateway('b') || '-' }}
未从 B 端配置中识别到可发布内网
A 端将写入的对端路由
来源:{{ deviceName(tunnelForm.endpoint_b_device_id) }} 的内网/VPN 网段 gateway:{{ tunnelPeerGateway('b') || '-' }}
已显示前 {{ routeDisplayLimit }} 条,可在下方文本框继续补充其它网段。
选择 A/B 两端后显示 A 端要写入的对端路由
未从 B 端配置中识别到可发布网段
B 端将写入的对端路由
来源:{{ deviceName(tunnelForm.endpoint_a_device_id) }} 的内网/VPN 网段 gateway:{{ tunnelPeerGateway('a') || '-' }}
已显示前 {{ routeDisplayLimit }} 条,可在下方文本框继续补充其它网段。
选择 A/B 两端后显示 B 端要写入的对端路由
未从 A 端配置中识别到可发布网段

A 端脚本

{{ tunnelScripts.endpoint_a_script }}

B 端脚本

{{ tunnelScripts.endpoint_b_script }}

下发结果

{{ pretty(tunnelScripts.results) }}

注册密钥

设备名 区域 心跳 公网接口 DDNS 状态 有效期
{{ item.device_name }} {{ item.region }} {{ item.heartbeat_interval }} {{ item.pppoe_interface }} {{ item.ddns_hostname || '-' }} {{ registrationStatus(item) }} {{ fmt(item.expires_at) }}
暂无注册项