为什么在使用默认选项 -type A 和 -DNSOnly 运行 Resolve-DNSName 时会看到 ns / PTR 记录?
如果我打算使用 pktmon 在 IP 过滤器中使用 IP,最佳语法是什么?
Resolve-DnsName -name google.com Resolve-DnsName -name google.com -Type A Resolve-DnsName -name google.com -DnsOnly
全部返回以下内容
名称 类型 TTL 部分 IP地址 ---- ---- --- ------- --------- google.com AAAA 69 答案 2607:f8b0:400a:806::200e google.com A 164 答案 142.251.33.78 名称:google.com 查询类型 : NS 生存时间:142298 部门: 权限 主机名 : ns1.google.com 名称:google.com 查询类型 : NS 生存时间:142298 部门: 权限 主机名 : ns2.google.com ... ns1.google.com A 56547 附加 216.239.32.10 ns1.google.com AAAA 56547 附加 2001:4860:4802:32::a ns2.google.com A 56547 附加 216.239.34.10 ns2.google.com AAAA 56547 附加 2001:4860:4802:34::a ns3.google.com A 56547 附加 216.239.36.10 ns3.google.com AAAA 56547 附加 2001:4860:4802:36::a ns4.google.com A 56547 附加 216.239.38.10 ns4.google.com AAAA 56547 附加 2001:4860:4802:38::a
对于我们的公司域名,我看到其中包含根服务器的 NS 记录
姓名 : 。 查询类型 : NS 生存时间:9512 部门: 权限 主机名 : h.root-servers.net 姓名 : 。 查询类型 : NS 生存时间:9512 部门: 权限 主机名 : d.root-servers.net 姓名 : 。 查询类型 : NS 生存时间:9512 部门: 权限 主机名 : c.root-servers.net ...
答案1
Resolve-DnsName
为 DNS 响应的不同部分返回不同的对象类型。请注意不同结果集的“Section”属性有何不同:答案、权威性、附加性。这些都是 DNS 响应的不同部分,您可能会得到或得不到,具体取决于您询问的对象和您询问的内容。您还可以通过将结果传输到 来更清楚地查看对象类型Get-Member
。
您可能只想查找答案部分中的结果。因此,您可以添加Where-Object
如下子句:
Resolve-DnsName google.com | ?{ $_.Section -eq 'Answer' }
如果您查询 CNAME 记录,您最终会得到 CNAME 答案(以及任何嵌套的 CNAME)以及 A/AAAA 记录。因此,如果您只关心 IPv4 A 记录,则可能需要额外的过滤。
Resolve-DnsName google.com | ?{ $_.Section -eq 'Answer' -and $_.Type -eq 'A' }
答案2
我得到的结果和你一样。也许是 Microsoft DNS 和 bind 之间的差异?这是我使用的:
(Resolve-DnsName -name google.com | where-object {$_.section -eq 'Answer'}).ipaddress
要避免 IPv6 响应:
(Resolve-DnsName -name google.com | where-object {$_.section -eq 'Answer' -and $_.type -eq 'A'}).ipaddress
答案3
无论使用哪种选项,您都能够像这样过滤掉 IP:
Resolve-DnsName -name google.com | select ipAddress
我也无法用 NS 记录复制这种情况...如果你有不同类型的记录,我认为这是 DNS 记录问题,而不是 powershell 问题。(我尝试通过以下方式复制与你相同的结果
Resolve-DnsName -name mydomain.net | select *
收到了 SOA 查询,但没有其他内容。