零接触配置
全自动部署可在您的新瞻博网络设备上自动安装或升级软件,只需最少的人工干预。
全自动部署概述
全自动部署 (ZTP) 允许您在网络中自动配置新的瞻博网络设备,只需极少的人工干预。您可以使用管理端口或网络端口(具体取决于您的设备)连接到网络。当您将设备物理连接到网络并以默认出厂配置启动时,设备将升级(或降级)软件版本并自动从网络安装配置文件。配置文件可以是配置,也可以是脚本。通过使用脚本,您可以创建特定于设备的配置文件,并对 Web 服务器执行 HTTP 请求作,以下载特定的配置文件或软件版本。
要在网络上查找必要的软件映像和配置文件,设备将使用您在动态主机配置协议 (DHCP) 服务器上配置的信息。如果未将 DHCP 服务器配置为提供此信息,设备将使用预安装的软件和默认出厂配置启动。
对于 Junos OS 演化版,全自动部署 (ZTP) 可动态检测 WAN 接口的端口速度,并使用此信息创建相同速度的 ZTP 服务器端口。运行 Junos OS 演化版的设备支持通过路由引擎 0 (RE0) 的管理接口或 WAN 接口自动进行设备配置和软件升级。
要查看哪些平台支持 ZTP,请在浏览器中转至 功能浏览器。在“功能浏览器”页面的 “探索功能 ”部分中,选择 “所有功能”。在 “按功能系列分组的功能 ”框中,选择“全自动部署”。您也可以在 “搜索功能 ”编辑框中键入功能的名称。有关如何扩展 ZTP 支持的更多详细信息,请参阅本主题末尾的发布历史记录表。
ZTP 工作流程
当设备以默认配置启动时,将发生以下事件:
-
DHCP 客户端在支持的接口上运行。
-
DHCP 服务器会配置一个 IP 地址,并在与 ZTP 进程相关的回复中包含多个 DHCP 选项。
-
设备可以处理 DHCP 选项并查找配置文件、执行脚本以及升级和/或降级软件。
-
如果映像和配置文件都存在,则将安装映像并应用配置。
-
如果只有映像文件存在,则映像将安装在设备上。
-
如果映像与设备上已安装的映像相同,ZTP 将继续并跳过安装步骤。
-
如果设备无法获取映像,ZTP 将尝试再次获取映像。
-
如果映像损坏,安装将失败。
如果由于任何原因安装失败,ZTP 将在其他接口上重试。
-
如果只有配置文件,则下载配置。
如果文件的第一行由 #!字符后跟解释器路径,则该文件被视为脚本,脚本由解释器执行。如果脚本返回错误,ZTP 将在其他接口上重试。
如果配置文件无法下载,ZTP 进程将尝试重新下载。
如果配置文件损坏、出现语法错误或包含设备不支持的命令,则设备将无法提交,并且 ZTP 将在其他接口上重试。
-
如果没有映像或配置文件,ZTP 将在其他接口上重试。
-
如果没有文件服务器信息,ZTP 将在其他接口上重试。
-
完成配置后,ZTP 进程被视为成功并终止。
使用脚本置备设备
在 ZTP 过程中,当您连接和启动新的网络设备时,设备会向 DHCP 服务器请求 IP 地址。服务器提供 IP 地址,如果配置了,则提供设备的软件映像和配置文件的文件名和位置。配置文件可以是配置,也可以是脚本。
如果提供了配置文件,则作系统将根据文件的第一行确定该文件是否为脚本。如果第一行包含后跟解释器路径的字符 #!
,则作系统会将该文件视为脚本,并使用指定的解释器执行该文件。
如果脚本返回错误(即非零值),ZTP 将在其他接口上重试。
表 1 概述了在 ZTP 过程中支持的脚本类型、相应的解释器路径以及支持该脚本类型的平台。
脚本类型 |
解释器路径 |
平台支持 |
---|---|---|
Shell 脚本 |
|
所有设备 |
SLAX 脚本 |
|
所有设备 |
Python 脚本 |
|
运行 Junos OS 的设备具有增强的自动化功能 运行 Junos OS 演化版的设备 |
出于安全原因,Junos OS 对在运行 Junos OS 的设备上运行未签名的 Python 脚本有严格的要求。只有运行具有增强自动化功能的 Junos OS 的设备和运行 Junos OS 演化版的设备才支持在 DHCP 选项 43 子选项 01 中使用未签名的 Python 脚本。
如果作系统找不到解释器路径后面的字符 #!
,则会将文件视为文本格式的配置,并将配置加载到设备上。
全自动部署重启流程触发器
当发生以下任一事件时,ZTP 将重新启动:
-
请求配置文件、脚本文件或映像文件失败。
-
配置文件不正确,提交失败。
-
没有配置文件,也没有可用的映像文件。
-
映像文件已损坏,安装失败。
-
没有可用的文件服务器信息。
-
DHCP 服务器未配置有效的 ZTP 参数。
-
当所有 DHCP 客户端接口均未进入绑定状态时。
-
在 Junos OS 演化版设备上,如果下载文件失败,ZTP 将重新启动。
发生上述任一事件时,ZTP 将在所有 DHCP 客户端配置的接口(管理和网络)上重置 DHCP 客户端状态机,然后重新启动状态机。重新启动状态机可使 DHCP 客户端获取最新的 DHCP 服务器配置参数。
在 ZTP 重新启动之前,必须经过大约 15 到 30 秒,以便有足够的时间来构建已绑定和未绑定的 DHCP 客户端接口列表。
绑定和未绑定的 DHCP 客户端接口列表可以包含:
-
没有条目。
-
多个 DHCP 客户端接口。
已从 DHCP 服务器接收到所有 ZTP 参数(软件映像文件、配置文件和文件服务器信息)的 DHCP 客户端接口将获得优先权。
ZTP 尝试从文件服务器下载软件映像和配置文件。如果下载失败,ZTP 将清除该接口上的 DHCP 客户端绑定,并重新启动其他接口上的状态机。
ZTP 重启过程会一直持续到软件升级成功,或者作员手动提交用户配置并删除 ZTP 配置为止。
在运行 Junos OS Evolved 的 PTX10008 路由器上实现零接触配置
全自动部署 (ZTP) 允许您在网络中自动配置路由器,只需最少的手动干预。从 Junos OS 演化版 20.1R1 开始,PTX10008 设备可通过 路由引擎 0 (RE0) 的管理接口自动进行设备配置和软件升级。
ZTP 在出厂默认模式下在 PTX10008 设备上启用。您可以将管理接口 (re0:mgmt-0) 连接到具有动态主机配置协议 (DHCP) 服务器的网络,然后将 ZTP 配置添加到 DHCP 服务器。 show interfaces re0:mgmt-0
在PTX10008设备上使用命令查找要用于 DHCP 服务器配置的接口MAC 地址。
当PTX10008设备能够联系DHCP服务器并检索ZTP参数时,会根据这些参数执行以下ZTP作:
-
使用指定的协议获取指定的映像和/或配置文件。
-
如果指定了映像,ZTP 会在两个路由引擎上安装映像并重新启动设备。
-
如果指定了配置文件:
-
如果文件是 Junos 配置,则 ZTP 会在设备上应用该配置。
-
如果文件是脚本,则 ZTP 会在设备上执行该脚本。
-
使用 DHCP 选项进行全自动部署
全自动部署 (ZTP) 允许您自动配置添加到网络中的瞻博网络设备。您可以使用要执行的脚本或要加载的配置文件来配置任何受支持的设备。您还需要使用此过程中提供的所需信息配置 DHCP 服务器,以便使用 ZTP。
ZTP 要求您的设备处于出厂默认状态。设备出厂时使用预装软件和出厂默认配置启动。在当前没有出厂默认配置的设备上,可以发出 request system zeroize
命令。
开始之前:
-
确保设备有权访问以下网络资源:
-
提供软件映像和配置文件在网络上位置的 DHCP 服务器
有关配置说明,请参阅 DHCP 服务器文档。
-
存储软件映像和配置文件的文件传输协议(匿名 FTP)、超文本传输协议 (HTTP)、安全超文本传输协议 (HTTPS) 或简单文件传输协议 (TFTP) 服务器
注意:尽管支持 TFTP,但我们建议您改用 FTP 或 HTTP,因为这些传输协议更可靠。
谨慎:HTTP URL 的长度限制为 256 个字符。
-
用于执行反向 DNS 查找的域名系统 (DNS) 服务器(不受支持)。
-
(选答)用于在网络上执行时间同步的 NTP 服务器
-
(选答)用于管理系统日志消息和警报的系统日志 (syslog) 服务器。
在 ZTP 期间,系统日志消息将转发到此系统日志服务器。
-
-
找到并记录设备的 MAC 地址。
在PTX10008设备上,管理 MAC 地址位于路由引擎上。
在设备执行软件更新过程中,您无法提交配置。如果在设备执行配置文件自动安装过程中提交配置,则该过程将停止,并且不会从网络下载配置文件。
要使用 DHCP 选项为设备启用全自动部署,请执行以下作:
使用 DHCPv6 选项进行全自动部署
Junos OS Flex 映像不支持使用 DHCPv6 选项的全自动部署 (ZTP)。Flex 映像的文件名中包含单词“flex”。下面是 Flex 映像的示例文件名: jinstall-host-qfx-5e-flex-x86-64-20.4R3.8-secure-signed.tgz。
DHCPv6 协议没有用于IA_NA(非临时地址的身份关联)用于学习和安装子网路由的子网选项。相反,子网路由是通过邻接方发现协议安装的。
在 IPv6 中,设备使用路由器通告 (RA) 消息定期通告 IPv6 前缀以及其他链路参数。在客户端(运行 ZTP 的瞻博网络设备)上,一旦 DHCPv6 客户端被绑定,邻居发现协议 (NDP) 将学习这些前缀并通过客户端接口安装前缀路由,下一跃点作为网关设备本地地址的链路。
在客户端设备上,路由器通告配置默认与 DHCPv6 配置一起启用。
-
确保设备有权访问以下网络资源:
-
提供软件映像和配置文件在网络上位置的 DHCP 服务器
有关配置说明,请参阅 DHCP 服务器文档。
-
存储软件映像和配置文件的文件传输协议(匿名 FTP)、简单文件传输协议 (TFTP)、超文本传输协议 (HTTP) 或安全超文本传输协议 (HTTPS) 服务器。
谨慎:HTTP URL 的长度限制为 256 个字符。
-
-
找到并记录设备上打印的 MAC 地址。
全自动部署 (ZTP) 允许您自动配置添加到网络中的瞻博网络设备。您可以使用要执行的脚本或要加载的配置文件来配置任何受支持的设备。
要使用 ZTP,请配置 DHCP 服务器以提供所需的信息。如果未将 DHCP 服务器配置为提供此信息,设备将使用预安装的软件和默认出厂配置启动。如果您的设备未处于出厂默认状态,您可以发出命令 request system zeroize
。
或者,您可以为 phone-home 服务器或重定向服务器配置 HTTP 代理服务器。当 phone-home 客户端通过 DHCP option 17 子选项 8 接收到有关 HTTP 代理服务器的信息时,它将与代理服务器创建一个 HTTPS 透明隧道。隧道建立后,phone-home 客户端将使用隧道作为 phone-home 服务器或重定向服务器的代理。phone-home 客户端通过隧道将软件映像和配置文件下载到设备上。引导完成后,设备将重新启动,隧道将退出。
从 Junos OS 20.2R1-S1 版本开始,MX 系列、EX3400、EX4300、QFX5100 和 QFX5200 交换机支持 DHCPv6 客户端。DHCPv4 和 DHCPv6 客户端都作为默认配置的一部分包含在内。在引导过程中,设备首先使用 DHCPv4 客户端向 DHCP 服务器请求有关映像和配置文件的信息。设备按顺序检查 DHCPv4 绑定。如果其中一个 DHCPv4 绑定失败,设备将继续检查绑定,直到预配成功。但是,如果没有 DHCPv4 绑定,设备将检查 DHCPv6 绑定,并遵循与 DHCPv4 相同的过程,直到可以成功预配设备。DHCP 服务器使用 DHCPv6 选项 59 和 17 以及适用的子选项在自身与 DHCP 客户端之间交换与 ZTP 相关的信息。
在设备执行软件更新过程中,您无法提交配置。如果在设备执行配置文件自动安装过程中提交配置,则该过程将停止,并且不会从网络下载配置文件。
要通过 DHCPv6 选项对设备使用全自动部署:
监控全自动部署
您可以使用控制台和作模式命令来监控全自动部署。
对于 Junos OS 演化版,要监控全自动部署,请使用 show system ztp operational mode 命令。
使用控制台监控 Junos OS 演化版中的全自动部署
目的
系统日志文件提供有关自动升级过程状态、绑定和未绑定的 DHCP 客户端接口列表、文件服务器的 IP 地址、映像和配置文件的名称和位置,以及获取配置和映像文件的成功和失败尝试的信息。
行动
使用控制台中的信息监控自动升级过程。
下面是 Junos OS 演化版的输出示例。
164.319243] ztp.py[15456]: 2019-07-11 17:54:25 INFO: ZTP: Booted with factory settings set auto-image-upgrade ztp.py[15456]: 2019-07-11 17:54:26 INFO: ZTP: loading config [ 184.456977] ztp.py[15456]: 2019-07-11 17:54:45 INFO: ZTP: Releasing prior dhcp state [ 184.520075] ztp.py[15456]: 2019-07-11 17:54:46 INFO: ZTP: initializing [ 184.520736] ztp.py[15456]: 2019-07-11 17:54:46 INFO: ZTP: Interface vmb0 Watching path /var/db/scripts/ztp/ztpopt.vmb0 [ 184.566657] ztp.py[15456]: 2019-07-11 17:54:46 INFO: ZTP: Interface vmb0v6 Watching path /var/db/scripts/ztp/ztpopt6.vmb0 [ 184.603976] ztp.py[15456]: 2019-07-11 17:54:46 INFO: ZTP: remove "chassis auto-image-upgrade" from config to abort ZTP [ 184.605897] ztp.py[15456]: 2019-07-11 17:54:46 INFO: ZTP: send DHCP discover on interface vmb0 [ 184.606083] ztp.py[15456]: 2019-07-11 17:54:46 INFO: ZTP: send DHCP discover on interface vmb0v6 [ 205.043925] ztp.py[15456]: 2019-07-11 17:55:06 INFO: ZTP: loading options config [ 225.528749] ztp.py[15456]: 2019-07-11 17:55:27 INFO: ZTP:(vmb0) Running: ['/sbin/dhclient', '-1', '-v', 'vmb0', '-cf', '/var /db/scripts/ztp/dhclient.conf', '-pf', '/var/db/scripts/ztp/vmb0.pid4'] [ 227.349638] ztp.py[15456]: 2019-07-11 17:55:28 INFO: ZTP: loading options config [ 248.512666] ztp.py[15456]: 2019-07-11 17:55:50 INFO: ZTP:(vmb0) Running: ['/sbin/dhclient', '-6', '-D', 'LL', '-1', '-v', 'v mb0', '-cf', '/var/db/scripts/ztp/dhclient6.conf', '-pf', '/var/db/scripts/ztp/vmb0.pid6'] [ 309.448411] ztp.py[15456]: 2019-07-11 17:56:50 ERROR: ZTP:(vmb0v6) Unable to get DhcpInfo [ 309.452340] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 ipaddr is 10.10.213.111 [ 309.453114] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 subnetmask is 255.255.255.0 [ 309.453379] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 option150addr is 10.10.213.1 [ 309.453619] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 option66addr is 10.10.213.1 [ 309.453836] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 host-name is sw-s3-u8-07 [ 309.454093] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 ntp server is ['10.129.255.62'] [ 309.454267] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 ntp server is ['10.129.255.62', '10.129.255.63'] [ 309.454451] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 log server is 10.10.213.1 [ 309.454673] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 image path is /ZTP_IMAGES/junos-evo-install-ptx-chassis-x 86-64-19.4EVO.iso [ 309.454886] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 config path is /ZTP_CONFIG/sw-s3-u8-07.cfg [ 309.455217] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: intf vmb0 transfertype is tftp [ 309.457209] ztp.py[15456]: 2019-07-11 17:56:50 INFO: ZTP: Chose interface vmb0: [ 309.633177] ztp.py[15456]: 2019-07-11 17:56:51 INFO: ZTP: loading options config [ 333.584288] ztp.py[15456]: 2019-07-11 17:57:15 INFO: ZTP: downloading image file/ZTP_IMAGES/junos-evo-install-ptx-chassis-x86 -64-19.4-20190708.2-EVO.iso [ 333.584840] ztp.py[15456]: 2019-07-11 17:57:15 INFO: ZTP: downloading image file local /var/tmp/junos-evo-install-ptx-chassis -x86-64-19.4-20190708.2-EVO.iso [ 554.625986] ztp.py[15456]: No such vrf (None) [ 554.628523] ztp.py[15456]: 2019-07-11 18:00:56 INFO: ZTP: Downloaded image file [ 554.629289] ztp.py[15456]: 2019-07-11 18:00:56 INFO: ZTP: Downloading config file /ZTP_CONFIG/sw-s3-u8-07.cfg [ 555.198176] ztp.py[15456]: No such vrf (None) [ 555.200076] ztp.py[15456]: 2019-07-11 18:00:56 INFO: ZTP: Downloaded config file [ 555.201882] ztp.py[15456]: 2019-07-11 18:00:56 INFO: ZTP: loading options config 577.427218] ztp.py[15456]: 2019-07-11 18:01:18 INFO: ZTP: Upgrading image [ 577.427770] ztp.py[15456]: 2019-07-11 18:01:18 INFO: ZTP: Upgraded image localpath is /var/tmp/junos-evo-install-ptx-chassis-x86-64-19.4EVO.iso [ 577.483927] ztp.py[15456]: 2019-07-11 18:01:19 INFO: ZTP: Installing via CLI (/var/tmp/junos-evo-install-ptx-chassis-x86-64-19.4-20190708.2-EVO.iso) [ 577.484271] ztp.py[15456]: 2019-07-11 18:01:19 INFO: ZTP: Running: ['/usr/sbin/cli', '-c', 'show chassis hardware | display xml | match <name> | match "CB" | count'] [ 577.775918] ztp.py[15456]: 2019-07-11 18:01:19 INFO: ZTP: Dual-RE setup detected [ 577.776130] ztp.py[15456]: 2019-07-11 18:01:19 INFO: ZTP: Checking for second RE [ 577.776894] ztp.py[15456]: 2019-07-11 18:01:19 INFO: ZTP: Running: ['/usr/sbin/cli', '-c', 'show chassis hardware | display xml | match <name> | match "Routing Engine" | count'] [ 577.987278] ztp.py[15456]: 2019-07-11 18:01:19 INFO: Running: ['/usr/sbin/cli', '-c', 'request system software add /var/tmp/junos-evo-install-ptx-chassis-x86-64-19.4EVO.iso | display xml'] [ 738.153925] ztp.py[15456]: 2019-07-11 18:03:59 INFO: ZTP: wait returns: 0 [ 738.154148] ztp.py[15456]: 2019-07-11 18:03:59 INFO: ZTP: Return Code: 0 [ 738.154281] ztp.py[15456]: 2019-07-11 18:03:59 INFO: ZTP: Upgraded image status is 0 [ 738.154749] ztp.py[15456]: 2019-07-11 18:03:59 INFO: ZTP: Upgrade succeeded Rebooting [ 738.155372] ztp.py[15456]: 2019-07-11 18:03:5 Stopping Ethernet Bridge Filtering Tables...
意义
控制台显示 ZTP 的进度。
使用 show dhcp client binding 命令
目的
发出 show dhcp client binding
命令以显示 DHCP 客户端绑定信息
行动
发出 show dhcp client binding
命令以显示 DHCP 客户端的 IP 地址、DHCP 客户端的硬件地址、DHCP 客户端的 IP 地址租约到期的秒数、绑定表中 DHCP 客户端 IP 地址的状态以及具有活动客户端绑定的接口的名称。
显示 DHCP 客户端绑定
user@device# show dhcp client binding IP address Hardware address Expires State Interface 10.0.0.0 00:22:83:2a:db:dc 0 SELECTING irb.0 10.6.6.13 00:22:83:2a:db:dd 49201 BOUND vme.0 10.0.0.0 00:22:83:2a:db:df 0 SELECTING xe-0/0/0.0 10.0.0.0 00:22:83:2a:db:e0 0 SELECTING xe-0/0/1.0
意义
此命令的输出显示,有一个客户端接口已绑定,并且有三个接口正在从 DHCP 服务器接收 DHCP 提供。
使用 show dhcpv6 客户端绑定命令
目的
发出 show dhcpv6 client binding
命令以显示 DHCP 客户端绑定信息
行动
发出 show dhcp6 client binding
命令以显示 DHCPv6 客户端的 IP 地址、DHCPv6 客户端的硬件地址、DHCPv6 客户端的 IP 地址租约到期的秒数、绑定表中 DHCPv6 客户端 IP 地址的状态以及具有活动客户端绑定的接口的名称。
显示 DHCPv6 客户端绑定
user@device# show dhcpv6 client binding IP/prefix Expires State ClientType Interface Client DUID 2001:db8::10 57 SELECTING STATEFUL em0.0 LL0x3-54:4b:8c:d3:a2:34 2001:db8::10 46 SELECTING STATEFUL em2.0 LL0x3-54:4b:8c:d3:a2:35 2001:db8::10 38 SELECTING STATEFUL et-0/0/0:0.0 LL0x3-54:4b:8c:d3:a2:3b 2001:db8::10 530 BOUND STATEFUL et-0/0/0:1.0 LL0x3-54:4b:8c:d3:a2:3c
意义
此命令的输出显示,有一个客户端接口已绑定,并且有三个接口正在从 DHCP 服务器接收 DHCPv6 优惠。
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能浏览器 查看您使用的平台是否支持某项功能。