web-dev-qa-db-ja.com

特定のASに属するすべてのIP範囲を見つける方法は?

AS714などに属しているIP範囲を知りたい。

この情報を入手するにはどうすればよいですか?

私はwhoisで簡単な逆の方法を知っています。しかし、他の方法はそれほど簡単ではないようです。

14
JohnnyFromBF

わかりました、私はただ一つの簡単な方法を見つけました。これを http://bgp.he.net/ [ASXXX] #_prefixes とブラウザに入力するだけです。[ASXXX]は特定のASであり、このような番号です http:/ /bgp.he.net/AS714#_prefixes

14
JohnnyFromBF

http://ipinfo.io/AS714 (他のASNと同等の詳細を取得するには、ASNを置き換えてください)に、関連する詳細とともにオンラインでリストされています。

それらを参照する代わりに、プログラムでそれらを取得する場合は、RADb whoisサーバーを使用できます。

$ 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
18
Ben Dowling

これを見つけた人なら誰でも-私は本当に気に入りました ベンダウリングの答え 。ただし、

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

非常に異なる結果も生成する別の方法があります!ベンスで登場しなかったFacebookのIPをテストしていた|ヘッド結果。上記のリンクによると、IP4アドレスを照会する正しい方法は次のようになります。

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

同様に、ニースと同じように、次のようにしてすべてのIP6アドレスを見つけることができます。

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

私が言うように-私がFacebook ASNに対してこれを実行したとき、欠けているIPアドレスを見つけました。

後で更新

残念ながら、Radb.netは正しいデータを提供しません!!たとえばASN 19281を実行すると、結果が表示されますが、パラメータを指定せずにただrais radb.netとすると、「レコードが見つかりません」と表示されます。私見では十分に正確ではないようです。

3
Antony

Bgp.he.netへのクエリを実際に自動化できないことに気づき、403応答を繰り返し取得しました。その後、ユーザーエージェントを偽装すると、実際のブラウザーであることを確認しようとしました。私はbgp.he.netですべてに失敗しました(サイトに連絡している場合でも)。

DID私のために働いた、クエリすることでした http://ipinfo.io ベンダウリングが別の答えで言ったように。

pythonスクリプトを実行して、ASNごとにすべてのIPブロックを取得しました。csvファイルにすべてのAS番号のリストがありました。ここにあります:

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'

つまり、ipinfo.ioでcurlを使用することもできます。丁寧な対応を心がけ、サーバーに対して不当に大きなクエリを行わないようにしてください。

1
Tomas Wolf