此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍如何使用最少的组件开始使用Field Network Director(FND)和即插即用(PNP)。
Cisco 建议您了解以下主题:
本文档中的信息基于以下软件和硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
由于FND具有许多不同的部署选项,因此目标是能够为FND设置最小但有效的安装。然后,此设置可以作为进一步自定义和添加更多功能的起点。此处介绍的设置是使用开放式虚拟设备(OVA)打包的FND安装作为起点,它使用简单模式以避免对公钥基础结构(PKI)和隧道调配的需求。使用PNP可简化安装并将设备添加到安装。
本指南的结果并不用于生产,因为计划文本密码以及没有隧道和PKI可能带来一些安全风险。
步骤1.将FND OVA文件下载并部署到虚拟机监控程序。例如,对于VMWare,这将通过File > Deploy OVF Template,如图所示。

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

OVA文件的默认密码为:
步骤3.使用cisco用户和密码登录,然后导航到应用>系统工具>设置>网络。添加有线配置文件,并在IPv4选项卡中设置所需的IP地址或DHCP,如图所示。

步骤4.单击Apply并关闭/打开连接,以确保应用新设置。
此时,您应该能够使用您的浏览器导航到FND GUI,并导航到如图所示配置的IP地址。

步骤5.使用默认用户名和密码登录GUI:root / root123
系统会提示您立即更改密码,然后再次重定向至登录页面。
如果一切顺利,您应该能够使用新密码登录,并且能够浏览FND GUI。
此外,还介绍了PNP和演示模式,然后介绍了FND的配置。
PNP是思科执行零接触部署(ZTD)的最新方法。使用PNP,设备可以完全配置,无需手动触摸配置。
对于FND,通过使用PNP,无需首先引导路由器。事实上,PNP所做的一切,是以安全的方式将其重定向到FND,并获取引导程序配置。
一旦设备中存在引导程序配置,此过程的其余部分将像传统引导式设备一样继续执行。
有多种使用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"
可以按如下方式定制:
有关使用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
从FND 4.1开始引入简易模式,虽然当时它称为演示模式,但允许您以不太安全的方式运行FND。虽然不建议将其用于生产,但这是开始使用的好方法。
使用简单模式时,您可以重点关注PNP进程、引导和路由器配置。如果某些功能不起作用,则无需怀疑隧道建立或证书。
将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
最后三行在配置文件中进行了更改。
更改文件后,请重新启动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完成其余配置。
在配置过程的此刻添加设备可能听起来有点不合逻辑,但不幸的是,在添加某些设备类型之前,部分配置不可用。
这样做是为了避免GUI因不同设备引入不同选项而过于繁忙。
在此,我们尝试向FND添加IR809。
CSV如下所示:
deviceType,eid,adminUsername,adminPassword,ip ir800,IR809G-LTE-GA-K9+JMX2022X04S,fndadmin,C1sc0123!,10.48.43.250
CSV中的字段如下:
要添加此设备,请连接到GUI并导航到设备>字段设备>资产>添加设备,如图所示。

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

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

由于添加了deviceType ir800设备,此时适用的模板和组将在GUI中可用。
由于FND是为演示模式配置的,因此需要更改调配URL以使用HTTP。导航到Admin > Provisioning Settings以便执行以下操作:

将IoT-FND URL更改为http://<FND IP>:9121
接下来,配置两个最低引导和配置模板。
第一个配置称为路由器引导程序配置模板,是指使用PNP成功与FND联系后推送到路由器的配置。
如果PNP未使用,则是在启动过程中手动或出厂时置于路由器上的配置。此配置包含的信息恰好足以使路由器在FND中开始注册过程。
第二个模板称为配置模板,是添加到设备当前运行配置的配置。事实上,它可以看作是对现有配置的增量。
在大多数情况下,这会导致奇怪的情况,因此建议先清除路由器上的所有配置,然后再将其添加到FND。
要设置Router Factory Reprovision模板,请导航到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>
要设置配置模板,请导航到Config > Device Configuration > Edit Configuration Template并添加此模板:
<#-- 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将其添加到FND。
显然,如果是新设备,则可以跳过此步骤。
最简单的方法是使用命令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。
此时,所有前提条件都已完成,您可以启动PNP流程。在此实例中手动完成。
在生产环境中,PNP很可能与DHCP选项43一起使用。这意味着路由器一旦启动,就会收到IP和PNP配置,您可以跳过此步骤和下一步。
要在没有DHCP的情况下在IR800上手动配置PNP,您需要指定请求的目标,即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联系。
如果一切顺利,设备将经历以下过程:
您可以在FND server.log中跟踪进程。
在GUI中,导航到Unheard > Bootstrapping > Bootstrapped时,您将看到设备移动
引导完成后,路由器具有替代的Router Factory Reprovision模板,其行为类似于没有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注册。您可以看到在该输出中,路由器开始注册过程前还剩下9分30秒。
您可以等待计时器完成,也可以立即手动执行cg-nms-register配置文件:
IR800-Bootstrap#cgna exec profile cg-nms-register
使用本部分可确认配置能否正常运行。
如图所示,设备在FND中应变为UP状态。

本部分提供了可用于对配置进行故障排除的信息。
要排除引导过程故障,请检查以下项:
要排除注册过程的故障,请检查以下项:
反馈