如何通过PowerDNS API删除指定IP的A记录?
通过IP地址删除DNS A记录的方法
直接仅通过IP地址发起删除操作是无法实现的,因为DNS API的PATCH请求要求明确指定记录的name(域名)和type(记录类型),无法仅通过IP定位目标记录。不过可以通过两步操作达成需求:
- 先查询目标Zone中所有指向该IP的A记录,获取对应的域名
- 利用获取到的域名执行删除操作
步骤一:查询指向目标IP的A记录
通过curl发送GET请求获取Zone的全量记录,再过滤出目标IP对应的域名(这里假设你要删除的IP是192.168.1.100,需要提前安装jq工具解析JSON响应):
curl -H 'X-API-Key: secret' http://127.0.0.1:8081/api/v1/servers/localhost/zones/zonename | jq -r '.rrsets[] | select(.type == "A") | .records[] | select(.content == "192.168.1.100") | .name'
步骤二:删除查询到的A记录
将第一步得到的域名代入DELETE请求即可,比如查到的域名是test.fqdn.,使用你熟悉的命令:
curl -X PATCH --data '{"rrsets": [{"changetype": "DELETE", "type": "A", "name": "test.fqdn."}]}' -H 'X-API-Key: secret' http://127.0.0.1:8081/api/v1/servers/localhost/zones/zonename
如果有多个域名指向同一IP,可以批量构造请求体一次性删除:
curl -X PATCH --data '{"rrsets": [ {"changetype": "DELETE", "type": "A", "name": "test1.fqdn."}, {"changetype": "DELETE", "type": "A", "name": "test2.fqdn."} ]}' -H 'X-API-Key: secret' http://127.0.0.1:8081/api/v1/servers/localhost/zones/zonename
注:从你的API URL格式判断,这应该是PowerDNS的API,它不支持直接通过IP过滤查询,必须先获取全量记录再本地筛选。
内容的提问来源于stack exchange,提问作者MoRS
相关产品推荐
相关产品推荐

