суббота, 26 ноября 2011 г.

Локальный кэш ripe

Не мое. Источник ниже.

Локальный кэш ripe

http://skipero.livejournal.com/17406.html

Потребовалсь мне найти список всех сетей, подключенных к интернету, что оказалось сложной задачкой, на которую я потратил целую неделю и чтобы сберечь чужое время решил потратить час на эту статью.
Итак, есть различные базы данных IP-Geolocation (вроде Maxmindip2location и подобных), которые позволяют выяснить сеть (название сети) по ip-адресу, но иногда мне нужно еще определить номер автономной системы (см. Автомная система : AS). Объясню почему...

Выделение и назначение блоков ip-адресов

Обычно блоки ip-адресов IANA, вернее c 1998 года региональный регистратор (RIR) этой организации (в случае с Европой и Россией — RIPE), выделяет членской организации —локальному регистатору (сокр.: LIR). Такие блоки имеют тип PA — Proivder Aggregatabled : выделенные провайдеру. Сами блоки IP-адресов бесплатны, но быть LIR-ом — значит платить членский взнос (около 2000 USD в год).
Можно получить независимые от провайдера (LIR-a) адреса — PI. Их выделяют организации, не желающей быть LIR-ом за единоразовую оплату. Выгода от таких адресов — можно сменить интеренет-провайдера, но ip-адреса останутся прежними или же подключиться к нескольким провайдером (для экономии или надежности).



Каждый, кому RIR выделяет блоки ip-адресов PA или PI, должен иметь свою автономную систему (AS), но провайдеры потом распределяют свои ip-адреса клиентам. По-правилам, перед тем как назначить клиенту некий блок ip-адресов (prefix - т.н. префикс в терминалогии BGP), провайдер пишет RIR-у заявку, в которой кратко описывает предназначение этой сети. Когда заявка принята, RIR переводит этот блок ip-адресов в статус assigned (назначено). Когда все адреса LIR-a имеют статус assigned он может попросить RIR выделить дополнительные адреса.
Пример: список префиксов провайдера

Список всех сетей Интернета

Теперь уже понятно зачем нужен список всех сетей и автономных систем, если мы хотим хотим узнать что такой-то ip-адрес принадлежит сети банка A-BANK, а другой корпорации B-CORP, хотя они обслуживаются одним провайдером в пределах одной автономной системы.
Вообще-то, теоретически можно сделать свою базу данных IP-to-Location. Список сетей (префиков) и автономных систем можно скачать у RIR-ов, но в открытом доступе они есть только у RIPE: сети IPv4сети IPv6. Это большие (inetnum распакованный весит более 2Гб) текстовые файлы (данные в формате RPSL), которые ну никак невозможно вставить в базу данных — нужно парсить. Писать парсер — лень, готовых — нет. Но у RIPE есть такая софтина — WhoisServer, которая умеет это делать. Кстати, именно на этой программе работают все сервисы whois у RIR-ов. Чтобы этот сервер установить, мне потребовалась неделя.



Установка WhoisServer (v.3) от RIPE

WhoisServer идет в исходных кодах (на языках C и Perl), т.е. его придется компилировать и только после этого устанавливать. Ах, да! Он под Linux, надеюсь тебя это не пугает.
Основная проблема возникла именно с компиляцией, но в результате многодневных мучений установил на Ubuntu (пробовал также и на CentOS, но категорически не компилировался - выдавал неустранимую ошибку при компиляции модуля c-client imap).
Требования для компиляции:
  • CNU C Compiler gcc (2.95.2)
  • GNU Make (3.79.1)
  • glib (2.0)
  • libxml2 (2.4.26)
  • libxslt (1.0.22)
  • MySQL Server + Client libraries (3.23.54)
  • the c-client library, from the IMAP distribution
  • GNU Privacy Guard (1.0.4 to 1.2.2).
  • Perl (5.6.0) (+ Net::Telnet module)
  • Java compiler and runtime (устанавливать надо JDK, а не Runtime - в нем нет компилятора javac)
Версии должны быть не позднее указанных. Процесс установки на Ubuntu и, наверное, на Debian:
  1. Распокавать в папку, в моем случае на рабочий стол в папку whoissrv-src (~/Desktop/whoissrv-src) и запустить команду в терминале: perl Desktop/whoissrv-src/Install.PL --help (предполагается что вы в домшней директории, если нет то прейди в нее: cd ~). Получишь окно справки.
  2. Создай пользователя в MySQL cо всеми правами (grant all on *.* to whois@'localhost' identified by 'whoispass' with grant option)
  3. В терминале: perl Desktop/whoissrv-src/Install.PL --sqluser=whois --sqlpass=whoispass --dbname=whois --prefix=/usr/local/whoisd --verbose --debug, скорее всего выдаест, что нет модуля NetDelCheck, скачиваем егоftp.ripe.net/ripe/tools/Net-DelCheck-latest.tar.gz, распаковывем (например в Desktop/NetDelCheck) и запускаем perl ~/Desktop/NetDelCheck/Makefile.PL, если не хватает каких-то модулей, то запускаем команду cpan и уже в CPAN команду типаinstall Net::DNS::SEC или чего там будет нехватать. Еще может выдать ошибку с dirname - это значит скрипт не смог найти Java-компилятор javac. Если JDK уже установлен - открываем Install.PL и ищем по "$java", в этой строке находим "locate javac" и меняем на "which javac".
  4. Теперь, когда все перловые модули есть,повторяем команду, но добавим еще параметр --for-development, без него-то компилироваться не будет, т.к. компилятор сыпет предупреждениями из-за которых и не компилируется, т.к. у компилятора CFLAG высокий. Этот параметр его уменьшает, хотя можно в скрипте его найти и поменять. Итак, запускаем perl Desktop/whoissrv-src/Install.PL --sqluser=whois --sqlpass=whoispass --dbname=whois --prefix=/usr/local/whoisd --verbose --debug --for-development
  5. Если все установилось - поздравляю, нет - ройте сами.
  6. В терминале: gksu nautilus — это откроет файл-манаджер с правами root, т.к. нужно будет править файлы в /usr/local/whoisd
  7. Открываем файл /usr/local/whoisd/conf/sources.config ищем строку типа SOURCE TEST или SOURCE SAMPLE или что-то похожее, переименовываем в SOURCE PREFIXES.
  8. В диркеторию /usrl/local/whoisd/var/tmp/load создаем папку PREFIXES
  9. В папку PREFIXES копируем файл RIPE.CURRENTSERIAL и переименовываем в PREFIXES.CURRENTSERIAL
  10. В PREFIXES копируем ripe.db.inetnum.gz и ripe.db.inet6num.gz
  11. В файле /usr/local/whoisd/bin/make_db находим строку LIST=${LIST:-$OBJDIR/sabmle.db.gz} и меняем на LIST=${LIST:-$OBJDIR/*.gz}, т.е. мы хотим загузить в базу данных все файлы gz в папке PREFIXES
  12. В терминале: /usr/local/whoisd/bin/make_db -c /usr/local/whoisd/conf/ripe.config -s PREFIXES -2, если выдает что-то command not found, то устанавливаем необходимые пакеты через команду apt-get
  13. Ждем несколько часов и вуаля!!


Комментариев нет:

Отправить комментарий