Как узнать все диапазоны IP-адресов, принадлежащих определенной AS?
Я хочу знать, какие диапазоны IP-адресов относятся, например, к AS714.
Как я могу получить эту информацию?
Я знаю, как сделать наоборот, что легко с whois. Но другой путь не кажется таким легким.
5 ответов
Хорошо, я только что нашел один простой способ. Вы просто помещаете эти http://bgp.he.net/[ASXXX] в свой браузер, где [ASXXX] - это определенная AS и такой номер http://bgp.he.net/AS714.
Они перечислены онлайн с соответствующими деталями на http://ipinfo.io/AS714 (замените ASN, чтобы получить эквивалентные данные для любого другого ASN).
Если вместо того, чтобы просматривать их, вы предпочитаете получать их программно, вы можете использовать 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
Для всех, кто найдет это - мне очень понравился ответ Бена Доулинга. Однако согласно:
http://www.radb.net/support/query2.php
Есть другой способ, который также дает очень разные результаты! Я тестировал IP-адрес Facebook, который не появился в Bens' | Главный результат. Согласно приведенной выше ссылке, правильный способ запроса IP-адресов будет следующим:
whois -h whois.radb.net '!gas714'
Столь же приятным является тот факт, что теперь вы можете найти все IP6-адреса с:
whois -h whois.radb.net '!6as714'
Как я уже сказал, когда я запустил это для Facebook ASN, я нашел свой пропущенный IP-адрес.
Позднее обновление
К сожалению Radb.net не выдает правильные данные!! Пытаться ASN 19281
например, и вы увидите результаты, но если вы просто whois radb.net без параметров, он скажет "Записи не найдены". Это кажется недостаточно точным, ИМХО.
Я обнаружил, что вы не можете действительно автоматизировать запросы к bgp.he.net, я продолжал получать 403 ответа, а затем, когда я подделал пользовательский агент, он попытался проверить, что я действительно являюсь настоящим браузером. Я вроде как потерпел неудачу во всем с bgp.he.net (даже связавшись с сайтом).
Что мне помогло, так это запросить http://ipinfo.io/ как сказал Бен Доулинг в другом ответе.
Я сделал скрипт Python, чтобы получить каждый IP-блок на ASN. У меня был список каждого номера AS в файле CSV. вот:
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'
Тем не менее, вы также можете использовать curl с ipinfo.io. Просто будьте вежливы и не делайте нелепо больших запросов к серверам.
Еще более простой способ получить эту информацию, скажем, «19281»: https://ipinfo.io/AS19281 .
grep с регулярным выражением
ASN="19281"; curl -s https://ipinfo.io/AS${ASN} |grep -Eo "((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)" |sort -Vu
Результаты:
[root@cpanel ~]# ASN="19281"; curl -s https://ipinfo.io/AS${ASN} |grep -Eo "((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)" |sort -Vu
9.9.9.0/24
149.112.112.0/24
149.112.149.0/24
199.249.255.0/24
[root@cpanel ~]#
Например, Facebook: https://ipinfo.io/AS32934.
можете убедиться, насколько эффективен этот метод.
[root@cpanel ~]# ASN="32934"; curl -s https://ipinfo.io/AS${ASN} |grep -Eo "((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)" |sort -Vu
31.13.24.0/21
31.13.64.0/18
31.13.64.0/19
31.13.64.0/24
31.13.65.0/24
31.13.66.0/24
31.13.67.0/24
31.13.70.0/24
31.13.71.0/24
31.13.72.0/24
31.13.73.0/24
31.13.74.0/24
31.13.76.0/24
31.13.77.0/24
31.13.80.0/24
31.13.81.0/24
31.13.82.0/24
31.13.83.0/24
31.13.84.0/24
31.13.85.0/24
31.13.86.0/24
31.13.87.0/24
31.13.89.0/24
31.13.92.0/24
31.13.93.0/24
31.13.94.0/24
31.13.96.0/19
45.64.40.0/22
66.220.144.0/20
66.220.144.0/21
66.220.152.0/21
69.63.176.0/20
69.63.176.0/21
69.171.224.0/19
69.171.224.0/20
69.171.240.0/20
69.171.250.0/24
74.119.76.0/22
102.132.96.0/20
102.132.96.0/24
103.4.96.0/22
129.134.0.0/17
129.134.25.0/24
129.134.26.0/24
129.134.27.0/24
129.134.28.0/24
129.134.29.0/24
129.134.30.0/23
129.134.30.0/24
129.134.31.0/24
157.240.0.0/17
157.240.1.0/24
157.240.2.0/24
157.240.3.0/24
157.240.6.0/24
157.240.7.0/24
157.240.8.0/24
157.240.9.0/24
157.240.10.0/24
157.240.11.0/24
157.240.12.0/24
157.240.13.0/24
157.240.14.0/24
157.240.17.0/24
157.240.18.0/24
157.240.19.0/24
157.240.20.0/24
157.240.21.0/24
157.240.22.0/24
157.240.26.0/24
157.240.27.0/24
157.240.28.0/24
157.240.29.0/24
157.240.30.0/24
157.240.192.0/18
157.240.193.0/24
157.240.194.0/24
157.240.195.0/24
157.240.196.0/24
157.240.197.0/24
157.240.199.0/24
157.240.200.0/24
157.240.201.0/24
157.240.203.0/24
157.240.204.0/24
157.240.206.0/24
157.240.207.0/24
157.240.209.0/24
157.240.210.0/24
157.240.212.0/24
157.240.215.0/24
157.240.216.0/24
157.240.217.0/24
157.240.218.0/24
157.240.220.0/24
157.240.221.0/24
157.240.222.0/24
157.240.223.0/24
173.252.64.0/19
173.252.88.0/21
173.252.96.0/19
179.60.192.0/22
179.60.192.0/24
179.60.193.0/24
179.60.194.0/24
179.60.195.0/24
185.60.216.0/22
185.60.216.0/24
185.60.217.0/24
185.60.218.0/24
185.60.219.0/24
185.89.218.0/23
185.89.218.0/24
185.89.219.0/24
204.15.20.0/22
[root@cpanel ~]#
Надеюсь, это кому-то поможет.