【问题标题】:Perl Get Nameservers IPs from root serverPerl 从根服务器获取名称服务器 IP
【发布时间】:2014-03-21 12:44:52
【问题描述】:

我正在尝试编写一个 Perl 脚本,该脚本应该获取特定域的名称服务器的 IP,如注册商中所写,就像我写的示例一样:

dig -t ns example.com @a.gtld-servers.com

并参加了附加部分。

我尝试使用 Net::DNS::Resolver::Recursive,但我得到的只是两个 NS 服务器的相同 IP 地址。 (在我的公司,我们填充 DNS 记录,因为每个 NS 都是一个独立的服务器,这就是我获得相同地址的原因。

这是我写的:

my $resolver = Net::DNS::Resolver::Recurse->new();

my @root_ns = map $_ . '.root-servers.net', 'a'..'m';

$resolver->hints( @root_ns );

my $ns_query = $resolver->query_dorecursion($domain, "NS");

foreach my $ns_rr ( $ns_query->additional ) {
    print $ns_rr->name . " " . $ns_rr->rdatastr . "\n";
}

除了解析 dig 输出之外,有没有其他方法可以获取名称服务器的 IP?

【问题讨论】:

    标签: perl dns


    【解决方案1】:

    您可以改用 recursion_callback。这将返回所有名称服务器。

        use Net::DNS::Resolver::Recurse;
    
        my $res = Net::DNS::Resolver::Recurse->new;
        our %NS;
    
        $res->hints();
        $res->recursion_callback(sub {
             my $packet = shift;
             for  ($packet->additional){
                  next if($_->string =~ /gtld/);
                  @temp=split /\s+/,$_->string;
                  $NS{$temp[0]}=$temp[-1];
    
           }
        });
    
        $res->query_dorecursion('google.com', 'NS');
        map {print "$_\t$NS{$_}\n"} keys %NS;
    

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 2013-01-03
      • 1970-01-01
      • 2020-11-03
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      相关资源
      最近更新 更多