phpIPAM 是一款开源 IP 地址管理工具,它以子网和 IP 地址为核心,提供 VLAN、设备、机柜等扩展功能。开启 DNS 模块后,管理员可以在同一个界面里同时维护 IP 地址与 DNS 记录,不再需要在 DNS 服务器和 IPAM 系统之间来回切换。这种设计直接解决了两个系统数据脱节的问题,比如 IP 被回收但 A 记录仍然指向旧地址,或者 DNS 记录中的名称与 IPAM 中的设备名称不一致。

phpIPAM DNS管理模块的核心能力
phpIPAM 的 DNS 模块并不是一个完整的 DNS 服务器,而是提供 DNS 记录管理的界面与逻辑。它支持常见的记录类型,包括 A、AAAA、CNAME、MX、TXT、PTR 和 SRV 等。管理员可以为每个域设置默认 TTL(生存时间)、SOA(起始授权)参数以及名称服务器列表。这些配置会与实际的 DNS 服务(如 BIND、PowerDNS 或 Microsoft DNS)配合使用,phpIPAM 负责生成标准格式的记录数据,并可通过 API 推送到 DNS 服务器。
与单纯使用 DNS 管理面板不同,phpIPAM 的 DNS 模块最大的优势是与 IP 地址管理深度绑定。创建 A 记录时可以直接从已分配的子网中选择 IP,系统会自动校验该 IP 是否已被其他主机使用,避免冲突。同时,只要在 DNS 域设置中开启了自动创建反向记录功能,phpIPAM 就会根据正向 A 记录自动生成对应的 PTR 记录,确保正向与反向解析保持一致。
权限管理也是 DNS 模块的一个亮点。phpIPAM 支持按用户组或用户分配不同的域权限,例如只允许某组管理员修改 ipipp.com 域,而其他组只能查看。所有对 DNS 记录的增删改操作都会被记录到审计日志中,方便追踪变更历史。这种细粒度的权限模型在企业环境中非常实用,能够有效防止误操作导致 DNS 解析故障。
配置DNS域名与名称服务器
要在 phpIPAM 中使用 DNS 管理功能,首先需要在管理面板中创建 DNS 域。进入 Administration 菜单下的 DNS 选项,点击添加新域。这里需要填写域名(例如 ipipp.com)、默认 TTL(通常为 3600 秒)、SOA 主服务器名称以及负责人的邮箱地址。填写完成后保存,系统会自动生成该域的基础信息,并等待进一步关联名称服务器。
下一步是添加名称服务器(NS 记录)。在已创建的域页面中,选择 Nameservers 标签,可以添加一条或多条 NS 记录。每条记录需要指定名称服务器的完全限定域名(FQDN),例如 ns1.ipipp.com 和 ns2.ipipp.com。phpIPAM 不会自动配置实际的 DNS 服务器软件,它只是存储这些 NS 记录作为参考,同时可以配合导出功能生成 BIND 格式的 zone 文件,或通过 API 与外部 DNS 系统同步。
对于反向解析域,phpIPAM 也提供了便捷的配置方式。例如要为 192.168.1.0/24 网段生成 PTR 记录,可以创建 1.168.192.in-addr.arpa 这样的反向域。phpIPAM 会根据子网掩码自动建议正确的反向域名称,避免手动输入 in-addr.arpa 时出错。配置完成后,当管理员在正向域中创建 A 记录并填写 IP 地址时,系统会检查对应的反向域是否存在,若存在则自动创建或更新 PTR 记录。
创建和管理DNS记录
进入 phpIPAM 的 DNS 模块,选择目标域后,点击新建记录按钮即可开始添加解析记录。以创建一条 A 记录为例,记录类型选择 A,名称输入主机名(如 web01),TTL 可留空使用默认值。关键步骤在于 IP 地址的填写,phpIPAM 提供了一个搜索框,可以自动从已分配的子网中筛选出未被占用的 IP 地址。选中 IP 后,系统会同时显示该 IP 对应的设备名称、MAC 地址等信息,帮助管理员确认是否绑定正确的资源。
除了手动创建,phpIPAM 还支持从现有 IP 地址直接生成 DNS 记录。例如在 Tools 菜单中打开 IP addressing 页面,找到一个已分配的主机,点击操作按钮选择 Create DNS record。系统会自动打开新建 DNS 记录的表单,并预填主机名和 IP 地址,管理员只需选择记录类型和域即可完成关联。这种方式尤其适合批量补录 DNS 数据的场景,例如刚接手一个没有完整 DNS 文档的旧网络。
对于已有记录,phpIPAM 提供了灵活的查询和过滤功能。可以按记录类型、IP 地址、名称或修改时间筛选,也支持导出为 CSV 或 BIND zone 文件。若发现某条 A 记录指向的 IP 已经被回收或重新分配,可以直接在 DNS 模块中修改该记录,或通过关联功能查看该 IP 的当前状态。批量删除和修改 TTL 也可以在列表视图中使用复选框完成,提升了日常维护效率。
通过REST API自动化DNS操作
phpIPAM 提供了一套完整的 REST API,允许外部脚本和程序自动化管理 DNS 记录。使用 API 之前需要先进行认证,phpIPAM 支持基于用户名密码的 token 认证,也支持 API 密钥认证。推荐在脚本中使用 API 密钥,避免在代码中暴露管理员密码。认证成功后,后续请求需要在 HTTP 头中携带 token 字段,phpIPAM 会根据 token 判断权限并执行相应操作。
下面是一个使用 curl 调用 phpIPAM API 创建 DNS A 记录的示例。首先获取认证 token,然后使用该 token 创建一条指向 192.168.1.10 的 A 记录,主机名为 web01,所属域 ID 为 1。
# 步骤1:获取API认证token
curl -X POST "http://phpipam.ipipp.com/api/user/" \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"your_password"}'
# 步骤2:创建DNS A记录
curl -X POST "http://phpipam.ipipp.com/api/dns/" \
-H "Content-Type: application/json" \
-H "token: your_api_token" \
-d '{
"type": "A",
"name": "web01",
"domain_id": 1,
"ip": "192.168.1.10",
"ttl": 3600
}'如果要批量创建多条记录,可以在脚本中循环调用 API,或者使用 phpIPAM 提供的 PHP SDK 封装请求。需要注意的是,API 调用同样会经过 phpIPAM 的权限检查,如果当前 token 对应的用户没有目标域的写权限,请求会返回 403 错误。此外,创建记录时若启用了自动 PTR 生成功能,API 也会同步创建对应的反向记录,因此无需额外调用接口。对于生产环境,建议将 API 请求日志集中收集,便于排查异常操作。