12.7.3. Настройка шлюзов типа Manad под FreeBSD

В настоящее время реализован manad для шлюзов под управлением FreeBSD. Скачать его можно здесь. Необходимо установить его на вашем шлюзе (предварительно потребуется установить Perl) и добавьте в автозапуск.

На вкладке Типы правил добавим два типа правила для данного типа шлюза. Допустим, мы предоставляем доступ двух типов: 10-мегабитный и 128-килобитный. Добавляем в типах правил две записи.

speed=10000000

и

speed=128000

На вкладке Команды в типе шлюза пишем :

[DEFAULT]
<LOOP>
pipe {P0} config bw ${speed}
pipe {P1} config bw ${speed}
add {N0} pipe {P0} ip from any to {A} out
add {N0} pipe {P1} ip from {A} to any in
</LOOP>
[/DEFAULT]

На вкладке Правила в типе шлюза добавляем оба новых правила:

Как видно из примера команды Manad включает в себя подстановки адреса вида {A}, а также другие виды подстановок вида {XN}, где X - латинская буква, а N - цифра. Подстановка адреса осуществляется биллингом перед отсылкой команд, либо при сохранении правила для договора, в зависимости от используемого вида правила (пользовательское/типизированное). Подстановки вида {XN} отправляются на manad вместе с командами для определения номеров пайпов и правил.

Подстановки вида {NET} и {NET_MASK} заменяются на выбранные сети для тегов <LOOP_NET> и <LOOP_NET_MASK>. О том, как это происходит читайте обработку правил Manad.

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

На вкладке Конфигурация шлюзов типа Manad ничего указывать не нужно.

Для добавления пользователя на шлюз откройте договор на вкладке модуля IPN - Шлюзы.

Затем нажмите кнопку Добавить и произведите выбор шлюза. При этом отобразятся только те шлюзы, на которые клиент ещё не был заведён.

Если выбранный шлюз был типа Manad, то откроется редактор правил договора Manad.

Слева в выпадающем списке можно выбрать тип правила, в дереве справа - адреса и сети, на которые оно применяется. В области Команды отображается текст команд, которые будут отправлены на шлюз. При этом, если выбран тип "Пользовательский", то область Команды редактируемая и правило сохраняется в точно таком же виде в БД. Т.е. в этом случае вы можете установить клиенту любые команды, не завязываясь на типе.

Если же выбран тип правила и список адресов, то в базе сохраняется только это сочетание, а текст команд вычисляется динамически в момент отправки на шлюз. При этом выглядит оно так, как отображено в области Команды. Использование типов позволяет более просто менять команды для многих пользователей, просто поправив шаблон в типе.

Для создания пользовательского правила на основании шаблонного выбирается тип правила, адреса, после чего тип правила переключается в "Пользовательский". После чего текст правила может быть изменён.

После настройки биллинга необходимо произвести настройку самого ipfw и установку manad на шлюз.

Доступ клиентам разрешается путём добавления динамических правил файрвола с номером менее 20000.

Предварительно в файле /etc/rc.firewall добавьте правило, запрещающее всем пакетам проход через шлюз. Кроме того, в нашем случае нужно добавить адрес NAT-сервера для того, чтобы мы сами могли выходить в сеть.

Другим решением является изменение структуры сети с установкой шлюза между клиентами и магистралью провайдера.

Ниже приведена конфигурация, подходящая для нашей сети:

fw="/sbin/ipfw -q"

# flush out the list before we begin.
${fw} -f flush

# localhost spoofprotect
${fw} add 10 pass all from any to any via lo0
${fw} add 10 deny all from any to 127.0.0.0/8
${fw} add 10 deny all from 127.0.0.0/8 to any

# deny netbios stuff
${fw} add 20 deny tcp from any to any 135-139,445,593
${fw} add 20 deny udp from any to any 135-139,445

#ssh,telnet, ftp только с адреса NAT сервера
${fw} add 30 pass tcp from 14.3.3.8 to me 20-23
${fw} add 30 pass tcp from me 20-23 to 14.3.3.8

# manad - доступ к манаду сервера биллинга
${fw} add 40 pass tcp from 14.3.3.8 to me 4567
${fw} add 40 pass tcp from me 4567 to 14.3.3.8

###############################################
# Запрет на всякий трафик из нашей сети 14.3.3.0
###############################################
${fw} add 20000 deny all from any to 14.3.3.8/24
${fw} add 20000 deny all from 14.3.3.8/24 to any

## Здесь manad будет добавлять свои правила, открывающие доступ клиентам

${fw} add 30000 pass all from any to any