Comment connaître toutes les plages IP appartenant à un certain AS?

13

Je veux savoir quelles plages IP appartiennent par exemple à l'AS714.

Comment puis-je obtenir ces informations?

Je sais comment faire l'inverse, ce qui est facile avec le whois. Mais l'autre sens ne semble pas être aussi simple.

JohnnyFromBF
la source
Voulez-vous des plages d'adresses IP provenant de cet AS? (Clients directs qui n'ont pas d'AS) Qu'en est-il des plages d'adresses IP accessibles uniquement via cet AS? (Clients qui ont leur propre AS.) Qu'en est-il des plages d'adresses IP accessibles via cet AS mais également d'autres AS fournisseurs? (Clients multi-hôtes.)
David Schwartz
1
Le but était de découvrir toutes les plages IP que mon fournisseur possède. J'ai obtenu cette information en visitant bgp.potaroo.net/as1221/asnames.txt afin de connaître le numéro AS et ripe.net/data-tools/stats/ris/routing-information-service afin d'obtenir toute l'IP s'étend via l'onglet préfixes. Connaissez-vous d'autres possibilités?
JohnnyFromBF

Réponses:

17

Ils sont répertoriés en ligne avec des détails connexes sur http://ipinfo.io/AS714 (remplacez l'ASN pour obtenir les détails équivalents pour tout autre ASN).

Si au lieu de les parcourir, vous préférez les récupérer par programmation, vous pouvez utiliser le serveur 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
la source
1
Merci pour cette réponse. Maintenant, je peux facilement créer des listes de blocage SMTP pour les hébergeurs abusifs.
Jari Turkia
Pour référence, ces autres registres de routage devraient également fonctionner.
JakeGould
3

Pour tous ceux qui trouvent cela - j'ai vraiment aimé la réponse de Ben Dowling . Cependant selon:

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

Il existe une manière différente qui donne également des résultats très différents ! Je testais une adresse IP facebook qui n'est pas apparue dans Bens '| résultats de la tête. Selon le lien ci-dessus, la manière correcte d'interroger les adresses IP4 serait:

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

Tout aussi agréable est le fait que vous pouvez maintenant trouver toutes les adresses IP6 avec:

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

Comme je l'ai dit - lorsque j'ai exécuté cela pour l'ASN Facebook, j'ai trouvé mon adresse IP manquante.

Mise à jour ultérieure

Radb.net ne donne malheureusement pas les bonnes données !! Essayez ASN 19281par exemple et vous verrez des résultats donnés, mais si vous whois simplement radb.net sans paramètres, il dira "Aucun enregistrement trouvé." Cela ne semble pas assez précis à mon humble avis.

Antony
la source
Cette méthode a quelques problèmes avec les longues listes, comme celle de Facebook. whois -h whois.radb.net -- '!6as32934'qui se "clippe" avec une nouvelle ligne au milieu des adresses
Hvisage
ce qui signifie que vous devriez plutôt utiliser nc, comme dans:echo '!6as32934'|nc whois.radb.net 43
Hvisage
1

J'ai trouvé que vous ne pouvez pas vraiment automatiser les requêtes sur bgp.he.net, j'ai continué à recevoir 403 réponses, puis quand j'ai truqué un agent utilisateur, il a essayé de vérifier que j'étais bien un vrai navigateur. J'ai un peu échoué dans tout avec bgp.he.net (même en contactant le site).

Ce que DID a fait pour moi, c'était d'interroger http://ipinfo.io comme Ben Dowling l'a dit dans une autre réponse.

J'ai fait un script python pour obtenir chaque bloc IP par ASN. J'avais une liste de chaque numéro AS dans un fichier csv. C'est ici:

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'

Cela dit, vous pouvez également utiliser curl avec ipinfo.io. Essayez simplement d'être poli et ne faites pas de requêtes absurdes aux serveurs.

Tomas Wolf
la source