写了一个叫 address-book 的玩具项目

💡 原文中文,约3400字,阅读约需9分钟。
📝

内容提要

介绍了实现 Packer Plugin 时如何获取新建虚拟机的 IP 地址,通过捕获 DHCP 和 ARP 数据包并解析其中的信息,提供了使用 Golang 和 libpcap 库编写程序的示例代码,并将捕获到的 IP/MAC 地址记录在内存数据库中,提供了查询和列出所有地址记录的接口。

🎯

关键要点

  • 在实现 Packer Plugin 时,如何获取新建虚拟机的 IP 地址是一个难题。
  • 虚拟机通常通过 VM Tools 获取 IP 地址,但官方镜像不携带这些工具。
  • 可以通过捕获 DHCP 和 ARP 数据包来获取虚拟机的 IP 地址。
  • DHCP 获取 IP 地址的流程包括 DISCOVER、OFFER、REQUEST 和 ACK 四个步骤。
  • 通过解析 DHCP 数据包中的信息,可以获取虚拟机的 IP 地址。
  • ARP 协议用于将 IP 地址映射到物理地址(MAC 地址),可以通过 ARP 数据包获取 IP 地址。
  • 使用 libpcap 库和 Golang 编写程序来捕获网络流量。
  • 程序通过设置过滤器只关注 DHCP 和 ARP 数据包。
  • 捕获到的 IP/MAC 地址会记录在内存数据库中,提供查询接口。
  • 程序可以根据 IP 查 MAC 或根据 MAC 查 IP,并列出所有地址记录。
➡️

继续阅读