【问题标题】:Delete specific dns record with dnspython when multiple are present当存在多个时,使用 dnspython 删除特定的 dns 记录
【发布时间】:2018-03-07 15:16:34
【问题描述】:

考虑 dns 服务器中的以下记录:

;; ANSWER SECTION:
test.example.com        3600  IN  TXT   "line1"
test.example.com        3600  IN  TXT   "line2"

是否可以删除其中一条记录并保留另一条记录?

执行删除时:

name = 'test.example.com.'
datatype = dns.rdatatype.from_text("TXT")
rdata = dns.rdata.from_text(dns.rdataclass.IN, dns_datatype, "line1")
update.present(name, rdata)
update.delete(name, rdata)

我收到 NXRRSET (8) 响应。

删除时:

name = 'test.example.com.'
datatype = dns.rdatatype.from_text("TXT")
update.present(name, datatype)
update.delete(name, datatype)

然后删除两条 TXT 记录(如预期的那样)。

我的示例是针对 TXT 记录的,但对于 A 和 PTR 等其他数据类型我也有同样的问题。删除相同名称和类型的多条记录中的 1 条似乎不起作用。

有什么建议吗?或者这不可能?

更新

当使用 nsupdate cli 工具时,这似乎是可行的。当我发送以下命令时,仅删除 2 个条目中的 1 个:

$ nsupdate -v -k example.com.key
server ns.example.com
nupdate delete test.example.com. TXT line1
send

由于它适用于 dns 更新,我会在 dnspython github 页面上提出问题

【问题讨论】:

  • 您需要全部检索它们,然后将它们全部删除并设置您希望保留的那些。
  • @PatrickMevzek 这就是我害怕的 :-) 当然可行,但需要更多编码。如果动态 dns 更新预见到它会很方便。
  • 我们称它们为RRSets:记录是一个集合,即一个无序集合。因此,您不能从中挑选一个。

标签: dns dnspython


【解决方案1】:

在使用 nsupdate 进行更多测试后,解决方案变得清晰。当使用当前的 prereq 时,我只需要将它们全部添加,这样 preq 就可以满足了。以下代码使用present,只删除"line1" txt记录:

name = 'test.example.com.'
datatype = dns.rdatatype.from_text("TXT")
rdata = dns.rdata.from_text(dns.rdataclass.IN, dns_datatype, "line1")
rdata2 = dns.rdata.from_text(dns.rdataclass.IN, dns_datatype, "line2")
update.present(name, rdata)
update.present(name, rdata2)
update.delete(name, rdata)

【讨论】:

    【解决方案2】:

    问题似乎是现在从句。由于存在 2 条记录并且 update.present 仅包含 1 条记录,因此它会因 NXRRSET 而失败。 省略 prsent 子句时,删除有效:

    name = 'test.example.com.'
    datatype = dns.rdatatype.from_text("TXT")
    rdata = dns.rdata.from_text(dns.rdataclass.IN, dns_datatype, "line1")
    update.delete(name, rdata)
    

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 2018-08-20
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多