Как по IP узнать Autonomous system в командной строке Linux и как узнать все IP Автономной системы

Что такое Автономная Система — Autonomous System (AS)

Чтобы понимать, для чего нужно понятие «Автономные Системы», нужно иметь представление о маршрутизации данных в Интернете.

Структуру сети Интернет-провайдера или крупной организации можно упрощённо представить как совокупность локальных сетей, которые для обмена данными с Глобальной сетью (Интернет), подключены к маршрутизатору, соединённому с маршрутизаторами других Интернет-провайдеров и организаций. Кстати, группа маршрутизаторов одной компании фактически и является Автономной Системой.

Допустим, это понятно, но зачем им нужно было всем присваивать номера?

Если пакет предназначен для узла находящегося в Глобальной сети, то когда он доходит до маршрутизатора, то поскольку маршрутизатор может быть соединён сразу с несколькими другими маршрутизаторами других Автономных Систем, то возникает вопрос — куда именно отправить этот пакет? Допустим, от маршрутизатора A нужно передать пакет маршрутизатору B:

Как узнать, какому именно узлу отправить пакет? Как второй узел выберет следующий для отправки? Как поступить третьему узлу? Даже по моему простому рисунку видно, что есть длинные маршруты до одной и той же точки, а есть даже тупиковые.

На эти вопросы отвечают протоколы маршрутизации, например, Border Gateway Protocol. Именно благодаря им маршрутизатор «знает» самый лучший (не обязательно короткий — критериев оценки несколько) путь из точки A в точку B. И именно понятиями «Автономная Система» оперируют подобные протоколы. То есть, упрощённо говоря, подобные протоколы строят маршруты по узлам автономной системы, при этом учитывают, какие узлы подключены к данному маршрутизатору, какие к следующему и так далее.

Итак, Автономная Система (AS) это термин, обозначающий группу шлюзов (роутеров, маршрутизаторов), которые находятся в одном административном управлении, то есть принадлежат одной организации.

Такими организациями могут быть:

  • Интернет-провайдеры
  • Интернет-хостеры
  • Поисковые системы
  • Организации, предоставляющие сетевые услуги
  • Другие

Номер Автономной Системы (ASN) — это числовой идентификатор для сетей, участвующих в Border Gateway Protocol (BGP). BGP — это протокол, в котором определяются маршруты для передачи пакетов по всему миру. Без BGP, Internet трафик не мог бы покинуть локальные сети.

ASN определяет группу блоков протокола Internet protocol для версий 4 или 6.

Зачем вообще пытаться определить ASN по IP?

При сборе информации с помощью ASN можно добыть некоторые дополнительные данные:

  • определить, что разные IP принадлежат одной организации (если для каждого из них одинаковый ASN, значит организация одна и та же)
  • для ASN можно получить краткое описание организации, иногда некоторые контактные данные и другую информацию (примерно как с whois)
  • узнать все диапазоны IP адресов организации

Как по IP узнать Autonomous system в командной строке Linux

1. Как узнать Автономною Систему с помощью команды dig

Используя такую конструкцию с командой dig (замените в ней 185.117.153.79 на интересующий IP), можно узнать номер Автономной Системы, диапазон, к которому принадлежит данный IP адрес, страну и дату выделения:

dig $(dig -x 185.117.153.79 | grep PTR | tail -n 1 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}').origin.asn.cymru.com TXT +short

Пример вывода:

"48666 | 185.117.152.0/22 | RU | ripencc | 2015-09-16"

Именно такой способ (запрос DNS *.origin.asn.cymru.com) узнать AS используется в команде mtr (она рассматривалась в статью про трассировку узлов).

В статье «Autonomous system lookup using command line in Linux» предложено сделать функцию:

function asn() { dig $(dig -x $1 | grep PTR | tail -n 1 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}').origin.asn.cymru.com TXT +short }

Её можно поместить в файл ~/.bashrc. Тогда прямо в консоли можно будет использовать короткую запись вызова:

asn 185.117.153.79

2. Получение AS из базы данных cymru.com

База данных cymru.com поддерживает запросы по протоколу whois (в команду замените 185.117.153.79 на интересующий IP адрес):

whois -h whois.cymru.com -- '-v 185.117.153.79'

В предыдущей команде два тире подряд говорят команде, что последующий ввод не является её опциями. Это сделано для того, чтобы команда whois не обрабатывала -v как свою опцию.

Пример вывода:


AS      | IP               | BGP Prefix           | CC | Registry | Allocated  | AS Name
48666   | 185.117.153.79   | 185.117.152.0/22    | RU | ripencc  | 2015-09-16 | AS-MAROSNET Moscow, Russia, RU

3. Получение AS из базы данных whois.radb.net

А этот способ я подсмотрел в программе traceroute — когда ей нужно узнать номер Автономной Системы, то она обращается к базе данных whois.radb.net. Пример запроса:

whois -h whois.radb.net 185.117.153.79

Пример вывода:

route:          185.117.152.0/22
descr:          MAROSNET Telecommunication Company Network
descr:          Moscow, Russia
descr:          http://www.marosnet.ru/
origin:         AS48666
mnt-by:         MAROSNET-MNT
created:        2015-09-16T10:53:39Z
last-modified:  2015-09-16T10:53:39Z
source:         RIPE
remarks:        ****************************
remarks:        * THIS OBJECT IS MODIFIED
remarks:        * Please note that all data that is generally regarded as personal
remarks:        * data has been removed from this object.
remarks:        * To view the original object, please query the RIPE Database at:
remarks:        * http://www.ripe.net/whois
remarks:        ****************************

Если нужен только номер AS, то можно запустить так:

whois -h whois.radb.net 185.117.153.79 | grep '^origin'

4. С помощью API hackertarget.com

Сайт hackertarget.com содержит базу данных и предоставляет дружественные к командной строке API: https://api.hackertarget.com/aslookup/?q=185.117.153.79

Чтобы получить данные в командной строке:

curl https://api.hackertarget.com/aslookup/?q=185.117.153.79

Пример вывода:

"185.117.153.79","48666","185.117.152.0/22","AS-MAROSNET Moscow, Russia, RU"

5. Как узнать номер автономной системы с помощью WHOIS

По умолчанию запрос от команды whois адресуется базе данных whois.ripe.net. Она также для некоторых IP адресов показывает поле origin:

whois 185.117.153.79 | grep 'origin'

Ещё один вариант (вывод команды будет ограничен разделом route):

whois -T route 185.117.153.79

Пример вывода (комментарии удалены):

route:          185.117.152.0/22
descr:          MAROSNET Telecommunication Company Network
descr:          Moscow, Russia
descr:          http://www.marosnet.ru/
origin:         AS48666
mnt-by:         MAROSNET-MNT
created:        2015-09-16T10:53:39Z
last-modified:  2015-09-16T10:53:39Z
source:         RIPE

Как узнать информацию об Автономной Системе

1. Получение информации об Автономной Системе из базы данных whois.cymru.com:

whois -h whois.cymru.com -- '-v AS48666'

Пример вывода:

AS      | CC | Registry | Allocated  | AS Name
48666   | RU | ripencc  | 2008-12-29 | AS-MAROSNET Moscow, Russia, RU

2. Получение информации об Autonomous system из базы данных whois.radb.net:

База данных whois.radb.net содержит дополнительную техническую информацию об Автономной Системе:

whois -h whois.radb.net AS48666

В информации о некоторых автономных системах:

whois -h 198.108.0.18 AS3

Содержаться ссылки на другие записи в базе данных

tech-c:     See MAINT-AS3

которые также можно посмотреть:

whois -h 198.108.0.18 MAINT-AS3

3. Автономные Системы в WHOIS

Обычная команда whois также умеет показывать информацию об AS по их номеру:

whois AS48666

Как узнать все IP диапазоны Автономной Системы

По номеру AS можно узнать диапазоны IP адресов Интернет-провайдера, поисковой системы, хостера, любой другой организации, которой выделены IP.

1. Получение IP Автономной Системы из radb.net

Следующая команда выведет информацию о маршрутах данной AS:

whois -h whois.radb.net -- '-i origin AS48666'

Боле сжатая запись:

whois -h whois.radb.net -- '-K -i origin AS48666'

Фильтрация только нужных строк:

whois -h whois.radb.net -- '-i origin AS48666' | grep 'route'

Но списки диапазонов, полученные таким образом, требуют дополнительного внимания, поскольку некоторые из них включают в себя другие диапазоны из этого же списка.

2. Диапазоны IP из базы данных hackertarget.com

Используя API hackertarget.com можно получить диапазоны IP организаций: https://api.hackertarget.com/aslookup/?q=AS48666

В том числе в командной строке:

curl https://api.hackertarget.com/aslookup/?q=AS48666

Заключение

Обратите внимание, что показываемые диапазоны могут содержать одни и те же IP адреса. Для своего сервиса «Все IP провайдера» (там не только провайдеры — любые AS) я в начале использовал похожий метод получения диапазонов, но из-за этого недостатка написал свой собственный скрипт извлечения данных из базы данных. Поэтому на сервисе по ссылке получаемые диапазоны не должны содержать одинаковых IP.

Рекомендуется Вам:

Добавить комментарий

Ваш e-mail не будет опубликован.