Как по 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.
Связанные статьи:
- Как узнать, сайт за CloudFlare или нет (78.1%)
- Базы данных IP адресов организаций и географических мест (материков, стран, провинций и городов) (72.2%)
- Исследование периметра партнёрки по установке Adware (КЕЙС) (68.3%)
- Утилиты для сбора информации и исследования сети в Windows и Linux (64.9%)
- Сбор информации о владельце сайта. Поиск сайтов одного лица (61%)
- Как в Windows выбрать подключение, используемое для Интернета (RANDOM - 2.5%)