Iplist
IP Address Collection and Management Service with multiple output formats: mikrotik, json, text, ipset, nfset, clashx, keenetic, switchy, amnezia
Install / Use
/learn @rekryt/IplistREADME
IP Address Collection and Management Service with multiple formats
For english readme: README.en.md
Demo URL: https://iplist.opencck.org
Сервис сбора IP-адресов и CIDR зон
Данный сервис предназначен для сбора и обновления IP-адресов (IPv4 и IPv6), а также их CIDR зон для указанных доменов.
Это асинхронный PHP веб-сервер на основе AMPHP и Linux-утилит whois и ipcalc.
Сервис предоставляет интерфейсы для получения списков зон ip адресов указанных доменов (IPv4 адресов, IPv6 адресов, а также CIDRv4 и CIDRv6 зон) в различных форматах, включая текстовый, JSON, форматы скриптов для добавления в "Address List" на роутерах Mikrotik (RouterOS), Keenetic KVAS\BAT, SwitchyOmega, Amnezia и др.
Основные возможности
- Сбор и автоматическое обновление IP-адресов и CIDR зон для доменов.
- Поддержка вывода данных в различных форматах (JSON, lst, Mikrotik, OpenWRT, ipset и т.д).
- Интеграция с внешними источниками данных (поддержка импорта начальных данных из внешних URL).
- Легкое развертывание с помощью Docker Compose.
- Настройка через JSON файлы для управления доменами.
Используемые технологии
- PHP 8.1+ (amphp, revolt)
- whois, ipcalc (linux)
Форматы выгрузки
| формат | описание | |----------|-------------------------------| | json | JSON формат | | text | Разделение новой строкой | | comma | Разделение запятыми | | geoip | v2rayGeoIPDat | | mikrotik | MikroTik Script | | switchy | SwitchyOmega RuleList | | nfset | Dnsmasq nfset | | ipset | Dnsmasq ipset | | clashx | ClashX | | kvas | Keenetic KVAS | | bat | Keenetic Routes .bat | | wildcard | Keenetic DNS | | amnezia | Amnezia filter list | | pac | Proxy Auto-Configuration file |
Настройки
Конфигурационные файлы хранятся в config/<группа>/<портал>.json. Каждый JSON файл представляет собой конфигурацию для конкретного портала, задавая домены для мониторинга и источники начальных данных по IP и CIDR.
{
"domains": [
"youtube.com",
"www.youtube.com",
"m.youtube.com",
"www.m.youtube.com",
"googlevideo.com",
"www.googlevideo.com",
"ytimg.com",
"i.ytimg.com"
],
"dns": ["127.0.0.11:53", "77.88.8.88:53", "8.8.8.8:53"],
"timeout": 43200,
"ip4": [],
"ip6": [],
"cidr4": [],
"cidr6": [],
"external": {
"domains": ["https://raw.githubusercontent.com/nickspaargaren/no-google/master/categories/youtubeparsed"],
"ip4": ["https://raw.githubusercontent.com/touhidurrr/iplist-youtube/main/ipv4_list.txt"],
"ip6": ["https://raw.githubusercontent.com/touhidurrr/iplist-youtube/main/ipv6_list.txt"],
"cidr4": ["https://raw.githubusercontent.com/touhidurrr/iplist-youtube/main/cidr4.txt"],
"cidr6": ["https://raw.githubusercontent.com/touhidurrr/iplist-youtube/main/cidr6.txt"]
}
}
| свойство | тип | описание | |----------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | domains | string[] | Список доменов портала | | dns | string[] | Список DNS серверов для обновления ip-адресов. По мимо локального и google dns, можно использовать публичные российские DNS, например Яндекс | | timeout | int | Время между обновлением ip-адресов доменов (секунды) | | ip4 | string[] | Начальный список ipv4 адресов | | ip6 | string[] | Начальный список ipv6 адресов | | cidr4 | string[] | Начальный список CIDRv4 зон ipv4 адресов | | cidr6 | string[] | Начальный список CIDRv6 зон ipv6 адресов | | external | object | Списки URL для получения данных от сторонних источников |
| свойство | тип | описание | |----------|----------|-----------------------------------------------------| | domains | string[] | Список URL для пополнения доменов портала | | ip4 | string[] | Список URL для пополнения ipv4 адресов | | ip6 | string[] | Список URL для пополнения ipv6 адресов | | cidr4 | string[] | Список URL для пополнения CIDRv4 зон ipv4 адресов | | cidr6 | string[] | Список URL для пополнения CIDRv6 зон ipv6 адресов |
Настройка и запуск под docker
git clone https://github.com/rekryt/iplist.git
cd iplist
cp .env.example .env
Если требуется отредактируйте .env файл
| свойство | значение по умолчанию | описание | |----------------------------|-----------------------|------------------------------------------------------------| | COMPOSE_PROJECT_NAME | iplist | Имя compose проекта | | STORAGE_SAVE_INTERVAL | 120 | Период сохранения кеша whois (секунды) | | SYS_DNS_RESOLVE_IP4 | true | Получать ipv4 адреса | | SYS_DNS_RESOLVE_IP6 | true | Получать ipv6 адреса | | SYS_DNS_RESOLVE_CHUNK_SIZE | 10 | Размер чанка для получения dns записей | | SYS_DNS_RESOLVE_DELAY | 100 | Задержка между получением dns записей (миллисекунды) | | SYS_IP6_SUBNET_PREFIX_CAP | 64 | Максимально допустимая длина префикса IPv6-подсети | | SYS_MEMORY_LIMIT | 1024M | Предельное кол-во памяти. | | SYS_TIMEZONE | Europe/Moscow | Список URL для получения начальных CIDRv4 зон ipv4 адресов | | HTTP_HOST | 0.0.0.0 | IP сетевого интерфейса (по умолчанию все интерфейсы) | | HTTP_PORT | 8080 | Сетевой порт сервера (по умолчанию 8080) | | DEBUG | true | Определяет уровень логирования |
docker compose up -d
Открыть сервис можно в браузере по протоколу http, порт 8080
http://0.0.0.0:8080/
http://0.0.0.0:8080/?format=json
http://0.0.0.0:8080/?format=json&site=youtube.com&data=domains
http://0.0.0.0:8080/?format=text&site=youtube.com&data=ip4
http://0.0.0.0:8080/?format=mikrotik&data=cidr4
http://0.0.0.0:8080/?format=mikrotik&site=youtube.com&data=cidr4
http://0.0.0.0:8080/?format=comma&data=cidr4
| get параметр | описание | пример | |------------------|----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | format | Формат выгрузки данных | ?format=text | | data | Данные для выгрузки | ?data=cidr4 | | site | Портал для выгрузки данных | ?site=youtube.com | | group | Группа для выгрузки данных | ?group=youtube
