it-swarm.com.de

Wie man eine Masse von IP auf umgekehrte DNS überprüft?

Gibt es eine Möglichkeit, um zu überprüfen, ob die DNS-Überprüfung viele IP-Adressen enthält? Ich habe eine Liste der IP-Adressen, die ich überprüfen möchte.

Ich weiß, dass Sie dies individuell tun können:

Host <ip-address>

und

Dig -x <ip-address>

Gibt es auch eine Möglichkeit, sie zu exportieren?

6
Yen Deng

xargs bietet eine Auswahlmöglichkeit --arg-file. Mit der Option -L1, um jede Zeile als Argument zu behandeln, können wir den einfachsten Befehl wie folgt ausführen

$ xargs -L1 --arg-file=ip-addr.txt Dig +short -x
google-public-dns-a.google.com.
resolver2.opendns.com.

Wenn es notwendig ist, die IP-Adresse neben der aufgelösten Domain anzuzeigen, können wir auch Folgendes tun:

$ xargs -L1 --arg-file=ip-addr.txt sh -c 'printf "%s: " "$1"; Dig +short -x "$1"' sh
8.8.8.8: google-public-dns-a.google.com.
208.67.220.220: resolver2.opendns.com.

Natürlich ist xargs ein zusätzlicher Prozess. Was wäre, wenn wir nur Shell und Dig verwenden wollten? Ab Bash-Version 4 können wir mapfile oder readarray verwenden, um Zeilen der Textdatei in ein Array zu kopieren und dann Elemente in einer Schleife zu verarbeiten:

$ mapfile -t -d $'\n' < ip-addr.txt
$ for i in "${MAPFILE[@]}" ; do printf "%s:" "$i"; Dig +short -x "$i"; done
8.8.8.8:google-public-dns-a.google.com.
208.67.220.220:resolver2.opendns.com.

Wenn es nur wenige IP-Adressen gibt und POSIXly keine lange Textdatei erfordert, können Sie mit set Werte als Positionsparameter definieren:

$ set -- 8.8.8.8 208.67.220.220
$ for i ; do printf "%s:" "$i"; Dig +short -x "$i"; done
8.8.8.8:google-public-dns-a.google.com.
208.67.220.220:resolver2.opendns.com.

Wir können Dig -x $IP_ADDRESS +short auch in einem Skript wie folgt verwenden:

#!/bin/bash
export LC_ALL=C
# without specifying 'in' part, bourne-like shells default
# to iterating over positional parameters
for item
do
     domain=$(Dig -x "$item"  +short)
     # this logic can also be reversed with
     # [ "x$domain" = "x" ] && echo "empty" || echo "$domain"
     if [ -n "$domain"  ] ;
     then
         echo "$domain"
     else
         echo "$item" result is NULL
     fi
done

Demo der Beispielnutzung (alle IP-Adressen sind durch Leerzeichen getrennt):

$ ./reverse_dns_lookup.sh 8.8.8.8 74.125.193.94 151.101.193.69                 
google-public-dns-a.google.com.
ig-in-f94.1e100.net.
151.101.193.69 result is NULL

Wie Sie sehen, hat unser DNS-Server im letzten Beispiel keine Domain für die IP-Adresse gefunden, die wir ihm gegeben haben. In diesem Fall können wir einen anderen DNS-Server verwenden, zum Beispiel open_dns mit Dig @208.67.220.220 $IP_ADDRESS +short

In der obigen Demo werden die IP-Adressen in der Befehlszeile angegeben, wie z. B. ./reverse_dns_lookup.sh ADDRESS1 ADDRESS2 ADDRESS2, aber Sie können auch eine Datei dafür verwenden, wie z.

$ cat ip_addresses.txt |  xargs ./reverse_dns_lookup.sh                          <
google-public-dns-a.google.com.
resolver2.opendns.com.
192.30.253.112 result is NULL

Alternative Skriptversion:

Hier ist eine alternative Version des Skripts, mit der der Abschnitt AUTHORITY aus der Ausgabe von Dig's gedruckt wird. Dies ist möglicherweise viel besser und zuverlässiger als nur die +short -Version. HINWEIS: Hierfür wird 8.8.8.8 verwendet, das öffentliche DNS von Google. Verwenden Sie einen anderen Server, wenn Sie dies für erforderlich halten.

#!/bin/bash
export LC_ALL=C
for item
do
 domain=$(Dig @8.8.8.8  -x "$item" +noall +authority +answer)
 if [ -n "$domain"  ] ;
 then
     echo "$domain"
 else
     echo "$item" result is NULL
 fi
done

Demo:

$ cat ip_addresses.txt |  xargs ./reverse_dns_lookup.sh 

; <<>> Dig 9.10.3-P4-Ubuntu <<>> @8.8.8.8 -x 8.8.8.8 +noall +authority +answer
; (1 server found)
;; global options: +cmd
8.8.8.8.in-addr.arpa.   21390   IN  PTR google-public-dns-a.google.com.

; <<>> Dig 9.10.3-P4-Ubuntu <<>> @8.8.8.8 -x 208.67.220.220 +noall +authority +answer
; (1 server found)
;; global options: +cmd
220.220.67.208.in-addr.arpa. 6674 IN    PTR resolver2.opendns.com.

; <<>> Dig 9.10.3-P4-Ubuntu <<>> @8.8.8.8 -x 192.30.253.112 +noall +authority +answer
; (1 server found)
;; global options: +cmd
253.30.192.in-addr.arpa. 10 IN  SOA ns1.p16.dynect.net. ops.github.com. 6 3600 600 604800 60
9

Hier ist ein schneller und schmutziger Einzeiler: Inhalt von ip-address.txt:

$ cat ip-addresses.txt
    1.2.3.4
    1.1.1.1
    222.222.222.222
    23.12.34.56
    8.8.8.8
    208.67.222.220

Ersetzen Sie txt durch Ihre Datei mit Adressen, die durch Zeilenumbrüche getrennt sind:

$ cat ip-addresses.txt | xargs -I % bash -c 'echo "%:$(Dig -x % +short)"' >> Dig-output.txt

Wenn Sie wie oben an Dig-output.txt anhängen, ist der Inhalt dieser Datei wie folgt, wenn die umgekehrte DNS-Suche erfolgreich ist, IP:NAME, wenn nicht, IP:(NULL)

$ cat Dig-output.txt
1.2.3.4:
1.1.1.1:
222.222.222.222:
23.12.34.56:a23-12-34-56.deploy.static.akamaitechnologies.com.
8.8.8.8:google-public-dns-a.google.com.
208.67.222.220:resolver3.opendns.com.

Wenn IP-Adressen von einem anderen Prozess stammen, können Sie direkt an xargs weiterleiten.

Bearbeiten: Wenn Sie im Falle eines Nachschlagefehlers ein Wort wie null (inspiriert von @Serg) benötigen, können Sie den folgenden Befehl verwenden:

$ cat ip-addresses.txt | xargs -I % bash -c '{ query=$(Dig -x % +short); if [ -z $query ]; then query=null;fi; echo %:$query; }'
  • cat ip-addresses.txt # IP-Adressen in STDOUT drucken. Wenn Sie nicht aus einer Datei cat möchten, können Sie direkt aus einem anderen Prozess wie command | xargs ... weiterleiten.
  • xargs -I % bash -c # Nehmen Sie jede Zeile links von der Pipe, verwenden Sie % als Platzhalter, und führen Sie den Befehl bash in einfachen Anführungszeichen aus
  • Dig IP-Adresse, die vom Platzhalter % von xargs stammt, der Variablen query zuweisen. Wenn das Ergebnis null (Länge Null) ist, weisen Sie der Variablen query die Zeichenfolge 'Null' Word zu und drucken Sie sie dann als IP:result

Demo:

$ cat ip-addresses.txt | xargs -I % bash -c '{ query=$(Dig -x % +short); if [ -z $query ]; then query=null;fi; echo %:$query; }'
1.2.3.4:null
1.1.1.1:null
222.222.222.222:null
23.12.34.56:a23-12-34-56.deploy.static.akamaitechnologies.com.
8.8.8.8:google-public-dns-a.google.com.
208.67.222.220:resolver3.opendns.com.
3
sdkks

Inspiriert von dem in einer anderen Antwort gezeigten Shell-Beispiel, entschied ich mich für eine Perl-Version, die besser zu mir passte, und erstellte diese Datei "batch_dns_by_ip.pl". Sie fügen eine Liste der IP-Adressen in eine Textdatei ein, die Sie an das Programm weiterleiten.

Der Code sollte folgendermaßen aussehen und Sie möchten die Datei ausführbar machen:

#!/usr/bin/Perl
use strict;
my @domains;
my $address;
while (<>)
{
        chomp;
        $address = $_;
        $address =~ s/ *//g;
        @domains = ();
        @domains=`Dig -x "$address" +short`;
        chomp(@domains);
        if ("$domains[0]" eq "")
        {
                 $domains[0] = "NULL";
        }
        printf("addr: %15s names: %s", $address, $domains[0]);
        if ("$domains[1]" eq "")
        {
                print "\n";
        }
        else
        {
                printf(", %s\n", $domains[1]);
        }
}

Ein Lauf könnte so aussehen:

$ cat myips | ./batch_dns_by_ip.pl
addr:  216.58.219.238 names: lga25s41-in-f14.1e100.net., lga25s41-in-f238.1e100.net.
addr:  151.101.129.69 names: NULL
addr:         8.8.8.8 names: google-public-dns-a.google.com.
addr:     10.49.11.62 names: nyalbdnsvip01.miscny.nyenet., nyalbcwgbvip01-vlan401.miscny.nyenet.
addr:  69.172.201.153 names: NULL

Ich hoffe das hilft!

1
James Ebersold

nmap

Sie können nur

 nmap -R -sL -Pn 1.2.3.0/24 | grep '('
  • -n/-R Niemals DNS-Auflösung durchführen/Immer auflösen [Standard: manchmal]
  • -sL List Scan - listet einfach die zu scannenden Ziele auf
  • -Pn Alle Hosts als online behandeln - Hosterkennung überspringen. Entfernen Sie dies, um genau das zu erhalten, was auf Ping reagiert.

Die grep lassen gerade Reverse-DNS und einige nützliche Zeilen aufgelöst.

Fügen Sie --dns-servers x.x.x.x hinzu, um einen bestimmten DNS-Server zu verwenden.

1
Pablo Bianchi