Я пытаюсь настроить выборочную маршрутизацию трафика, отфильтрованного по IP-адресу, через OpenVPN на моем маршрутизаторе OpenWRT.
У меня есть профиль OpenVPN, и я работаю с параметром route-nopull, чтобы отключить настройку шлюза по умолчанию.
Следующие команды предназначены для того, чтобы пакеты были нацелены на набор IP-адресов и помечены меткой 0x1 в разделе предварительной маршрутизации mangle:
nft add set inet fw4 marker { type ipv4_addr \;}
nft добавить элемент inet fw4 маркер {40.81.94.43}
правило вставки nft inet fw4 mangle_prerouting ipdddr @marker счетчик метаметка набор 0x1
Затем у меня есть настройка таблицы IP-маршрутов для маршрутизации помеченных пакетов через VPN-шлюз:
ip правило добавить fwmark 1 таблицу vpn
ip route добавить по умолчанию через 10.211.1.118 dev tun_vpn table vpn
Эта настройка почему-то не работает: трафик просто проходит через стандартный wan-шлюз, хотя счетчик nft показывает, что пакеты попадают в правило маркировки.
Однако, если я явно установлю таблицу маршрутизации, которая будет использоваться для IP-адреса, она будет работать так, как ожидалось:
ip правило добавить в таблицу 40.81.94.43 vpn
направляет трафик на 40.81.94.43 через vpn-шлюз по назначению
Похоже, либо nft не помечает пакеты меткой 0x1, либо IP-правило добавить fwmark 1
не ловит почему-то.
Что мне не хватает?