Здравствуйте! Я довольно давно пользуюсь linux, но вот, по ряду причин решил перейти на freebsd. Все меня устраивает во фре, но вот добрался до фаервола и возникли вопросы.Можно ли осуществлять фильтрацию траффика с помощью ipfw по диапазона адресов (адреса берутся каждые пол часа из таблиц "российских" провайдера)?
В linux я осуществлял это так (кусочек шелл скрипта):$IPT -F rus
$IPT -X rus
$IPT -N rus
$IPT -P rus REJECT
$IPT -A rus -s 195.7.160.0/19 -j ACCEPT
$IPT -A rus -s 62.118.0.0/16 -j ACCEPT
$IPT -A rus -s 213.219.240.0/20 -j ACCEPT
# и т.д. Все что выше, генерится с помощью перл скрипта, запускаемым кроном$IPT -A allow_runet -p TCP --syn -j rus
$IPT -A allow_runet -p TCP -m state --state ESTABLISHED,RELATED -j rus$IPT -A tcp_packets -p TCP --dport 20:21 -j allow_runet
$IPT -A tcp_packets -p TCP --dport 80 -j allow_runetДалее, не вижу смысла приводить...
Приведите, пожалуйста пример подобного фильтра.
Спасибо
У меня это организовано так, есть файл /etc/rusnet.ip
-------------
80.72.208.0/20
80.89.133.16/28
80.89.133.32/27
80.89.135.0/24
80.89.143.0/24
80.89.147.0/24
...
------------в скрипте rc.firewall
сделал такую функцию
------------
pass_only_rus() {
FILE=/etc/rusnet.ip
i=1
j=7000
pass_rule=9000
size=`more $FILE | wc -l`
while (test $i -le $size)
do
i=$(($i+1))
j=$(($j+1))
str=`more $FILE | tail -n $i | head -n 1`
${fwcmd} add $j skipto ${pass_rule} all from ${inet} to ${str}
j=$(($j+1))
${fwcmd} add $j skipto ${pass_rule} all from ${str} to ${inet}
done;
...
pass_only_rus
...
${fwcmd} add 8999 deny log logamount 40000 all from any to any
...
---------------Логика такова - если трафик по определенным диапазонам, перкидываю на обработку дальше, а все что не подходит- будет блокироваться. Т.е. начиная с 9000-го правила идет обработка трафика, какие порты разрешить и т.д.
PS Если кто может прокоментировать скрипт - мне будет интересно