此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 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后,您可以启动VM,并显示登录屏幕,如图所示。
OVA文件的默认密码为:
步骤3.使用Cisco用户和密码登录,然后导航到Applications > System Tools > Settings > Network。添加有线配置文件,在IPv4选项卡中,设置所需的IP地址或DHCP,如图所示。
步骤4.单击Apply并切换连接关闭/打开,以确保应用新设置。
此时,您应该能够使用浏览器和IP地址(如图所示)导航到FND GUI。
步骤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以来,便已引入了Easy模式,尽管它在当时被称为演示模式,允许您以不太安全的方式运行FND。虽然不建议在生产中使用,但这是开始使用的好方法。
使用easy模式,您可以专注于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在不同设备引入不同选项时过于占用。
在此,我们尝试将IR809添加到FND。
CSV如下所示:
deviceType,eid,adminUsername,adminPassword,ip ir800,IR809G-LTE-GA-K9+JMX2022X04S,fndadmin,C1sc0123!,10.48.43.250
CSV中的字段为:
要添加此设备,请连接到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的配置/准备工作已完成,您可以从准备路由器开始。
如果要调配的设备已包含配置或之前已使用过,最好先完全清除路由器的配置,然后再将其添加到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。
此时,所有必备条件均已完成,您可以启动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联系。
如果一切顺利,设备将通过以下设备:
您可以在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状态,如图所示。
本部分提供了可用于对配置进行故障排除的信息。
要对引导启动过程进行故障排除,请检查以下项:
要对注册过程进行故障排除,请检查以下项: