Policy Based Routing + nftables + zapret на нескольких WAN #374
-
У меня такой сетап (уже описывал где-то в дискуссиях, но повторюсь): I. Роутер с OpenWrt, WAN PPPoE (назовем его WAN1), установлен zapret (nftables + nfqws + autohostlist). На нем настроен policy based routing с отдельными правилами, устанавливающими для пакетов с определенным src шлюз по умолчанию как адрес устройства в LAN, указанного в п. 2. II. Одноплатник с Arch Linux с подключенным по USB смартфоном в режиме usb-модема, с целью (кроме прочего) использования в качестве резервного WAN (назовем его WAN2). Сеть настраивается с помощью systemd-networkd, на WAN2 настроен zapret в том же режиме, что и на роутере. Раньше я настраивал на WAN2 приоритет с помощью установки на интерфейсе метрики 512, при этом второй default gateway на роутер устанавливался автоматически с метрикой 1024, а далее я маскарадил весь перенаправленный с роутера трафик с local src и nonlocal dst на WAN2. Однако проблема была в том, что сам одноплатник тоже ходил в интернеты по WAN2, а это было не нужно, поэтому я решил сделать настройку по-другому:
Интернеты заработали как надо (теперь на WAN2 ходят только перенаправленные с роутера устройства, сам одноплатник ходит за интернетами на роутер с WAN1), но zapret на WAN2 работать перестал. Полагаю, из-за переназначения fwmark, которые сам zapret использует для разграничения обрабатываемого трафика. Либо из-за перескока трафика на уровень flow ниже, чем его обрабатывает zapret. Прошу помочь решить проблему. Полагаю, есть куда более изящное решение для изначальной проблемы. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
не стоит полностью переназначать марк затем включить логгинг tpws/nfqws и посмотреть что они творят |
Beta Was this translation helpful? Give feedback.
не стоит полностью переназначать марк
надо использовать отдельные биты
по маске 0x60000000 ничего менять не нужно
хотя можно переназначить биты для zapret в конфиге
затем включить логгинг tpws/nfqws и посмотреть что они творят
для nfqws:
если обработка идет - убедиться, что нет ошибок отсылки
если нет, проверить на тот ли интерфейс уходят генеренные nfqws пакеты
если не тот, есть опции --bind-fix4 и --bind-fix6