Не мое. Источник ниже.
Локальный кэш ripe
http://skipero.livejournal.com/17406.html
Потребовалсь мне найти список всех сетей, подключенных к интернету, что оказалось сложной задачкой, на которую я потратил целую неделю и чтобы сберечь чужое время решил потратить час на эту статью.
Итак, есть различные базы данных IP-Geolocation (вроде Maxmind, ip2location и подобных), которые позволяют выяснить сеть (название сети) по 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:
- Распокавать в папку, в моем случае на рабочий стол в папку whoissrv-src (~/Desktop/whoissrv-src) и запустить команду в терминале: perl Desktop/whoissrv-src/Install.PL --help (предполагается что вы в домшней директории, если нет то прейди в нее: cd ~). Получишь окно справки.
- Создай пользователя в MySQL cо всеми правами (grant all on *.* to whois@'localhost' identified by 'whoispass' with grant option)
- В терминале: perl Desktop/whoissrv-src/Install.PL --sqluse
r=whois --sqlpass=whoispass --dbname=whois --prefix=/usr/local/whoisd --verbose --debug, скорее всего выдаест, что нет модуля NetDelCheck, скачиваем егоftp.ripe.net/ripe/tools/Net-DelCheck-lat est.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". - Теперь, когда все перловые модули есть,повторяем команду, но добавим еще параметр --for-development, без него-то компилироваться не будет, т.к. компилятор сыпет предупреждениями из-за которых и не компилируется, т.к. у компилятора CFLAG высокий. Этот параметр его уменьшает, хотя можно в скрипте его найти и поменять. Итак, запускаем perl Desktop/whoissrv-src/Install.PL --sqluser=whois --sqlpass=whoispass --dbname=whois --prefix=/usr/local/whoisd --verbose --debug --for-development
- Если все установилось - поздравляю, нет - ройте сами.
- В терминале: gksu nautilus — это откроет файл-манаджер с правами root, т.к. нужно будет править файлы в /usr/local/whoisd
- Открываем файл /usr/local/whoisd/conf/sources.config ищем строку типа SOURCE TEST или SOURCE SAMPLE или что-то похожее, переименовываем в SOURCE PREFIXES.
- В диркеторию /usrl/local/whoisd/var/tmp/load создаем папку PREFIXES
- В папку PREFIXES копируем файл RIPE.CURRENTSERIAL и переименовываем в PREFIXES.CURRENTSERIAL
- В PREFIXES копируем ripe.db.inetnum.gz и ripe.db.inet6num.gz
- В файле /usr/local/whoisd/bin/make_db находим строку LIST=${LIST:-$OBJDIR/sabmle.db.gz} и меняем на LIST=${LIST:-$OBJDIR/*.gz}, т.е. мы хотим загузить в базу данных все файлы gz в папке PREFIXES
- В терминале: /usr/local/whoisd/bin/make_db -c /usr/local/whoisd/conf/ripe.config -s PREFIXES -2, если выдает что-то
command not found
, то устанавливаем необходимые пакеты через команду apt-get - Ждем несколько часов и вуаля!!
Комментариев нет:
Отправить комментарий