Страница 1 из 1

Вопрос по поводу ipacctd

Добавлено: 2007-03-06 22:47:51
Wrbt
Появилась мысль посчитать количество траффика. На машине где предполагал попробовать уже стоит squid и всё замечательно считает sarg. Все пользуют её для выхода в сеть. Но охота поэксперементировать. За пример взята эта статья http://www.lissyara.su/?id=1134
Ядро пересобрано со следующими опциями

options IPFIREWALL
options IPFIREWALL_FORWARD
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options TCP_DROP_SYNFIN

IPFW работает, логи пишет вроде с задачей справляется, но есть одно но правила написаны следующим образом

add 100 check-state

add 200 deny log icmp from any to any in icmptype 5,9,13,14,15,16,17
add 300 allow ip from any to any via lo0
add 320 deny log ip from any to 127.0.0.0/8
add 330 deny log ip from 127.0.0.0/8 to any
add 360 allow ip from me to any keep-state
add 510 allow udp from any to 10.0.0.1 67,68
add 520 allow udp from 10.0.0.1 to any 67,68
add 700 allow tcp from me to any 53
add 710 allow tcp from 10.0.0.1 53 to me
add 720 allow udp from me to any 53
add 730 allow udp from 10.0.0.1 53 to me
add 800 allow tcp from 10.0.0.0/16 to me 3128


add 1001 reject log tcp from any to any tcpflags fin, syn, rst, psh, ack, urg
add 1002 reject log tcp from any to any tcpflags !fin, !syn, !rst, !psh, !ack, !
add 1003 reject log tcp from any to any not established tcpflags fin
add 1004 deny log ip from any to any not verrevpath in
add 1005 allow ip from any to any setup limit src-addr 10
add 1006 deny log all from any to me in ipoptions ssrr
add 1007 deny log logamount 50 ip from any to me in ipoptions lsrr
add 1008 deny log all from any to me in ipoptions rr
add 1009 deny log all from any to me in ipoptions ts


add 65534 deny log all from any to any

В этом случае все работает на ура. ( подозреваю, что далеко от идеала). Как только попробовал сделать как надо

FwCMD="/sbin/ipfw"

${FwCMD} -f flush

${FwCMD} add divert 10001 ip from any to any via xl0
${FwCMD} add divert 10002 ip from any to any via lo0
${FwCMD} add deny ip from not 10.0.0.0/16 to me
${FwCMD} add allow ip from any to any

При загрузке вижу примерно следующее
Bad command FwCMD="/sbin/ipfw"

Как итог всё всем запрещает. Пытался писать по разному, результат один, хотя

/sbin/ipfw -d list

Работает. Что я делаю неправильно? Поясните плиз?
По поводу ipacctd. Если делаю правила в таком виде

add 100 divert 10001 ip from any to any via xl0
add 200 divert 10002 ip from any to any via lo0
add 300 deny ip from not 10.0.0.0/16 to me
add 400 allow ip from any to any

Все срабатывает, но логов в /var/log не появляется, хотя ps говорит что

524 ?? Ss 1:52.80 /usr/local/sbin/ipacctd -v -p 10001 -f /var/log/traff
527 ?? Is 0:00.10 /usr/local/sbin/ipacctd -v -p 10002 -f /var/log/traff

Подскажите кто зает как бороться, в какую сторону копать? Не дайте умереть идиотом)) Всем заранее спасибо за ответы.

P.S Free 6.2 + Athlon 64

Добавлено: 2007-03-06 23:15:32
Alex Keda
Автоподпись: Юзайте кнопочку [cоde] пожалуйста
====================================
Что за привычка - писать номера правил? Не надо их писать. надо их в скрипте файрволла в правильном порядке расставлять.
и дай

Код: Выделить всё

ipfw list
для начала.
и ещё - логи сами не сбрасываются. надо давать команду, чтоб сбросил...

Добавлено: 2007-03-06 23:22:02
Wrbt

Код: Выделить всё

ipfw list
00100 divert 10001 ip from any to any via xl0
00200 divert 10002 ip from any to any via lo0
00300 check-state
00310 divert 10001 ip from any to any via xl0
00320 divert 10002 ip from any to any via lo0
00330 deny log logamount 50 icmp from any to any in icmptypes 5,9,13,14,15,16,17
00340 allow ip from any to any via lo0
00350 deny log logamount 50 ip from any to 127.0.0.0/8
00360 deny log logamount 50 ip from 127.0.0.0/8 to any
00370 allow ip from me to any keep-state
00510 allow udp from any to 10.0.0.1 dst-port 67,68
00520 allow udp from 10.0.0.1 to any dst-port 67,68
00700 allow tcp from me to any dst-port 53
00710 allow tcp from 10.0.0.1 53 to me
00720 allow udp from me to any dst-port 53
00730 allow udp from 10.0.0.1 53 to me
00800 allow tcp from 10.0.0.2 to me
00810 allow tcp from 10.0.0.3 to me
01001 reject log logamount 50 tcp from any to any tcpflags syn,fin,ack,psh,rst,urg
01002 reject log logamount 50 tcp from any to any tcpflags !syn,!fin,!ack,!psh,!rst,!urg
01003 reject log logamount 50 tcp from any to any not established tcpflags fin
01004 deny log logamount 50 ip from any to any not verrevpath in
01005 allow ip from any to any setup limit src-addr 10
01006 deny log logamount 50 ip from any to me in ipoptions ssrr
01007 deny log logamount 50 ip from any to me in ipoptions lsrr
01008 deny log logamount 50 ip from any to me in ipoptions rr
01009 deny log logamount 50 ip from any to me in ipoptions ts
65535 deny ip from any to any
Это по принципу

Код: Выделить всё

add 100 check-state 

add 200 deny log icmp from any to any in icmptype 5,9,13,14,15,16,17 
add 300 allow ip from any to any via lo0 
add 320 deny log ip from any to 127.0.0.0/8 
add 330 deny log ip from 127.0.0.0/8 to any 
add 360 allow ip from me to any keep-state 
add 510 allow udp from any to 10.0.0.1 67,68 
add 520 allow udp from 10.0.0.1 to any 67,68
Хотелось бы по уму.
Как логи сбросить? По настройке ipacctd только тут было найдено внятное описание. Подозреваю, что есть аналоги на английском, но не уверен, что будут полными и ответят на мой вопрос. Спасибо

P.S Не надо их писать. надо их в скрипте файрволла в правильном порядке расставлять

Дык не волшебник только учусь

Добавлено: 2007-03-06 23:26:02
Alex Keda
собсно, из статьи что ты сам ссылаешься, тебе нужна одна строка:

Код: Выделить всё

# Сохраняем статистику по всем интерфейсам
# sleep введён по причине, что иногда не успевает траффик
# в текстовый файл сохраниться - подумываю ещё sync воткнуть
killall -1 ipacctd && sleep 1
коли уж скрипт не используешь.

Добавлено: 2007-03-06 23:38:08
Wrbt
Дело в том, что до скрипта я не добрался. Поскольку смутился отсутствию логов. Ну и решил задать вопрос , в любом случае спасибо, буду пробовать.
И всётаки почему правила вида

Код: Выделить всё

FwCMD="/sbin/ipfw" 

${FwCMD} -f flush 

${FwCMD} add divert 10001 ip from any to any via xl0 
${FwCMD} add divert 10002 ip from any to any via lo0 
${FwCMD} add deny ip from not 10.0.0.0/16 to me 
${FwCMD} add allow ip from any to any
Не работают? Ну подозреваю, что руки кривые и между строк читать не умею. Но Фря то вроде у всех одинаковая? Не может не работать у меня , но работать у соседа. Ткните плиз в разгадку

Добавлено: 2007-03-06 23:52:11
Alex Keda
а как определял что не работает?

Добавлено: 2007-03-07 0:06:48
Wrbt
При загрузке вижу примерно следующее
Bad command FwCMD="/sbin/ipfw"

Как итог всё всем запрещает. Пытался писать по разному, результат один, хотя

/sbin/ipfw -d list

Работает

Добавлено: 2007-03-07 11:25:53
dikens3
Wrbt писал(а):При загрузке вижу примерно следующее
Bad command FwCMD="/sbin/ipfw"

Как итог всё всем запрещает. Пытался писать по разному, результат один, хотя

/sbin/ipfw -d list

Работает
cat /etc/rc.conf | grep firewall
покажешь?
+ сам конфиг фаера.

P.S. Интересует сам процесс запуска фаера.

Добавлено: 2007-03-07 11:34:23
Wrbt
К сожалению rc.conf нет перед глазами, но на память там только ipfirewall_enable="yes" и строчка с указанием пути к скрипту. Сам скрипт в первом сообщении. В рабочем и нерабочем варианте. rc.conf вечером точнее выложу

Добавлено: 2007-03-07 11:51:17
dikens3
Мой конфиг, проблем обычно не вызывает:

Код: Выделить всё

# cat /etc/rc.conf | grep firewall
firewall_enable="YES"
firewall_script="/etc/myfirewall"
А здесь сам firewall, файл сделан выполняемым, и перезапуск осуществляется простым нажатим enter в mc. (или ./etc/myfirewall)

Код: Выделить всё

#!/bin/sh -

iflan="fxp0"
mylan="192.168.0.0/16"

fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush

# Пускаем lo
        ${fwcmd} add pass all from any to any via lo0
# Пускаем Нашу сеть
        ${fwcmd} add pass all from any to any via ${iflan}