Описание алгоритма решения задачи "получить список всех сетей организации, если известен один IP-адрес".
1. Забиваем в гугл запрос "show ip bgp regex looking glass", находим какой-нибудь looking glass, поддерживающий команду "show ip bgp regex" и не обрезающий вывод. Например lg.as48972.net
2. Выясняем номер автономной системы с помощью команды whois или на каком-нибудь веб-сервисе. Для примера возьмем IP-адрес 46.219.4.0 одного из киевских провайдеров:
$ whois 46.219.4.0 | grep origin origin: AS31148
Итак, номер автономной системы провайдера Freenet (O3) - 31148.
3. Далее идем на найденный looking glass и в качестве аргумента указываем номер AS со знаком доллара на конце (если знак доллара не указать, то отобразятся еще и сети организаций, для которых AS 31148 является транзитной, что нам в данном случае не нужно):
4. Жмем кнопку "Execute" и получаем длинный список примерно такого вида (приведен не полностью), где в самом левом столбце и перечислены искомые блоки адресов:
BGP table version is 0, local router ID is 95.130.232.4 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, R Removed Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path * i46.219.1.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.2.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.3.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.4.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.5.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i *>i46.219.6.0/24 77.222.66.177 90 0 16243 21219 31148 i * i 77.222.66.181 90 0 16243 21219 31148 i * i46.219.7.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.8.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.9.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.10.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.11.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.12.0/24 77.222.66.181 90 0 16243 21011 31148 i *>i 77.222.66.177 90 0 16243 21011 31148 i * i46.219.13.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.14.0/24 77.222.66.181 90 0 16243 21011 31148 i *>i 77.222.66.177 90 0 16243 21011 31148 i * i46.219.15.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.16.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.17.0/24 77.222.66.181 90 0 16243 21011 31148 i *>i 77.222.66.177 90 0 16243 21011 31148 i * i46.219.18.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.19.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.20.0/24 77.222.66.181 90 0 16243 15772 28761 31148 i *>i 77.222.66.177 90 0 16243 15772 28761 31148 i * i46.219.21.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.22.0/24 77.222.66.181 90 0 16243 21219 31148 i *>i 77.222.66.177 90 0 16243 21219 31148 i * i46.219.23.0/24 77.222.66.181 90 0 16243 21011 31148 i
Если номер AS четрыхзначный, то может потребоваться поиграться с аргументом запроса, добавив экранированный обратным слешем пробел пред номером AS. То есть вписать в поле нечто такое: "\ 31148$" (чтобы не отображались те автономные системы, номер которых содержит номер нашей как подстроку).
Примерно вот так для Apache 2.2 можно быстро сварганить ACL если требуется открыть доступ с сетей определенного провайдера:
cat /tmp/isp-prefixes-from-lg | grep '/' | sed -r 's/^\*[>[:space:]]i//' | awk {'print $1'} | sort -n | while read prefix ; do echo " Allow from $prefix" ; done
Метод не сильно точный, так как в полученном списке префиксов могут оказаться и сети других AS-ок, а не только той, про которую спрашивали. Я не сильно силен в BGP, но подозреваю что это может быть когда искомая AS-ка является транзитной для других AS-ок.