Skip to content

IP地址管理

IP 地址管理是 IPAM 系统的核心功能,提供完整的 IP 地址生命周期管理,包括分配、监控、扫描等功能。

IP 地址生命周期

IP 地址在系统中经历以下生命周期状态:

未分配 (unallocated) → 预分配 (preallocated) → 已分配 (allocated)

                        回收 → 未分配

状态说明

状态说明可转移状态
未分配IP 地址尚未分配使用预分配、已分配
预分配IP 地址已预留,待正式使用已分配、未分配
已分配IP 地址已正式分配使用未分配

IP 地址分配

分配方式

  • 手动分配:管理员手动指定 IP 地址进行分配
  • 自动分配:系统自动选择可用的 IP 地址
  • 批量分配:一次性分配多个 IP 地址

分配信息

分配 IP 地址时需要填写以下信息:

go
type IPAddress struct {
    IP                string    // IP地址
    Hostname          string    // 主机名
    Description       string    // 描述
    AllocationStatus  string    // 分配状态
    ProjectID         *int      // 所属项目
    DepartmentID      *int      // 所属部门
    UnitID            *int      // 所属单位
    UserContactID     *int      // 使用人
    MacAddress        string    // 手动记录的MAC地址
    CustomFields      JSON      // 自定义字段
}

自动部门绑定

当 IP 绑定到项目时,系统自动:

  1. 获取项目所属的部门 ID
  2. 获取项目所属的单位 ID
  3. 自动设置 IP 的部门 ID 和单位 ID
  4. 确保组织归属一致性

在线状态监控

系统实时监控 IP 地址的在线状态。

监控机制

  • Ping 检测:定期 ping IP 地址检测在线状态
  • 状态记录:记录 IP 的最后在线时间
  • 状态变更:在线状态变化时自动更新
  • 历史记录:保留状态变更历史

状态字段

go
type IPAddress struct {
    IsOnline          bool      // 在线状态
    Status            string    // 使用状态(unused/used)
    LastSeen          time.Time // 最后在线时间
}

监控配置

在配置文件中设置监控参数:

toml
[monitoring]
enabled = true
interval = 300  # 监控间隔(秒)
max_concurrent = 100  # 最大并发数

MAC 地址管理

系统支持手动记录和自动扫描两种方式获取 MAC 地址。

手动记录

管理员可以手动输入 MAC 地址:

  • 格式验证:自动验证 MAC 地址格式(xx:xx:xx:xx:xx:xx)
  • 唯一性检查:检查 MAC 地址是否已被使用
  • 批量编辑:支持批量修改 MAC 地址

自动扫描

系统通过 ARP 扫描自动发现 MAC 地址:

go
// MAC 扫描结果
type MACResult struct {
    IP         string    // IP地址
    MACAddress string    // MAC地址
    Timestamp  time.Time // 扫描时间
}

扫描流程:

  1. 发现阶段:发送 ARP 请求发现网络设备
  2. 记录阶段:记录发现的 MAC 地址
  3. 更新阶段:更新 IP 地址的扫描 MAC 地址字段
  4. 对比阶段:对比手动记录和扫描结果

MAC 地址字段

go
type IPAddress struct {
    MacAddress        string    // 手动记录的MAC地址
    ScannedMacAddress string    // 扫描获取的MAC地址
}

IP 地址查询

系统提供灵活的 IP 地址查询功能。

查询条件

  • IP 地址:精确查询或模糊查询
  • 子网:按子网筛选
  • 状态:按分配状态筛选
  • 在线状态:按在线状态筛选
  • 组织归属:按单位、部门、项目筛选
  • 使用人:按使用人筛选
  • MAC 地址:按 MAC 地址查询
  • 自定义字段:按自定义字段值查询

查询示例

GET /api/ip-addresses?
    subnet_id=1&
    allocation_status=allocated&
    is_online=true&
    department_id=2&
    page=1&
    page_size=20

IP 地址统计

系统提供多维度的 IP 地址统计信息。

统计维度

  • 子网统计:子网内 IP 总数、已分配数、使用率
  • 部门统计:各部门的 IP 使用情况
  • 项目统计:各项目的 IP 使用情况
  • 状态统计:各状态(未分配/预分配/已分配)的数量
  • 在线统计:在线/离线 IP 数量

统计报表

json
{
  "total_ips": 254,
  "allocated": 120,
  "preallocated": 30,
  "unallocated": 104,
  "online": 98,
  "offline": 56,
  "usage_rate": "47.2%"
}

批量操作

批量分配

一次性分配多个 IP 地址给同一项目:

  1. 选择 IP 地址范围
  2. 指定项目和部门
  3. 填写共同信息(主机名前缀、描述等)
  4. 执行批量分配

批量释放

批量释放不再使用的 IP 地址:

  1. 选择要释放的 IP 地址
  2. 确认释放操作
  3. 系统重置 IP 状态为"未分配"
  4. 清空组织和项目关联

批量修改

批量修改 IP 地址的属性:

  • 修改所属项目
  • 修改使用人
  • 修改描述信息
  • 修改自定义字段

API 接口

IP 地址管理接口

方法路径说明
GET/api/ip-addresses获取 IP 列表
GET/api/ip-addresses/:id获取 IP 详情
POST/api/ip-addresses创建 IP 地址
PUT/api/ip-addresses/:id更新 IP 地址
DELETE/api/ip-addresses/:id删除 IP 地址
PUT/api/ip-addresses/:id/allocate分配 IP
PUT/api/ip-addresses/:id/release释放 IP

查询接口

方法路径说明
GET/api/ip-addresses/stats获取统计信息
GET/api/ip-addresses/available获取可用 IP
POST/api/ip-addresses/batch-allocate批量分配
POST/api/ip-addresses/batch-release批量释放

最佳实践

IP 分配策略

  1. 预留空间:为未来发展预留足够的 IP 地址
  2. 按功能分组:不同功能使用不同的 IP 段
  3. 文档记录:详细记录每个 IP 的用途
  4. 定期清理:定期回收不再使用的 IP

监控策略

  1. 合理设置间隔:根据网络规模设置监控间隔
  2. 关注异常:及时处理长期离线的 IP
  3. 对比检查:定期对比手动和扫描的 MAC 地址
  4. 告警设置:对关键 IP 设置离线告警

安全建议

  1. 访问控制:限制 IP 管理权限
  2. 操作审计:记录所有 IP 操作日志
  3. 变更通知:IP 变更时通知相关人员
  4. 备份恢复:定期备份 IP 数据

基于 MIT 许可发布