ipfw2 позволяет использовать дополнительные образцы (или блоки), сконструированные из not, or, "{}" или "()". То есть, можно сделать так:goodguys="{ 10.1.2.0/24{20,35,66,18} or 10.2.3.0/28{6,3,11} }"
badguys="10.1.2.0/24{8,38,60}"ipfw add allow ip from ${goodguys} to any
ipfw add deny ip from ${badguys} to any
//Пример из man 8 ipfw2 во FreeBSD 5Конечно, когда мы всё это указываем из коммандной строки, то всё понятно. Забабахали список, потом написали ipfw add NNNN allow ip from ${list} to any, к примеру, и всё. А если нужно, что бы эти списки брались из какого-нибудь файла при загрузке?
Посмотрев скрипт /etc/rc.firewall, пока я нашёл 2 решения:
1) Использовать копию скрипта /etc/rc.firewall, указав его в /etc/rc.conf, куда (в копию) вставить строку
. "нужный нам файл" ,
которая вставит в скрипт инструкции вида
some_list=" { 1 or 2 not 3 } "2) Вставить строку в /etc/rc.conf вида
. "нужный нам файл"
Но в этом случае нужно выбирать оригинальное имя для каждой строки, поскольку файл /etc/rc.conf включают многие скрипты перед запуском, и переменные, которые Вы определите в указанном файле, могут иметь схожее имя с переменными окружения, например; в таком случае, Ваши переменные затрут переменные окружения или ещё какие-нибудь, что чревато последствиями.Вопрос такой: как ещё можно передать переменные при загрузке to ipfw?
>Посмотрев скрипт /etc/rc.firewall, пока я нашёл 2 решения:
>1) Использовать копию скрипта /etc/rc.firewall, указав его в /etc/rc.conf, куда (в копию)
>вставить строку
>. "нужный нам файл" ,
>которая вставит в скрипт инструкции вида
>some_list=" { 1 or 2 not 3 } "ИМХО, это самое разумное решение
>2) Вставить строку в /etc/rc.conf вида
>. "нужный нам файл"
>Но в этом случае нужно выбирать оригинальное имя для каждой строки, поскольку
>файл /etc/rc.conf включают многие скрипты перед запуском, и переменные, которые Вы
>определите в указанном файле, могут иметь схожее имя с переменными окружения,
>например; в таком случае, Ваши переменные затрут переменные окружения или ещё
>какие-нибудь, что чревато последствиями.в этом случае можно сделать так
пусть ipfw_ext_file - твоя переменная
запускай
# grep ipfw_ext_file /etc/rc*
если нет совпадений, то переменная свободна>Вопрос такой: как ещё можно передать переменные при загрузке to ipfw?
ну, в rc.local прописать, /usr/local/etc/rc.d/ipfw.sh сварганить, но принчипиальной разницы это не даст
>ИМХО, это самое разумное решение
Правда, не работает... Пока не знаю почему, млин.
>>2) Вставить строку в /etc/rc.conf вида
>
>в этом случае можно сделать так
>пусть ipfw_ext_file - твоя переменная
>запускай
># grep ipfw_ext_file /etc/rc*
>если нет совпадений, то переменная свободна
Ех, млин, всё равно не робит :(
>
>>Вопрос такой: как ещё можно передать переменные при загрузке to ipfw?
>
>ну, в rc.local прописать, /usr/local/etc/rc.d/ipfw.sh сварганить, но принчипиальной разницы это не даст
>
И всё таки, люди!!! Неужели никто не озадачивался вопросом, куда засовывать "goodguys" и "badguys", когда читал ман по ipfw?! И никого не интересовало, что правила можно написать очень компактно и красиво, чем, кстати, уменьшить потенциальное количество ошибок.Если есть, что рассказать - не поленитесь!
>И всё таки, люди!!! Неужели никто не озадачивался вопросом, куда засовывать "goodguys"
>и "badguys", когда читал ман по ipfw?! И никого не интересовало,
>что правила можно написать очень компактно и красиво, чем, кстати, уменьшить
>потенциальное количество ошибок.
>
>Если есть, что рассказать - не поленитесь!А чем тебе rc.firewall неугодил и предлагаемый в man запуск файрвола и указания правил для него?
>>ИМХО, это самое разумное решение
>Правда, не работает... Пока не знаю почему, млин.
>>2) Вставить строку в /etc/rc.conf видаИ что у тебя конкретно не работатет?
Ja delaju tak :
#############
# Blocked IP's
for a in `cat /etc/blocked.ip`; do
$fwcmd add deny ip from any to $a via em0
$fwcmd add deny ip from $a to any via em0
done
#############
Gde "blocked.ip" spisok plohih IP.(standartnij rc.firewall ja ne ispol'zuju)
Это дело все работает ведь только при перечтении правил фаервола...
Кто-нибудь может подсказать про опцию "-p"
> ipfw [-cnNqS] [-p preproc [preproc-flags]] pathname
Для чего вообще нужен preproc и как его использовать.
Может, линки есть почитать?
>Кто-нибудь может подсказать про опцию "-p"
>> ipfw [-cnNqS] [-p preproc [preproc-flags]] pathname
>Для чего вообще нужен preproc и как его использовать.
>Может, линки есть почитать?
Oznachaet ispolzovanie vneshnego preprocesora, naprimer m4 ili ccp . Vot ssilku posmotri vse stanet jasno
http://michaelrose.org/marathon/ipfw.conf-m4
http://www.bsd.net.au/article.php?story=20030309201559813