Автоматизация проверок физического роутинга

12
юни
На сайте с 01.11.2005
Offline
901
3112

Есть множество подсетей, разбросанных по десятку ДЦ. Каждый со своими маршрутизаторами и отдельной AS. Время от времени надо узнавать, смотрит ли сеть в мир с конкретного оборудования или же она снята с анонсов.

Как бы это более-менее толково реализовать?

Обрисовал задачу техническому специалисту, его предварительный вердикт таков:

Как я понял, исходная задача такова: есть большие блоки IP-адресов, которые анонсируются в мир блоками меньших размеров от различных провайдеров (AS - автономных систем).

Для проверки того, есть ли блок в анонсе можно использовать LG (looking glass) провайдеров. Когда провайдеры предоставляют доступ на чтение своих таблиц маршрутизации (для траблшутинга проблем с маршрутизацией).

Пример проверки - http://lg.retn.net/ заходим сюда. Выбираем PoP - это один из маршрутизаторов провайдера в нужном нам регионе (если сеть анонсится правильно, то она будет присутствовать во всех). Например, DE (Frankfurt, EQX). Выбираем Query: v4 bgp route terse. И указываем IP-address, к примеру 1.1.1.1

На выходе получаем:

inet.0: 741225 destinations, 2419437 routes (738737 active, 213578 holddown, 369602 hidden)
+ = Active Route, - = Last Active, * = Both

A V Destination P Prf Metric 1 Metric 2 Next hop AS path
* ? 1.1.1.0/22 B 170 200 100 48347 I
unverified >87.245.232.234
87.245.233.165
? B 170 100 90 3216 48347 I
unverified >80.81.192.243
? B 170 100 100 20485 48347 I
unverified >80.81.194.117
? B 170 100 100 6939 20764 48347 I
unverified >80.81.192.172

Что говорит о том, что блок анонсится в составе 1.1.1.0/22 от AS48347.

Как всё это оформить скриптом? Желательно не никсовыми командами, а сразу средствами php.

https://a-parser.com/ - парсер для профессионалов SEO, маркетологов, арбитражников и SaaS, https://searchengines.guru/ru/forum/944108 - прокси-сервис на базе операторов домашнего интернета, сотни тысяч IP-адресов, канал от 20 Мбит
Lazy Badger
На сайте с 14.06.2017
Offline
231
#1

1. "Все уже украдено до нас"

Вот это готовый и достаточно удобный Looking Glass и даже с графикой в выводе BGP-paths https://github.com/hsdn/lg

Примеры работы

http://dev.hsdn.org/lg/?command=graph&protocol=ipv4&query=123.45.67.89&router=example1

http://dev.hsdn.org/lg/?command=graph&protocol=ipv4&query=8.8.8.8&router=example1

Производство жести методом непрерывного отжига
юни
На сайте с 01.11.2005
Offline
901
#2

Это ведь решение для своего оборудования? У нас нет собственного роута с фулл вью.

Lazy Badger
На сайте с 14.06.2017
Offline
231
#3
юни:
Это ведь решение для своего оборудования? У нас нет собственного роута с фулл вью.

Берите с халявных, отдающих их. Я картинки-примеры не со своей железки снял, а от них же, от разработчиков

юни
На сайте с 01.11.2005
Offline
901
#4
LazyBadger:
Берите с халявных

А как такие найти?

юни
На сайте с 01.11.2005
Offline
901
#5

Набросайте аналогов lg.retn.net в тему?

У этих товарищей мало регулярок в коде, неудобно парсить, а API нет, насколько я вижу. Да и всё время приходится вводить нужный адрес в форму, по http://lg.retn.net/cgi-bin/LG.cgi?r=5&q=b&a=1.1.1.1 результат не отдаётся.

Glueon
На сайте с 26.07.2013
Offline
172
#6

На любой вкус и цвет: https://lookinglass.org/

У некоторых есть JSON API, например: https://www.de-cix.net/en/resources/looking-glass

Мне лень выгребать все сервисы с API руками, если соберете их сами, расшарьте, плиз, куда-нибудь.

Есть много IP-сетей в аренду под прокси, парсинг, рассылки (optin), vpn и хостинг. Телега: @contactroot ⚒ ContactRoot команда опытных сисадминов (/ru/forum/861038), свой LIR: сдаем в аренду сети IPv4/v6 (/ru/forum/1012475).
юни
На сайте с 01.11.2005
Offline
901
#7

Пытаемся смотреть через https://stat.ripe.net/data/bgp-state/data.json?resource=1.1.1.0, но показывается что-то не то. По крайней мере, автономки не видны.

Или нужно брать другое API?

Glueon
На сайте с 26.07.2013
Offline
172
#8
юни:
Пытаемся смотреть через https://stat.ripe.net/data/bgp-state/data.json?resource=1.1.1.0, но показывается что-то не то. По крайней мере, автономки не видны.

Или нужно брать другое API?

Если я правильно понял задачу (допускаю, что нет, потому что устал), то:

https://stat.ripe.net/data/address-space-usage/data.json?resource=193/23

https://stat.ripe.net/docs/data_api

Address Space Usage

юни
На сайте с 01.11.2005
Offline
901
#9

Не, не то:

{

"status": "ok",
"server_id": "app024",
"status_code": 200,
"version": "0.4",
"cached": true,
"see_also": [],
"time": "2019-05-21T16:34:07.168380",
"messages": [],
"data_call_status": "supported - connecting to ursa",
"process_time": 0,
"build_version": "2019.5.16.97",
"query_id": "20190521163407-6c0377af-7f16-46be-b756-1a49833d452b",
"data": {
"assignments": [ {
"status": "ASSIGNED PA",
"asn_name": "RIPE-NCC",
"address_range": "193.0.0.0/21",
"parent_allocation": "193.0.0.0-193.0.23.255"
}
],
"query_time": "2019-05-17T00:00:00",
"ip_stats": [ {
"status": "ASSIGNED PA",
"ips": 512
}
],
"resource": "193.0.0.0/23",
"allocations": [ {
"allocation": "128.0.0.0/1",
"status": "ALLOCATED UNSPECIFIED",
"asn_name": "IANA-BLK",
"assignments": 0
},
{
"allocation": "193.0.0.0-193.0.23.255",
"status": "ALLOCATED PA",
"asn_name": "NL-RIPENCC-OPS-990305",
"assignments": 1
}
]
}
}

Нет данных по AS.

Lazy Badger
На сайте с 14.06.2017
Offline
231
#10

И не должно быть, если я правильно еще помню, потому что ALLOCATED / PA

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий