В настоящее время реализован 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.
Предварительно в файле
добавьте правило, запрещающее всем пакетам проход через шлюз. Кроме того, в нашем случае нужно добавить адрес 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