Устройство: Keenetic Giga (KN-1011), регион EAEU
Версия: 5.2 Alpha 9 (5.02.A.9.0-0), канал draft
Воспроизводится также на 5.1 Beta 0.2 (5.01.B.0.0-2)
КОНФИГУРАЦИЯ
- GigabitEthernet1 — провайдер, маршрут по умолчанию в системной таблице.
- Wireguard0 — VPN-подключение.
- Bridge2 — отдельный сегмент, привязан к политике Policy0. В политике разрешён только Wireguard0, GigabitEthernet1 явно запрещён. Маршрут по умолчанию в таблице политики: 0.0.0.0/0 -> Wireguard0.
- Сетевые правила -> Маршрутизация -> Маршруты DNS: создан список доменных имён, создано правило "список -> GigabitEthernet1".
- Проверены все комбинации флагов "Эксклюзивный маршрут" и "Добавлять автоматически" — поведение одинаковое.
ОЖИДАЕТСЯ
Клиент из сегмента Bridge2 резолвит домен из списка -> для полученного IP устанавливается маршрут через GigabitEthernet1 -> трафик идёт мимо Wireguard0.
ФАКТИЧЕСКИ
Маршрут не создаётся вообще: ни в системной таблице, ни в таблице политики. Трафик к домену из списка уходит через Wireguard0. Правило при этом корректно сохранено в конфигурации:
show sc dns-proxy route -> { "group": "domain-list0", "interface": "GigabitEthernet1", "auto": true }
ДИАГНОСТИКА, УКАЗЫВАЮЩАЯ НА ПРИЧИНУ
В выводе show dns-proxy параметр fqdn_mirror_path присутствует только у системного экземпляра прокси и отсутствует у экземпляров, создаваемых для политик:
proxy-name "System" -> fqdn_mirror_path = /var/run/fqdn-dns-mirror.sock
proxy-name "Policy0" -> параметр отсутствует
proxy-name "Policy1" -> параметр отсутствует
Клиенты сегмента, привязанного к политике, обслуживаются прокси этой политики, поэтому механизм отслеживания FQDN к их запросам не применяется. Счётчики Total incoming requests у Policy0 растут, то есть запросы идут именно через него.
ЧТО ПРИ ЭТОМ РАБОТАЕТ
Обычные статические IPv4-маршруты через GigabitEthernet1 корректно попадают в таблицу политики Policy0 и работают, несмотря на то что GigabitEthernet1 в этой политике запрещён. То есть policy-based маршрутизация сама по себе исправна — не работает именно связка "Маршруты DNS + политика подключений".
МИНИМАЛЬНОЕ ВОСПРОИЗВЕДЕНИЕ
1. Создать сегмент и привязать его к политике, где разрешён только VPN-интерфейс.
2. Создать список доменных имён с любым доменом.
3. Создать DNS-маршрут "этот список -> интерфейс провайдера".
4. С клиента этого сегмента резолвить домен и посмотреть traceroute: трафик идёт через VPN, маршрут не создан.