过滤掉 Resolve-DnsName 返回的 NS 记录

过滤掉 Resolve-DnsName 返回的 NS 记录

为什么在使用默认选项 -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 查询,但没有其他内容。

相关内容