Я ж с этого и начинал свой первый пост. Но правило, которое там написано, не совсем годиться для моих задач. Дело в том, что к серверу от клиентов идут служебные пакеты на порт pptp, а данные идут в виде GRE-пакетов. Контролировать таким образом количество соединений во внешний мир не выйдет, так как все эти соединения энкапсулированы в GRE-пакеты. Если же Stateful Tracking Options опции ставить на правило, разрешающее выход в мир, то оно будет срабатывать после NAT-а, и, соответсвенно, будет ограничивать количество исходящих соединений от сервера, а не от клиентов виртуальной сети.
Короче говоря, надо заставить работать приблизительно такое правило:
Код: Выделить всё
pass out on $ext_if proto {udp,tcp} from $vpn_if:network to any keep state (source-track rule, max-src-states 10)
т.е. разрешить клиентам виртуальной VPN-сети выходить в мир через НАТ, навешенный на $ext_if, контролируя при этом количество одновременных соединений (как TCP, так и UDP).
Как это возможно сделать средствами pf, nat, mpd или abills?