由于没有找到适配型号来运行python环境的设备,暂时只做了ZTP前半部分,搭建DHCP&TFTP环境,设备主动获取地址并下载脚本文件的测试。
ZTP 即 Zero Touch Provisioning
当支持零接触置备的设备启动且未找到启动配置时,该设备将进入零接触置备模式。设备找到动态主机控制协议(DHCP)服务器,使用其接口IP地址,网关和域名系统(DNS)服务器IP地址进行自我引导,并启用来宾Shell。然后,设备获取TFTP服务器的IP地址或URL,并下载Python脚本来配置设备。
锐捷ZAM测试
其实ZAM就是ZTP解决方案的一个实践体现, (Zero-configure Automatic Manage零配置自动部署)用于实现空配置网络设备的自动部署,实现设备即插即用,降低规模部署工作量以及部署中的错误,实现统一部署管理,简化海量设备的运维部署。
ZAM 的整体解决方案分三步实现
第一步,设备零配置接入网络,通过 DHCP 从 ZAM 控制服务器上申请固定的 IP 地址, ZAM服务器在响应 IP 地址申请的应答中同时携带 TFTP。服务器的 IP 地址和该设备对应的配置文件名。上线设备自动部署申请到的IP 地址,解析响应中的 TFTP 服务器的 IP 地址及对应的配置文件名。
第二步,上线设备从 ZAM 控制服务器上通过 TFTP(TFTP服务器也可以单独搭建)下载对应的配置信息。
第三步,上线设备加载配置文件,完成上线部署。
一、DHCP&TFTP环境搭建
在windows系统环境下,找了诸如3cdaemon或dhcpsrv这些软件来提供DHCP&TFTP服务的支持,实际测试效果并不是很好,且服务log上查看也并不直观方便,因此选择了使用hyper-v虚拟机通过Linux搭建Dnsmasq。
现在已众所周知,在win10上虚拟机环境,微软本身提供hyper-v支持最好,其他vmware或virtualbox限于需更高版本,应用起来不太方便。
Dnsmasq可以同时提供DHCP&TFTP的服务,集中在一起更便于管理和控制。
参考:DNSmasq详细解析及详细配置 - 云+社区 - 腾讯云 (tencent.com)
Dnsmasq只支持Linux系统环境,这里选择使用了Ubuntu18,虚拟机系统安装完后,直接使用apt部署Dnsmasq即可。
Dnsmasq配置文件
/etc/dnsmasq.conf
log-facility=/var/log/dnsmasq/dnsmasq.log # 手动在此目录下创建日志文件
interface=eth0 # 绑定网卡接口
bind-interfaces
dhcp-host=00:15:5d:96:5d:0a,172.16.0.1 # 指定dhcp server的地址
dhcp-range=172.16.0.2,172.16.0.250,255.255.255.0,1h # 地址池和租约
dhcp-option=150,172.16.0.1 # 指定option 150 tftp server的地址
dhcp-option=67,zam.py # 指定bootfile的名称(脚本名称)
dhcp-boot=172.16.0.1/zam.py # 指定bootfile在tftp上的文件路径,前边的ip就提供tftp服务的地址
log-dhcp # 启动记录dhcp日志
enable-tftp # 启用tftp功能
enable-tftp=eth0 # 指定提供tftp的网卡接口
tftp-root=/mnt/tftp # 指定tftp根目录,上边bootfile的脚本文件要放到这个目录下,tftp目录要设置可读权限
Linux系统网卡配置的ip地址与dhcp和tftp相同,都是172.16.0.1
由于是虚拟机环境,需要将虚拟网络桥接到物理网络,即虚拟机网卡接口跟实际交换机入网接口需要一个二层环境(广播域)中,这样才能完成dhcp地址获取的交互。
就方案本身,二层环境最为合适,但通过三层网络环境中继也可以实现dhcp。
hyper-v不同于,v