Vraag Hoe een groot deel van IP te controleren op reverse dns?


Is er een manier om te controleren of de DNS-controle voor ladingen IP's ongedaan moet worden gemaakt, ik heb een IP-lijst die ik wil controleren?

Ik weet dat je dit individueel kunt doen:

host <ip-address>

en

dig -x <ip-address>

Is er ook een manier om ze te exporteren?


6
2017-08-17 09:15


oorsprong


Ja, heel veel mogelijk. Ik zal in een minuut een klein script schrijven. Even geduld aub - Sergiy Kolodyazhnyy


antwoorden:


Je kunt gebruiken dig -x $IP_ADDRESS +short in een script als:

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

Demo van voorbeeldgebruik (alle ip-adressen gegeven als gescheiden ruimte):

$ ./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

Zoals u kunt zien, heeft onze DNS-server in het laatste voorbeeld geen domein gevonden voor het IP-adres dat we hebben opgegeven. In dat geval kunnen we een andere DNS-server gebruiken, bijvoorbeeld open_dns met dig @208.67.220.220 $IP_ADDRESS +short

In de demo hierboven zijn de ip-adressen beschikbaar op de commandoregel, zoals ./reverse_dns_lookup.sh ADDRESS1 ADDRESS2 ADDRESS2 maar je kunt daar ook een bestand voor gebruiken, zoals zo:

$ 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

Alternatieve versie

Hier is een alternatieve versie van het script dat de AUTORITEIT-sectie afdrukt dig's output. Dit kan veel beter en betrouwbaarder zijn dan alleen +short versie. LET OP: dit gebruikt 8.8.8.8 , wat de openbare DNS van Google is. Gebruik een andere server als u dat nodig acht.

#!/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

8
2017-08-17 09:28



Sorry voor mijn onwetendheid, maar waar in het script definieer ik de lijst met IP's? - Yen Deng
@YenDeng de IP-adressen worden gegeven op de opdrachtregel. Ik zal daarover een beetje meer info toevoegen. - Sergiy Kolodyazhnyy
@YenDeng Ik heb meer info toegevoegd aan het antwoord. Ook een alternatieve scriptversie toegevoegd. Dat zou betrouwbaarder moeten zijn - Sergiy Kolodyazhnyy
Hallo Serg, sorry dat ik vervelend ben. Er staat dat ./reverse_dns_look.sh: / bin / bash ^ M: slechte interpreter: geen bestand of directory weet niet zeker wat er mis is met deze - Yen Deng
@YenDeng Je moet in de map staan ​​waar beide staan ip_addresses.txt en ./reverse_dns_lookup‌​.sh verblijft. Als je weglaat ./ voor de scriptnaam zal het niet worden uitgevoerd, zelfs als het uitvoerbaar is. Omdat het niet in uw omgevingsvariabele zit (PAD). - sdkks


Hier is een snelle en vuile voering: Inhoud van ip-adressen.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

Vervang txt door uw bestand dat adressen bevat, gescheiden door nieuwe regels:

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

Als je toevoegt aan dig-output.txt zoals hierboven, ziet de inhoud van dat bestand er als volgt uit, als reverse DNS lookup succesvol is, IP:NAME, als niet, 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.

Als IP-adressen uit een ander proces komen, kunt u direct naar xargs pipen.

Bewerken: als u een woord moet hebben zoals null (geïnspireerd door @Serg) in het geval van een opzoekfout, kunt u de onderstaande opdracht gebruiken:

$ 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 afdrukken naar STDOUT. Als je niet wilt cat vanuit bestand kun je direct vanuit een ander proces pipen zoals command | xargs ...
  • xargs -I % bash -c # Neem elke lijn van de linkerkant van de pijp, gebruik % als tijdelijke aanduiding, uitvoeren bash commando dat volgt binnen enkele aanhalingstekens
  • dig IP-adres dat afkomstig is van placeholder % door xargs, toewijzen aan variabele query. Als resultaat toevallig is null (nullengte), teken 'null' woord aan query variabele, druk dan af 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
2017-08-17 11:21



Hoe zou ik de resultaten exporteren? - Yen Deng
Ben je van plan om in een bestand op te slaan? - sdkks
Ja, als dat mogelijk is - Yen Deng
Eenvoudig toevoegen >> my-log-filename.txt aan het einde van het commando. - sdkks
@YenDeng Ik heb mijn antwoord bewerkt en wat dingen gecorrigeerd. Misschien nuttiger nu. - sdkks


Geïnspireerd door het shell-voorbeeld dat in een ander antwoord wordt getoond, besloot ik dat een Perl-versie beter bij me paste, dus heb ik dit bestand "batch_dns_by_ip.pl" gemaakt. U plaatst een lijst met IP-adressen in een tekstbestand dat u in het programma zult invoeren.

De code zou er zo uit moeten zien en u zult het bestand uitvoerbaar willen maken:

#!/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]);
        }
}

Een run kan er als volgt uitzien:

$ 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

Ik hoop dat dat helpt!


1
2018-02-20 20:43



Dit werkt, maar merk op dat het invoerbestand elke IP op een aparte regel moet hebben. - devius


nmap

Je kunt gewoon

 nmap -R -sL -Pn 1.2.3.0/24 | grep '('
  • -n/-R Nooit DNS-resolutie uitvoeren / Altijd oplossen [standaard: soms]
  • -sL Lijstscan - geef eenvoudig de te scannen doelen op
  • -Pn Behandel alle hosts als online - sla de hostdetectie over. Verwijder dit om precies te krijgen wat reageert op ping.

De grep laat zojuist herstelde reverse DNS en enkele nuttige regels achter.

Toevoegen --dns-servers x.x.x.x om een ​​specifieke DNS-server te gebruiken.


0
2018-03-02 15:18