docs(#16): ADR-003 (reconcile) и ADR-004 (GeoIP провайдер)
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# 004. GeoIP: RIPE Stat + локальный кэш + абстракция провайдера
|
||||
|
||||
- **Статус:** принято
|
||||
- **Контекст/issue:** #15, #25
|
||||
|
||||
## Контекст
|
||||
|
||||
Для split-tunnel нужны списки префиксов страны (в PoC — около 11 400 записей RIPE).
|
||||
Варианты: RIPE Stat (бесплатно), ip2location и MaxMind (точнее, но лицензия и платный доступ).
|
||||
|
||||
## Решение
|
||||
|
||||
Основной источник — **RIPE Stat** (`country-resource-list`, IPv4 и IPv6): бесплатно и уже проверено в PoC.
|
||||
Обязательные элементы: локальный кэш-снапшот в `/data/geoip/`, расписание обновления, ручное
|
||||
обновление, явный статус источника (API или кэш с датой). Внутри — интерфейс `GeoProvider`, чтобы
|
||||
добавить ip2location/MaxMind без переделки маршрутизации.
|
||||
|
||||
## Альтернативы
|
||||
|
||||
- **MaxMind GeoLite2** — точнее по ASN, но требует регистрации и обновления лицензии; оставляем как опцию.
|
||||
- **Собственный список в репозитории** — устаревает и не покрывает смену маршрутной политики.
|
||||
|
||||
## Последствия
|
||||
|
||||
- Старт не зависит от внешней сети: при недоступности API работаем на кэше (#25, тест #41).
|
||||
- Fallback не должен молча менять политику split-tunnel: неявные переходы в режим «всё в VPN» или
|
||||
«всё напрямую» запрещены, поведение задаётся явно (#23).
|
||||
- Загрузка 11k+ префиксов — измеримая операция; время старта и swap — часть AC #24 и #25.
|
||||
Reference in New Issue
Block a user