Настройка шлюзов типа 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