Ограничение количества одновременных подключений

Ответить
Dozz
Сообщения: 63
Зарегистрирован: Пт окт 10, 2008 9:30 am
Откуда: Киев
Контактная информация:

Ограничение количества одновременных подключений

Сообщение Dozz »

Система крутиться на mpd5 (PPTP) с pf в качестве фильра пакетов.

Появилась необходимость организовать ограничение количества одновременных подключений со стороны пользователей.

Пока нашел лишь такой вариант, с использованием pf:

Код: Выделить всё

pass in on $int_if proto tcp from $int_if:network to ($int_if) keep state (source-track rule, max-src-states 10)
Это правило ограничивает максимальное количество одновременно создаваемых входящих TCP-соединений на один IP адрес до 10.

Есть какие-либо варианты контролировать UDP-протокол, в котором подключений нет как таковых? Возможно, есть другие варианты выполнить задачу, с использованием возможностей mpd5?

savago
Сообщения: 34
Зарегистрирован: Чт ноя 16, 2006 11:05 pm
Откуда: България
Контактная информация:

Re: Ограничение количества одновременных подключений

Сообщение savago »

set optimization aggressive

Dozz
Сообщения: 63
Зарегистрирован: Пт окт 10, 2008 9:30 am
Откуда: Киев
Контактная информация:

Re: Ограничение количества одновременных подключений

Сообщение Dozz »

savago писал(а):set optimization aggressive
это и выставлено. Но оно ж таймауты в основном задает для очередей. А где лимиты править? Конкретно, как поставить ограничение в N соединений/очередей?

savago
Сообщения: 34
Зарегистрирован: Чт ноя 16, 2006 11:05 pm
Откуда: България
Контактная информация:

Re: Ограничение количества одновременных подключений

Сообщение savago »

Dozz писал(а):
savago писал(а):set optimization aggressive
это и выставлено. Но оно ж таймауты в основном задает для очередей. А где лимиты править? Конкретно, как поставить ограничение в N соединений/очередей?

http://openbsd.org/faq/pf/filter.html#stateopts
Stateful Tracking Options

Dozz
Сообщения: 63
Зарегистрирован: Пт окт 10, 2008 9:30 am
Откуда: Киев
Контактная информация:

Re: Ограничение количества одновременных подключений

Сообщение Dozz »

savago писал(а):http://openbsd.org/faq/pf/filter.html#stateopts
Stateful Tracking Options
Я ж с этого и начинал свой первый пост. Но правило, которое там написано, не совсем годиться для моих задач. Дело в том, что к серверу от клиентов идут служебные пакеты на порт 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?

savago
Сообщения: 34
Зарегистрирован: Чт ноя 16, 2006 11:05 pm
Откуда: България
Контактная информация:

Re: Ограничение количества одновременных подключений

Сообщение savago »

Версий пф-а на фрее и опен бсд различна. Виж за правила на синтакса.

# Разрешить управляющее соединение
pass in on $int_if inet proto tcp from ($int_if:network) to ($int_if) port pptp keep state

# Разрешить использование трафика, инкапсулированного в GRE
pass in on $int_if inet proto gre from ($int_if:network) to ($int_if) keep state

# Разрешить трафик на туннельном интерфейсе
Наконец поставиш твои рестрикции для кол. сесий.

Ответить