Списки
Списки — это группы сайтов или диапазонов IP, которые вы хотите, чтобы keen-pbr сопоставлял.
Ключ lists — это объект, где каждый ключ — это имя списка, а значение — конфигурация списка.
Имена списков должны соответствовать ^[a-z][a-z0-9_]*$ и быть не более 24 символов.
Большинство пользователей начинают с простого списка доменов:
{
"lists": {
"my_sites": {
"domains": ["google.com", "youtube.com"]
}
}
}Поля
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
url |
string | нет | URL удалённого файла списка для загрузки и кэширования |
domains |
array of string | нет | Встроенные доменные паттерны (поддерживает префиксные wildcards *.) |
ip_cidrs |
array of string | нет | Встроенные IP-адреса или диапазоны CIDR |
file |
string | нет | Путь к локальному файлу списка |
ttl_ms |
integer | нет (по умолчанию: 0) |
Как долго разрешённые IP должны храниться в кэше для списков на основе доменов. Большинство пользователей могут оставить это значение 0. |
Должен быть предоставлен хотя бы один из url, domains, ip_cidrs или file.
Под капотом: как сопоставляются списки доменов
Каждый список поддерживается статическими и динамическими наборами IP.
- Статические записи из
ip_cidrs,fileиurlзагружаются немедленно. - Записи доменов добавляются позже, когда dnsmasq их разрешает.
- Если
ttl_msустановлен, эти разрешённые IP для доменов автоматически истекают после этого времени.
Формат файла списка
Независимо от того, загружается ли из url или file, keen-pbr ожидает одну запись на строку:
- IPv4-адрес:
93.184.216.34 - IPv4 CIDR:
10.0.0.0/8 - IPv6-адрес:
2606:2800:220:1:248:1893:25c8:1946 - IPv6 CIDR:
2001:db8::/32 - Домен:
example.com— сопоставляет домен и все его поддомены (семантика dnsmasqserver=/example.com/)- Домен с wildcard:
*.example.orgэквивалентенexample.org, поэтому нет необходимости добавлять*.перед доменом. Для совместимости префикс*.автоматически удаляется
- Домен с wildcard:
- Комментарии: строки, начинающиеся с
#, игнорируются - Пустые строки игнорируются
Примеры
Удалённый список по URL
{
"lists": {
"remote_list": {
"url": "https://raw.githubusercontent.com/v2fly/domain-list-community/refs/heads/master/data/apple"
}
}
}Загруженные файлы кэшируются в daemon.cache_dir. Если URL недоступен при запуске, используется кэшированная копия.
If-Modified-Since или ETag.Встроенный список доменов
{
"lists": {
"my_domains": {
"domains": ["example.com", "other.org"]
}
}
}Обе записи сопоставляют домен и все его поддомены. Написание *.example.com эквивалентно example.com — префикс *. автоматически удаляется keen-pbr.
Встроенный список IP
{
"lists": {
"my_ips": {
"ip_cidrs": [
"93.184.216.34",
"10.0.0.0/8",
"2606:2800:220:1:248:1893:25c8:1946",
"2001:db8::/32"
]
}
}
}Локальный файл
{
"lists": {
"local_list": {
"file": "/etc/keen-pbr/my-list.txt"
}
}
}Все четыре источника объединяются в один список. ttl_ms: 86400000 устанавливает 24-часовой TTL для разрешённых IPs dnsmasq в динамическом наборе (kpbr4d_combined / kpbr6d_combined). Статические IP из ip_cidrs и кэшированного URL/файла загружаются в постоянный статический набор (kpbr4_combined / kpbr6_combined) и никогда не истекают автоматически.