Jak znaleźć wszystkie zakresy adresów IP należące do określonego AS?

12

Chcę wiedzieć, jakie zakresy adresów IP należą na przykład do AS714.

Jak uzyskać te informacje?

Wiem, jak to zrobić odwrotnie, co jest łatwe w Whois. Ale druga droga nie wydaje się taka łatwa.

JohnnyFromBF
źródło
Czy chcesz zakresy adresów IP, które pochodzą z tego AS? (Bezpośredni klienci, którzy nie mają AS) Co z zakresami adresów IP, do których można uzyskać dostęp tylko poprzez ten AS? (Klienci, którzy mają swój własny AS). Co z zakresami adresów IP osiągalnymi za pośrednictwem tego AS, ale także innych AS dostawców? (Klienci Multihomed.)
David Schwartz
1
Celem było sprawdzenie wszystkich zakresów adresów IP, które posiada mój dostawca. Otrzymałem te informacje, odwiedzając stronę bgp.potaroo.net/as1221/asnames.txt , aby znaleźć numer AS i mature.net/data-tools/stats/ris/routing-information-service w celu uzyskania całego adresu IP mieści się w zakładce prefiksów. Czy znasz inne możliwości?
JohnnyFromBF

Odpowiedzi:

16

Są one wymienione online wraz z powiązanymi szczegółami na stronie http://ipinfo.io/AS714 (zastąp ASN, aby uzyskać równoważne szczegóły dla każdego innego ASN).

Jeśli zamiast przeglądać je wolisz programowo, możesz użyć serwera whois RADb:

$ whois -h whois.radb.net -- '-i origin AS714' | grep -Eo "([0-9.]+){4}/[0-9]+" | head
17.108.0.0/16
17.106.0.0/15
17.102.0.0/16
17.207.0.0/16
17.216.0.0/16
17.250.48.0/24
17.252.65.0/24
192.35.50.0/24
17.148.0.0/14
17.86.0.0/17
Ben Dowling
źródło
1
Dziękuję za tę odpowiedź. Teraz mogę łatwo tworzyć listy blokujące SMTP dla agresywnych dostawców hostingu.
Jari Turkia
Dla odniesienia, te inne rejestry routingu powinny również działać.
JakeGould
2

Dla każdego, kto to znajdzie - bardzo podobała mi się odpowiedź Bena Dowlinga . Jednak zgodnie z:

http://www.radb.net/support/query2.php

Istnieje inny sposób, który daje również bardzo różne wyniki! Testowałem adres IP na Facebooku, który nie pojawił się w Bens '| wyniki głowy. Zgodnie z powyższym linkiem poprawnym sposobem zapytania o adresy IP4 byłoby:

whois -h whois.radb.net '!gas714'

Równie fajny jest fakt, że możesz teraz znaleźć wszystkie adresy IP6 za pomocą:

whois -h whois.radb.net '!6as714'

Jak mówię - kiedy uruchomiłem to dla ASN na Facebooku, znalazłem mój brakujący adres IP.

Późniejsza aktualizacja

Niestety Radb.net nie podaje poprawnych danych !! Spróbuj ASN 19281na przykład, a zobaczysz podane wyniki, ale jeśli po prostu whois radb.net bez parametrów, powie „Nie znaleziono rekordów”. IMHO nie wydaje się wystarczająco dokładne.

Antony
źródło
Ta metoda ma pewne problemy z długimi listami, takimi jak Facebook, tj. whois -h whois.radb.net -- '!6as32934'który zostaje „przycięty” nowym wierszem pośrodku adresów
Hvisage
co oznacza, że ​​powinieneś raczej używać nc, jak w:echo '!6as32934'|nc whois.radb.net 43
Hvisage
0

Odkryłem, że tak naprawdę nie można zautomatyzować zapytań do bgp.he.net, ciągle otrzymywałem 403 odpowiedzi, a potem, gdy sfałszowałem klienta, próbowałem zweryfikować, czy rzeczywiście jestem prawdziwą przeglądarką. Z bgp.he.net poniekąd mi się nie udało (nawet skontaktowałem się z witryną).

To, co zadziałało dla mnie, to zapytanie http://ipinfo.io, jak powiedział Ben Dowling w innej odpowiedzi.

Zrobiłem skrypt Pythona, aby uzyskać każdy blok IP na ASN. Miałem listę każdego numeru AS w pliku csv. tutaj jest:

import requests
from bs4 import BeautifulSoup
import re


url_base = 'http://ipinfo.io/'
as_base = 'AS'

output = open('ip_per_asn.csv', 'w')
with open('chilean_asn.csv') as f:
    lines = f.read().splitlines()
    for asn in lines:
        ASN = as_base + asn
        page = requests.get(url_base+ASN)
        html_doc = page.content
        soup = BeautifulSoup(html_doc, 'html.parser')
        for link in soup.find_all('a'):
            if asn in link.get('href'):
                auxstring = '/'+as_base+asn+'/'
                line = re.sub(auxstring, '', link.get('href'))
                printstring = asn+','+line+'\n'
                if 'AS' not in printstring:
                    output.write(printstring)
        print asn+'\n'

print 'script finished'

To powiedziawszy, możesz także używać curl w ipinfo.io. Po prostu bądź uprzejmy i nie rób absurdalnie dużych zapytań do serwerów.

Tomas Wolf
źródło