目录

简介

先决条件

要求

使用的组件

背景信息

配置

部署和配置FND OVA

关于PNP

关于EasyMode

为PNP和Easy Mode配置FND

准备CSV并将路由器添加到FND

准备调配设置、引导模板和配置模板

为调配/PNP准备IR800

调配IR800路由器

验证

故障排除

简介

本文档介绍如何使用最少组件集开始使用Field Network Director(FND)和即插即用(PNP)。

先决条件

要求

Cisco 建议您了解以下主题：

- 在Linux计算机上编辑运行配置文件的Linux经验和知识

- 至少一个受支持的路由器由FND管理。例如IR809或IR829。

- 控制台访问

- 最低IOS®版本15.7(3)M1

- 部署到虚拟机监控程序的OVA文件(例如：VMWare ESXi)。 OVA文件（如果已授权）可从以下网址下载：https://software.cisco.com/download/home/286287993/type/286320249

使用的组件

本文档中的信息基于以下软件和硬件版本：

- FND版本4.5.0-122的OVA文件(CISCO-IOTFND-V-K9-4.5.0-122.zip)

- VMWare ESX

- 带IOS®版本15.8(3)M2的IR809

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

由于FND有许多不同的部署选项，因此其目标是能够为FND设置最少但工作正常的安装。然后，此设置可作为进一步自定义和添加更多功能的起点。此处介绍的设置是使用开放虚拟设备(OVA)封装的FND安装作为起点，它使用简单模式来避免需要公钥基础结构(PKI)和隧道调配。使用PNP以简化和添加设备到安装。

本指南的结果不打算用于生产，因为计划文本密码和隧道和PKI的缺失可能会带来一些安全风险。

配置

部署和配置FND OVA

步骤1.下载FND OVA文件并将其部署到虚拟机监控程序。例如，对于VMWare，这将通过File > Deploy OVF Template（如图所示）进行。

步骤2.部署VM后，您可以启动VM，并显示登录屏幕，如图所示。

OVA文件的默认密码为：

- username：启动密码：Cisco123

- username：cisco 口令：C_sco123

步骤3.使用Cisco用户和密码登录，然后导航到Applications > System Tools > Settings > Network。添加有线配置文件，在IPv4选项卡中，设置所需的IP地址或DHCP，如图所示。

步骤4.单击Apply并切换连接关闭/打开，以确保应用新设置。

此时，您应该能够使用浏览器和IP地址（如图所示）导航到FND GUI。

步骤5.使用默认用户名和密码登录GUI:root / root123

系统会提示您立即更改密码，然后再次重定向到登录。

如果一切顺利，您应该能够使用新密码登录，并能够浏览FND GUI。

此外，还描述了PNP和演示模式，然后描述了FND的配置。

关于PNP

PNP是执行零接触部署(ZTD)的最新思科方法。使用PNP，可以完全配置设备，无需手动触摸配置。

对于FND，使用PNP时，无需首先引导路由器。事实上，PNP所做的所有工作，都会以安全方式将其重定向到FND，并获取引导程序配置。

一旦设备中存在引导程序配置，将继续执行该过程的其余步骤，就像使用传统引导启动设备一样。

使用PNP的方法有多种：

- 通过思科PNP服务(devicehelper.cisco.com)，使用智能帐户。在某些设备上默认启用出厂设置

- 使用DHCP选项43提供要连接以进行引导的IP或主机名

- 在配置中手动设置PNP服务器

对于此配置，手动设置PNP服务器IP，即FND服务器的IP和设备上的端口。如果您要使用DHCP执行此操作，应按如下方式提供信息：

对于Cisco IOS® ,DHCP服务器应按如下方式配置：

ip dhcp pool pnp_pool

network 192.168.10.0 255.255.255.248

default-router 192.168.10.1

dns-server 8.8.8.8

option 43 ascii "5A;K4;B2;I10.48.43.231;J9125"

!

对于Linux上的DHCPd:

[jedepuyd@KJK-SRVIOT-10 ~]$ cat /etc/dhcp/dhcpd.conf

subnet 192.168.100.0 netmask 255.255.255.0 {

option routers 192.168.100.1;

range 192.168.100.100 192.168.100.199;

option domain-name-servers 192.168.100.1;

option domain-name "test.dom";

option vendor-encapsulated-options "5A;K4;B2;I10.48.43.231;J9125";

}

在选项43或供应商封装选项的此配置中，需要指定以下ASCII字符串：

"5A;K4;B2;I10.50.215.252;J9125"

它可定制如下：

- 5 - DHCP类型代码5

- A — 活动功能操作代码

- K4 - HTTP传输协议

- B2 - PnP服务器/TPS/FND服务器IP地址类型为IPv4

- I10.48.43.231 - FND服务器IP地址

- J9125 — 端口号9125（FND服务器上PNP的端口）

有关使用DHCP的PNP的详细信息，请访问：https://www.cisco.com/c/en/us/td/docs/routers/connectedgrid/iot_fnd/guide/4_3/iot_fnd_ug4_3/sys_mgmt.html#31568部分：在Cisco IOS® DHCP服务器上配置DHCP选项43

关于EasyMode

自FND 4.1以来，便已引入了Easy模式，尽管它在当时被称为演示模式，允许您以不太安全的方式运行FND。虽然不建议在生产中使用，但这是开始使用的好方法。

使用easy模式，您可以专注于PNP流程、引导和配置路由器。如果某项操作不起作用，则无需怀疑隧道建立或证书。

将FND配置为以轻松模式运行时发生的更改：

- 无需头端路由器(HER)或到FND服务器的隧道。

- 无需公共密钥基础设施(PKI)设置和简单证书注册协议(SCEP)。

- 无需路由器证书、信任点和SSL证书。

- 所有通信都通过HTTP而非HTTPS进行。

有关简易模式的详细信息，请访问：

https://www.cisco.com/c/en/us/td/docs/routers/connectedgrid/iot_fnd/guide/4_1_B/iot_fnd_ug4_1_b/device_mgmt.html#85516

为PNP和Easy Mode配置FND

现在，您知道什么是演示模式/PNP，以及为什么在此情景中使用它。让我们更改FND配置以启用它：

在源自OVA文件的FND VM上，使用SSH连接并编辑cgms.properties，如下所示：

[root@iot-fnd ~]# cat /opt/fnd/data/cgms.properties

cgms-keystore-password-hidden=dD5KmzJHa64Oyvpqdu8SCg==

use-router-ip-from-db=true

rabbit-broker-ip=

rabbit-broker-port=

rabbit-broker-username=

rabbit-broker-password=

fogd-ip=192.68.5.3

enable-reverse-dns-lookup=false

enableApiAuth=false

fnd-router-mgmt-mode=1

enable-bootstrap-service=true

proxy-bootstrap-ip=10.48.43.231

配置文件中最后三行已更改。

- 第 10 行:启用轻松模式

- 第 11 行:启用PNP

- 第 12 行:设置要联系的FND服务器的IP

更改文件后，请重新启动FND容器以调整所做的更改：

[root@iot-fnd ~]# /opt/fnd/scripts/fnd-container.sh restart

Stopping FND container...

fnd-container

[root@iot-fnd ~]# Starting FND container...

fnd-container

重新启动后，其余配置可使用GUI完成。

准备CSV并将路由器添加到FND

在配置过程的这一点添加设备听起来可能有点不合逻辑，但遗憾的是，在添加了某些设备类型之后，配置的部分内容才可用。

这样做是为了避免GUI在不同设备引入不同选项时过于占用。

在此，我们尝试将IR809添加到FND。

CSV如下所示：

deviceType,eid,adminUsername,adminPassword,ip

ir800,IR809G-LTE-GA-K9+JMX2022X04S,fndadmin,C1sc0123!,10.48.43.250

CSV中的字段为：

- deviceType:IR800

- eid:PID和串行与+

- adminUsername:此用户名将添加到路由器配置，稍后将用于完成注册过程

- adminPassword:adminUsername的密码

- ip :部署后在设备配置中替换的IP地址

要添加此设备，请连接到GUI并导航至Devices > Field Devices > Inventory > Add Devices，如图所示。

在对话框中，指定CSV文件的位置，然后单击Add将其添加到FND，如图所示。

如果一切顺利，您应看到要列出“已完成”的历史记录项。 关闭对话框后，设备应显示在资产中，如图所示。

由于添加了deviceType ir800的设备，此时GUI中将提供适用的模板和组。

准备调配设置、引导模板和配置模板

由于FND已配置为演示模式，因此需要更改调配URL以改用HTTP。导航至Admin > Provisioning Settings以执行此操作：

将IoT-FND URL更改为http://<FND IP>:9121

接下来，配置两个最小模板用于引导和配置。

第一个配置称为路由器引导程序配置模板，它是在路由器能够使用PNP成功与FND联系后推送到路由器的配置。

如果PNP未使用，则是在引导进程时手动或在工厂中放置的配置。此配置仅包含足够的信息，供路由器在FND中启动注册过程。

第二个配置（称为配置模板）是添加到设备当前运行配置的配置。实际上，它可视为现有配置的增量。

在大多数情况下，这会导致奇怪的情况，因此建议先清除路由器上的所有配置，然后再将其添加到FND。

要设置路由器工厂重新调配模板，请导航至Configure > Tunnel Provisioning > Router Bootstrap Configuration，并用以下模板替换它：

<#if isBootstrapping = true>

<#assign mgmtintf = "GigabitEthernet0">

<#assign fndserver = "10.48.43.231">

<#assign sublist=far.eid?split("+")[0..1]>

<#assign pid=sublist[0]>

<#assign sn=sublist[1]>

<#-- General parameters  -->

hostname ${sn}BS

ip domain-name ${sn}

ip host fndserver.fnd.iot ${fndserver}

service timestamps debug datetime msec localtime show-timezone

service timestamps log datetime msec localtime show-timezone

!

<#-- Users  -->

username backup privilege 15 password C1sc0123!

username ${far.adminUsername} privilege 15 password ${far.adminPassword}

!

<#-- Interfaces  -->

interface ${mgmtintf}

ip address ${far.ip} 255.255.255.192

exit

!

<#-- Clock  -->

clock timezone UTC +2

!

<#-- Archive  -->

file prompt quiet

do mkdir flash:archive

archive

path flash:/archive

maximum 8

exit

!

<#-- HTTP -->

ip http server

ip http client connection retry 5

ip http client connection timeout 5

ip http client source-interface ${mgmtintf}

ip http authentication local

ip http timeout-policy idle 600 life 86400 requests 3

ip http max-connections 2

!

<#-- WSMA -->

wsma profile listener exec

transport http path /wsma/exec

exit

!

wsma profile listener config

transport http path /wsma/config

exit

!

wsma agent exec

profile exec

exit

!

wsma agent config

profile config

exit

!

<#-- CGNA -->

cgna gzip

!

cgna profile cg-nms-register

add-command show hosts | format flash:/managed/odm/cg-nms.odm

add-command show interfaces | format flash:/managed/odm/cg-nms.odm

add-command show ipv6 dhcp | format flash:/managed/odm/cg-nms.odm

add-command show ipv6 interface | format flash:/managed/odm/cg-nms.odm

add-command show platform hypervisor | format flash:/managed/odm/cg-nms.odm

add-command show snmp mib ifmib ifindex | format flash:/managed/odm/cg-nms.odm

add-command show iox host list detail | format flash:/managed/odm/cg-nms.odm

add-command show version | format flash:/managed/odm/cg-nms.odm

interval 10

url http://fndserver.fnd.iot:9121/cgna/ios/registration

gzip

active

exit

!

<#-- Script to generate RSA for SSH -->

event manager applet genkeys

event timer watchdog name genkeys time 30 maxrun 60

action 10 cli command "enable"

action 20 cli command "configure terminal"

action 30 cli command "crypto key generate rsa modulus 2048"

action 80 cli command "no event manager applet genkeys"

action 90 cli command "exit"

action 99 cli command "end"

exit

end

</#if>

要设置配置模板。请导航至“配置”>“设备配置”>“编辑配置模板”并添加此模板：

<#-- Enable periodic inventory notification every 1 hour to report metrics. -->

cgna profile cg-nms-periodic

interval 60

exit

<#-- Enable periodic configuration (heartbeat) notification every 15 min. -->

cgna heart-beat interval 15

<#-- Enable SSH access -->

line vty 0 4

transport input ssh

login local

exit

此模板将是生成的路由器运行配置。因此，应在此处添加此配置组的任何特定配置。

最简单的方法是从这个最小模板开始。成功后，根据需要更新和定制模板。

此时，FND的配置/准备工作已完成，您可以从准备路由器开始。

为调配/PNP准备IR800

如果要调配的设备已包含配置或之前已使用过，最好先完全清除路由器的配置，然后再将其添加到FND中，PNP。

显然，如果这是新设备，可跳过此步骤。

最简单的方法是使用命令write erase，并使用控制台重新加载路由器。

ir809kjk#write erase

Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]

[OK]

Erase of nvram: complete

*Oct 18 11:42:54.367 UTC: %SYS-7-NV_BLOCK_INIT: Initialized the geometry of nvram

ir809kjk#reload

System configuration has been modified. Save? [yes/no]: no

Proceed with reload? [confirm]

Starting File System integrity check

NOTE: File System will be deinited and later rebuilt

一段时间后，IR800应返回提示，运行初始配置对话框：

--- System Configuration Dialog ---

Would you like to enter the initial configuration dialog? [yes/no]: no

Press RETURN to get started!

确保之前的PNP/ZTD尝试没有剩余，最好重新创建存档和目录，并在路由器上删除Before-registration-config:

IR800#delete /f before-*

IR800#delete /f /r archive*

IR800#mkdir archive

Create directory filename [archive]?

Created dir flash:/archive

IR800#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

IR800(config)#archive

IR800(config-archive)#path flash:/archive

IR800(config-archive)#maximum 8

IR800(config-archive)#end

现在，您要么有新设备，要么有配置为空的设备，因此，如果需要，此时可以应用最小配置以使路由器到达FND。

如果您有DHCP服务器，则大部分应自动执行。

在设备上选择以下手动配置：

IR800>enable

IR800#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

IR800(config)#int gi0

IR800(config-if)#ip addr dhcp

IR800(config-if)#no shut

IR800(config-if)#end

*Aug 1 12:02:02.887: %SYS-5-CONFIG_I: Configured from console by console

IR800#ping 10.48.43.231

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.48.43.231, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms

IR800#

如您所见，执行了快速ping操作以测试路由器是否能通过应用的IP配置到达FND。

调配IR800路由器

此时，所有必备条件均已完成，您可以启动PNP流程。在此实例中手动完成。

在生产环境中，PNP很可能与DHCP选项43一起使用。这意味着路由器一旦启动，就会收到IP和PNP配置，您可以跳过此步骤和下一步。

要在IR800上手动配置PNP而不使用DHCP，您需要指定请求的目标，即FND服务器。

这可以如下执行：

IR800(config)#pnp profile pnp-zero-touch

IR800(config-pnp-init)#transport http ipv4 10.48.43.231 port 9125

IR800(config-pnp-init)#end

一旦您输入以“transport”开头的线路，路由器将启动PNP进程，并尝试在给定IP和端口上与FND联系。

如果一切顺利，设备将通过以下设备：

- [UPDATING_ODM]:更新设备上的ODM（运营数据模型）文件，使其与当前FND版本有效的文件相匹配

- [UPDATING_ODM_VERIFY_HASH]:检查更新的文件是否正确

- [UPDATED_ODM]

- [COLLECTING_INVENTORY]:收集当前配置和设备信息

- [COLLECTED_INVENTORY]

- [VALIDATING_CONFIGURATION]:尝试从引导程序配置(替换的路由器工厂重新调配模板)应用配置

- [VALIDATED_CONFIGURATION]

- [PUSHING_BOOTSTRAP_CONFIG_FILE]:应用已验证的配置

- [PUSHING_BOOTSTRAP_CONFIG_VERIFY_HASH]:检查应用的配置是否正确

- [PUSHED_BOOTSTRAP_CONFIG_FILE]

- [CONFIGURING_STARTUP_CONFIG]：将配置写入启动配置

- [CONFIGURED_STARTUP_CONFIG]

- [应用_配置]:应用启动配置

- [APPLIED_CONFIG]

- [TERMINATING_BS_PROFILE]:停止引导。

您可以在FND server.log中跟踪该进程。

在GUI中，导航至“未听”>“引导”>“引导启动”时，您将看到设备移动

引导启动完成后，路由器将使用替代的“路由器工厂重新调配”模板，并像常规引导启动设备一样运行，而无需PNP。

换句话说，IR800上的CGNA配置文件尝试向FND服务器注册。

检查CGNA配置文件的状态：

JMX2022X04SBS#sh cgna profile-state all

Profile 1:

Profile Name: cg-nms-register

Activated at: Thu Aug  1 15:31:14 2019

URL: http://fndserver.fnd.iot:9121/cgna/ios/registration

Payload content type: xml

Interval: 10 minutes

gzip: activated

Profile command:

show hosts | format flash:/managed/odm/cg-nms.odm

show interfaces | format flash:/managed/odm/cg-nms.odm

show ipv6 dhcp | format flash:/managed/odm/cg-nms.odm

show ipv6 interface | format flash:/managed/odm/cg-nms.odm

show platform hypervisor | format flash:/managed/odm/cg-nms.odm

show snmp mib ifmib ifindex | format flash:/managed/odm/cg-nms.odm

show iox host list detail | format flash:/managed/odm/cg-nms.odm

show version | format flash:/managed/odm/cg-nms.odm

State: Wait for timer for next action

Timer started at Thu Aug  1 15:31:14 2019

Next update will be sent in 9 minutes 30 seconds

Last successful response not found

Last failed response not found

使用提供的配置，设备将在10分钟后尝试向FND注册。您可以看到，在此输出中，路由器开始注册过程之前还剩下九分三十秒。

您可以等待计时器完成或立即手动执行cg-nms-register配置文件：

IR800-Bootstrap#cgna exec profile cg-nms-register

验证

使用本部分可确认配置能否正常运行。

设备应在FND中进入UP状态，如图所示。

故障排除

本部分提供了可用于对配置进行故障排除的信息。

要对引导启动过程进行故障排除，请检查以下项：

- FND服务器登录：/opt/fnd/logs/server.log

- 增加登录的详细程度：Admin > Logging > Log Level Settings > Router Bootstraping > Debug

- 从IR800控制台：show pnp ?或debug pnp ?

- 在FND GUI中：设备>资产>选择设备>事件

- 此阶段的大多数问题与路由器工厂重新调配模板中的(语法)错误有关

要对注册过程进行故障排除，请检查以下项：

- FND服务器登录：/opt/fnd/logs/server.log

- 从IR800控制台：

- show cgna profile-state all

- debug cgna logging ?

- debug wsma agent

- 在FND GUI中：设备>资产>选择设备>事件

- 从FND VM通过HTTP检查WSMA与IR800的连接

- FND使用的URI:http://10.48.43.231:80/wsma/exec

- 方法：POST

- 安全:基本身份验证