Еще раз о ipcad+squid+lightsquid
-
пишу свои параметры:
1. Версия pfSense
1.2.3-release2. Лог загрузки системы в части касающейся ipcad и rsh
less /var/log/dmesg.boot | grep ipcad
less /var/log/dmesg.boot | grep rsh
Ничего не выводят.3. Права на ipcad.dump, ipcad.pid, rsh, tolog.sh
-rw–----- 1 root wheel 0 Mar 21 10:27 ipcad.dump
-rw-r--r-- 1 root wheel 4 Mar 23 15:56 ipcad.pid
-rwxr-xr-x 1 root wheel 356 Mar 18 15:50 tolog.sh
-r-xr-xr-x 1 root wheel 8684 Mar 21 15:19 rsh4. cat ipcad.conf | grep -v '^(#|$)'
capture-ports enable; interface em1 filter "ip and dst net 192.168.0.0/16 and not src net 192.168.0.0/16 and not src port 80"; aggregate 192.168.0.0/16 strip 32; /* Don't aggregate internal range */ aggregate 0.0.0.0/0 strip 32; /* Don't! Aggregate external networks */ aggregate 21 into 21; /* FTP */ aggregate 22 into 22; /* SSH */ aggregate 23 into 23; /* Telnet */ aggregate 25 into 25; /* SMTP */ aggregate 81 into 81; /* 81 */ aggregate 110 into 110; /* POP3 */ aggregate 123 into 123; /* NTP */ aggregate 143 into 143; /* IMAP */ aggregate 443 into 443; /* HTTPS */ aggregate 465 into 465; /* SMTP/S */ aggregate 993 into 993; /* IMAP/S */ aggregate 995 into 995; /* POP3/S */ aggregate 1863 into 1863; /* MSN */ aggregate 5190 into 5190; /* ICQ */ aggregate 5900 into 5900; /* VNC */ aggregate 5938 into 5938; /* TeamViewer */ aggregate 8081 into 8081; /* 8081 */ netflow export version 5; # NetFlow export format version {1|5} netflow timeout active 30; # Timeout when flow is active, in minutes netflow timeout inactive 15; # Flow inactivity timeout, in seconds netflow engine-type 73; # v5 engine_type; 73='I' for "IPCAD" netflow engine-id 1; # Useful to differentiate multiple ipcads. netflow ifclass eth mapto 0-99; # i.e., "eth1"->1, "eth3"->3 netflow ifclass fxp mapto 0-99; # i.e., "fxp4"->4, "fxp0"->0 netflow ifclass ppp mapto 100-199; # i.e., "ppp32"->532, "ppp7"->507 netflow ifclass gre mapto 200-299; netflow ifclass tun mapto 300-399; # i.e., "tun0"->300 rsh enable at 127.0.0.1; /* Note the order! */ rsh root@127.0.0.1 admin; /* Can shutdown ipcad */ rsh root@127.0.0.1 backup; /* Can dump/restore/import accounting table */ rsh root@127.0.0.1; /* Can view and modify accounting tables */ rsh 127.0.0.1 view-only; /* Other users can view current tables */ rsh ttl = 3; rsh timeout = 30; dumpfile = /var/log/ipcad/ipcad.dump; # The file is inside chroot(), see below... chroot=/var/log/ipcad; pidfile = ipcad.pid; memory_limit = 10m;
5. tolog.sh
#!/bin/sh net="192.168" ttime=`/usr/bin/rsh localhost sh ip acco | grep 'Accounting data saved' | awk '{print ($4)}'` rsh localhost clear ip accounting rsh localhost show ip accounting checkpoint | grep $net | awk -v vtime=$ttime '{if ($5 != 0) print (vtime".000",1,$2,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}' >> /var/squid/log/access.log
6. из config.xml с настройками cron:
<cron><minute>0</minute> <hour>*</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/bin/nice -n20 newsyslog <minute>1,31</minute> <hour>0-5</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/bin/nice -n20 adjkerntz -a <minute>1</minute> <hour>3</hour> <mday>1</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/bin/nice -n20 /etc/rc.update_bogons.sh <minute>*/60</minute> <hour>*</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/bin/nice -n20 /usr/local/sbin/expiretable -v -t 3600 sshlockout <minute>1</minute> <hour>1</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/bin/nice -n20 /etc/rc.dyndns.update <minute>*/60</minute> <hour>*</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/bin/nice -n20 /usr/local/sbin/expiretable -v -t 3600 virusprot <minute>*/5</minute> <hour>*</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/local/bin/checkreload.sh <minute>*/5</minute> <hour>*</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/etc/ping_hosts.sh <minute>*/140</minute> <hour>*</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/local/sbin/reset_slbd.sh <task_name>squid_rotate_logs</task_name> <minute>0</minute> <hour>0</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/local/sbin/squid -k rotate <minute>*/1</minute> <hour>*</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/root/tolog.sh <minute>*/1</minute> <hour>*</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/local/bin/vnstat -u <minute>0</minute> <hour>*/1</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/bin/nice -n20 /usr/local/etc/rc.d/havp_avupdate <task_name>lightsquid_parser_today</task_name> <minute>*/10</minute> <hour>*</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/bin/perl /usr/local/www/lightsquid/lightparser.pl today <task_name>lightsquid_parser_yesterday</task_name> <minute>15</minute> <hour>0</hour> <mday>*</mday> <month>*</month> <wday>*</wday> <who>root</who> <command></command>/usr/bin/perl /usr/local/www/lightsquid/lightparser.pl yesterday</cron>
7. squid mode и к каким интерфесам привязан:
Transparent, привязан к LAN (em1 - 192.168.1.1)проблема с тем, что считается только статистика squid, т.е. только 80 порт.
изначально пользовался этой инструкцией: http://ru.doc.pfsense.org/index.php/Подсчет_трафика_с_помощью_Squid_и_ipcad_в_pfSense_1.2.3
перечитал эту тему, попробовал разные варианты… возможно я что-то упустил или протупил, заранее прошу прощения...
-
Скажите, а как можно закрыть статистику, например, паролем?
-
Меня тоже этот вопрос интересует!
-
ipcad записывает логи сам себя, т.е. ВСЁ скачал он, например
10.0.0.22 192.168.1.1 5 1165 53 64440 17 bge0
Где 192.168.1.1 это ip-адрес проксисервера, надо чтобы считал по каждому ip из локальной сети а не отображал как сам скачал….
ipcad.conf
capture-ports enable; interface bge0 filter "ip and dst net 192.168.0.0/24 and not src net 192.168.0.0/24"; aggregate 192.168.0.0/24 strip 32; /* Aggregate external networks */ ... aggregate 5191-65535 into 65535; netflow export version 5; # NetFlow export format version {1|5} netflow timeout active 30; # Timeout when flow is active, in minutes netflow timeout inactive 15; # Flow inactivity timeout, in seconds netflow engine-type 73; # v5 engine_type; 73='I' for "IPCAD" netflow engine-id 1; # Useful to differentiate multiple ipcads. netflow ifclass eth mapto 0-99; # i.e., "eth1"->1, "eth3"->3 netflow ifclass fxp mapto 0-99; # i.e., "fxp4"->4, "fxp0"->0 netflow ifclass ppp mapto 100-199; # i.e., "ppp32"->532, "ppp7"->507 netflow ifclass gre mapto 200-299; netflow ifclass tun mapto 300-399; # i.e., "tun0"->300 ###################### # RSH SERVER OPTIONS # ###################### rsh enable at 127.0.0.1; rsh root@127.0.0.1 admin; rsh root@127.0.0.1 backup; rsh root@127.0.0.1; #rsh root@127.0.0.1 deny; rsh 127.0.0.1 view-only; rsh ttl = 3; rsh timeout = 30; dumpfile = ipcad.dump; # The file is inside chroot(), see below... ################# # OTHER OPTIONS # ################# chroot = /usr/logs/ipcad; pidfile = ipcad.pid; memory_limit = 5m;
ipcad.sh
net="192.168" ttime=`/usr/bin/rsh localhost sh ip acco | grep 'Accounting data saved' | awk '{print ($4)}'` rsh localhost clear ip accounting rsh localhost show ip accounting checkpoint | grep $net | awk -v vtime=$ttime '{if ($5 != 0) print (vtime".000",1,$2,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}' >> /usr/logs/squid/access.log
В чём может быть проблема?! Спасибо.
-
Приведите полный ipcad.conf и фрагмент лога, не надо ничего сокращать. Вот это:
10.0.0.22 192.168.1.1 5 1165 53 64440 17 bge0
вообще не вывод ipcad, если только вы не отредактировали его руками.
-
Полный конфиг выше, сократил только про порты, т.к. там как обычно.
ee /usr/logs/ipcad/ipcad.dump
Source Destination Packets Bytes SrcPt DstPt Proto IF ... 83.69.195.90 192.168.1.1 6 3767 0 13757 6 bge 83.69.195.90 192.168.1.1 9 5394 0 37941 6 bge 83.69.195.90 192.168.1.1 1 69 0 0 1 bge 66.231.176.36 192.168.1.1 327 403536 0 16688 6 bge 83.69.195.90 192.168.1.1 11 8948 0 28165 6 bge 10.0.0.22 192.168.1.1 5 1165 53 64440 17 bge 77.88.21.14 192.168.1.1 5 399 0 31296 6 bge Accounting data age is 4 Accounting data age exact 273 Accounting data saved 1300884873 Interface bge0: received 7582776, 5 m average 17601 bytes/sec, 16 pkts/sec, dr Flow entries made: 48 Memory usage: 0% (5376 from 5242880) Free slots for rsh clients: 10 IPCAD uptime is 5 days 6:58 home.local uptime is 5 days 6:59
Собственно, проблема в том, что трафик не считается пользователем, а всё "сервер скачал"
http://www.pictureshack.ru/view_8645sams.JPG -
Вопрос снимается, разобрался.
Теперь возник другой вопрос, ipcad записывает статистику почты как шттп трафик.
Например: скачиваю тундербёрдом письма с gmail.com, mail.ru смотрю как записал это ipcad:
rsh localhost show ip accountingSource Destination Packets Bytes SrcPt DstPt Proto IF 209.85.149.138 192.168.1.1 111 133586 0 64413 6 bge0
1. Скачал его я, а не сервер (Destination должен быть 192.168.1.55)
2. Порт должен быть 995 или 110 (0 это правило aggregate 3128 into 0)В чём проблема? У меня фрибсд прописан шлюзом, сам проксисервер настроен прозрачно с редиректом pf
rdr inet proto tcp from $lan_net to any port www -> 127.0.0.1 port 3128P.S. сейчас ещё заметил, аська по 5190 порту тоже никак не фиксируется, mirc по 6669 порту аналогично.
Что фиксируется?! 443 порт, 53, 2041, 5, 9999 -
Спасибо за статью, очень пригодилась… но как посчитать исходящий трафик ipcad-ом в pfsense 2.0-rc-1...? теоретически есть возможность....?
-
Скажите, а как можно закрыть статистику, например, паролем?
Точно не помню где нарыл, может и здесь. Суть в следующем:
- нужно внести в файл lighty-webConfigurator.conf некоторые изменения, для этого правим файл /etc/inc/system.inc
делаем так (добавили "mod_auth", ссылку на файл паролей "/.pa.txt" и защищаемый путь):
... ## modules to load server.modules = ( {$captive_portal_module} "mod_access", "mod_accesslog", "mod_expire", "mod_compress", "mod_redirect", "mod_auth", {$module}{$captiveportal} ) ..... // Add HTTP to HTTPS redirect if ($captive_portal == false && $config['system']['webgui']['protocol'] == "https" && !isset($config['system']['webgui']['disablehttpredirect'])) { if($lighty_port != "443") $redirectport = ":{$lighty_port}"; $lighty_config .= <<<eod<br>\$SERVER["socket"] == ":80" { \$HTTP["host"] =~ "(.*)" { url.redirect = ( "^/(.*)" => "https://%1{$redirectport}/$1" ) } } EOD; } $lighty_config .= <<<eod<br>auth.backend = "htpasswd" auth.backend.htpasswd.userfile = "/.pa.txt" auth.require = ( "/lightsquid/" => ( "method" => "basic", "realm" => "Statistic", "require" => "valid-user" ) ) EOD; $fd = fopen("{$filename}", "w"); ....</eod<br></eod<br>
-
далее создаем файл с паролями /.pa.txt с помощью htpasswd.exe от apache (делал под виндой) и кладем на место
-
перегружаемся и проверяем
-
Подскажите, где можно скачать rsh, а то по старому пути его нет(((
и еще не ставиться pkg_add -r compat6x-i386, говорит Error: FTP Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.2-release/Latest/compat6x-i386.tbz: No address record -
Подскажите, где можно скачать rsh, а то по старому пути его нет(((
и еще не ставиться pkg_add -r compat6x-i386, говорит Error: FTP Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.2-release/Latest/compat6x-i386.tbz: No address record1. http://narod.ru/disk/12770498001/rsh.gz.html
2. Зайти на сайт freebsd найти где там лежат порты, в портах найти путь до compat6x-i386, написать в консоли pkg_add -r и вставить скопирвоанный путь до compat6x-i386, включая имя файла. -
Ссылку нашел, но какой путь прописать и название фаила-не пойму ???
http://www.freebsd.org/cgi/cvsweb.cgi/ports/misc/compat6x/ -
Ссылку нашел, но какой путь прописать и название фаила-не пойму ???
http://www.freebsd.org/cgi/cvsweb.cgi/ports/misc/compat6x/не ту ссылку нашёл
pkg_add -r http://ftp.freebsd.org/pub/FreeBSD/releases/i386/7.3-RELEASE/packages/Latest/compat6x-i386.tbz
это если pfsense 1.2.3P.S. Я в предыдущем посте неверно написал, не порты, а пакеты.
-
Установил, спасибо.
Все пошло с 4 попытки,когда прочитал формум и понял что надо открыть агрегацию портов и вуаля!)
Только одно НО-разве наормально что в логе есть порты с номером 0,я думал такие вообще не должны отображаться чтобы избежать двойного подсчета -
Вопрос снимается, разобрался.
Теперь возник другой вопрос, ipcad записывает статистику почты как шттп трафик.
Например: скачиваю тундербёрдом письма с gmail.com, mail.ru смотрю как записал это ipcad:
rsh localhost show ip accountingSource Destination Packets Bytes SrcPt DstPt Proto IF 209.85.149.138 192.168.1.1 111 133586 0 64413 6 bge0
1. Скачал его я, а не сервер (Destination должен быть 192.168.1.55)
2. Порт должен быть 995 или 110 (0 это правило aggregate 3128 into 0)В чём проблема? У меня фрибсд прописан шлюзом, сам проксисервер настроен прозрачно с редиректом pf
rdr inet proto tcp from $lan_net to any port www -> 127.0.0.1 port 3128P.S. сейчас ещё заметил, аська по 5190 порту тоже никак не фиксируется, mirc по 6669 порту аналогично.
Что фиксируется?! 443 порт, 53, 2041, 5, 9999- up -
Подскажите пожалуйста, куда копать? я не могу посчитать и контролировать данный трафик, т.к. если уберу сортировку по порту 3128/80/8080? то трафик будет удваиваться, сквид + ipcad.
- up -
-
Всем, кто использует данное решение подсчета трафика, необходимо отредактировать файл tolog.sh
Причина: при ротации логов squid, возможна ситуация когда файл /var/squid/log/access.log уже переименован в access.log.0, а новый файл access.log еще не создан. Если в это время сработает tolog.sh (а он таки срабатывает в 00:00, как и ротация), то новый файл access.log будет создан самим tolog.sh с владельцем root. В результате squid не сможет писать в него и остановится. Если установлен SquidGuard, то остановится и он. Пользователи не смогут открывать странички.
Новый файл tolog.sh (добавлена проверка существования access.log):#!/bin/sh if [ -f "/var/squid/log/access.log" ] then net="192.168.0" ttime=`/usr/bin/rsh localhost sh ip acco | grep 'Accounting data saved' | awk '{print ($4)}'` rsh localhost clear ip accounting rsh localhost show ip accounting checkpoint | grep $net | awk -v vtime=$ttime '{print (vtime".000",1,$2,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}' >> /var/squid/log/access.log fi
-
сделай чтобы ротация лога сквида проходила в 00:05 и всего делов
-
Подозреваю (но не уверен, кто бы подсказал?), что при ротации LightSquid'ом новый access.log вообще не создается. А создается он только в момент первой записи в него. Тут уж кто раньше встал - того и тапки. Squid или tolog.sh
-
Подозреваю (но не уверен, кто бы подсказал?), что при ротации LightSquid'ом новый access.log вообще не создается. А создается он только в момент первой записи в него. Тут уж кто раньше встал - того и тапки. Squid или tolog.sh
создается при ротации
-
Поторопился с определением причины такого поведения. Сегодня сбойнуло уже утром, далеко-далеко от ротации. У access.log владелец root, группа - proxy, и никакие проверки на существование файла естественно не помогают. Сам файл под 2 мега. Жаль не посмотрел содержимое, кто последний в него писал((
chown что ли в tolog.sh еще ставить?