Всем привет.
Есть 2 внешних канала инета и настроен PBR на PF. Для tcp всё отлично работает, а вот для UDP не совсем: DNS запросы отлично отрабатываются и ответы возвращаются на тот интерфейс, откуда пришёл запрос. Для openvpn (работает по UDP) - нет, ответы отправляются (смотрю через tcpdump) по default route, хотя правила 1 в 1. Не могу понять, почему для DNS это работает, а для OpenVPN - нет. Может у кого-то есть рабочий пример PBR'a - буду очень признателен. Уже перепробовал десяток разных конфигурация по PRB из сети, но никак не выходит завернуть. Даже где-то наткнулся где-то на тот факт, что для UDP это сделать нельзя.
Вот текущие правила (на время теста убрал block all):

udp_svc="53, 2294"
...
pass in on $ext_if_1 reply-to ($ext_if_1 $gw_1) inet proto udp to ($ext_if_1) port { $udp_svc } pass in on $ext_if_1 inet proto udp from ($ext_if_1:network) to ($ext_if_1) port { $udp_svc }
# MTS
pass in on $ext_if_2 reply-to ($ext_if_2 $gw_2) inet proto udp to ($ext_if_2) port { $udp_svc } pass in on $ext_if_2 inet proto udp from ($ext_if_2:network) to ($ext_if_2) port { $udp_svc }
...
pass out route-to ($ext_if_1 $gw_1) inet from ($ext_if_1) keep state
pass out route-to ($ext_if_2 $gw_2) inet from ($ext_if_2) keep state
pass out inet from { $ext_if_1 $ext_if_2 } to (self:network)

Ответить