Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Еще раз о ipcad+squid+lightsquid

    Scheduled Pinned Locked Moved Russian
    222 Posts 39 Posters 166.3k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Axl
      last edited by

      пишу свои параметры:
      1. Версия pfSense
      1.2.3-release

      2. Лог загрузки системы в части касающейся 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 rsh

      4. 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

      перечитал эту тему, попробовал разные варианты… возможно я что-то упустил или протупил, заранее прошу прощения...

      1 Reply Last reply Reply Quote 0
      • D
        denis-k
        last edited by

        Скажите, а как можно закрыть статистику, например, паролем?

        1 Reply Last reply Reply Quote 0
        • B
          Broodval
          last edited by

          Меня тоже этот вопрос интересует!

          Я новичок FreeBSD, поэтому если Вас не затруднит, объясняйте мне как первокласснику. Заранее спасибо!

          1 Reply Last reply Reply Quote 0
          • A
            Antip
            last edited by

            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
            
            

            В чём может быть проблема?! Спасибо.

            1 Reply Last reply Reply Quote 0
            • R
              rubic
              last edited by

              Приведите полный ipcad.conf и фрагмент лога, не надо ничего сокращать. Вот это:

              10.0.0.22        192.168.1.1         5         1165     53 64440    17 bge0
              

              вообще не вывод ipcad, если только вы не отредактировали его руками.

              1 Reply Last reply Reply Quote 0
              • A
                Antip
                last edited by

                Полный конфиг выше, сократил только про порты, т.к. там как обычно.

                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

                1 Reply Last reply Reply Quote 0
                • A
                  Antip
                  last edited by

                  Вопрос снимается, разобрался.

                  Теперь возник другой вопрос, ipcad записывает статистику почты как шттп трафик.
                  Например: скачиваю тундербёрдом письма с gmail.com, mail.ru смотрю как записал это ipcad:
                    rsh localhost show ip accounting

                  
                     Source           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 3128

                  P.S. сейчас ещё заметил, аська по 5190 порту тоже никак не фиксируется, mirc по 6669 порту аналогично.
                  Что фиксируется?! 443 порт, 53, 2041, 5, 9999

                  1 Reply Last reply Reply Quote 0
                  • S
                    sergeyfromkomi
                    last edited by

                    Спасибо за статью, очень пригодилась… но как посчитать исходящий трафик ipcad-ом в pfsense 2.0-rc-1...? теоретически есть возможность....?

                    1 Reply Last reply Reply Quote 0
                    • B
                      Buch
                      last edited by

                      @denis-k:

                      Скажите, а как можно закрыть статистику, например, паролем?

                      Точно не помню где нарыл, может и здесь. Суть в следующем:

                      • нужно внести в файл 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 (делал под виндой) и кладем на место

                      • перегружаемся и проверяем

                      2.2.6-RELEASE  (amd64)  built on Mon Dec 21 14:50:08 CST 2015 FreeBSD 10.1-RELEASE-p25
                      AMD Turion™ II Neo N40L Dual-Core Processor Current: 187 MHz, Max: 1497 MHz

                      1 Reply Last reply Reply Quote 0
                      • S
                        strelok
                        last edited by

                        Подскажите, где можно скачать 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

                        1 Reply Last reply Reply Quote 0
                        • D
                          DasTieRR
                          last edited by

                          @strelok:

                          Подскажите, где можно скачать 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

                          1. http://narod.ru/disk/12770498001/rsh.gz.html
                          2. Зайти на сайт freebsd найти где там лежат порты, в портах найти путь до compat6x-i386, написать в консоли pkg_add -r и вставить скопирвоанный путь до compat6x-i386, включая имя файла.

                          1 Reply Last reply Reply Quote 0
                          • S
                            strelok
                            last edited by

                            Ссылку нашел, но какой путь прописать и название фаила-не пойму ???
                            http://www.freebsd.org/cgi/cvsweb.cgi/ports/misc/compat6x/

                            1 Reply Last reply Reply Quote 0
                            • D
                              DasTieRR
                              last edited by

                              @strelok:

                              Ссылку нашел, но какой путь прописать и название фаила-не пойму ???
                              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.3

                              P.S. Я в предыдущем посте неверно написал, не порты, а пакеты.

                              1 Reply Last reply Reply Quote 0
                              • S
                                strelok
                                last edited by

                                Установил, спасибо.
                                Все пошло с 4 попытки,когда прочитал формум и понял что надо открыть  агрегацию портов и вуаля!)
                                Только одно НО-разве наормально что в логе есть порты с номером 0,я думал такие вообще не должны отображаться чтобы избежать двойного подсчета

                                1 Reply Last reply Reply Quote 0
                                • A
                                  Antip
                                  last edited by

                                  @Antip:

                                  Вопрос снимается, разобрался.

                                  Теперь возник другой вопрос, ipcad записывает статистику почты как шттп трафик.
                                  Например: скачиваю тундербёрдом письма с gmail.com, mail.ru смотрю как записал это ipcad:
                                    rsh localhost show ip accounting

                                  
                                     Source           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 3128

                                  P.S. сейчас ещё заметил, аська по 5190 порту тоже никак не фиксируется, mirc по 6669 порту аналогично.
                                  Что фиксируется?! 443 порт, 53, 2041, 5, 9999

                                  • up -
                                    Подскажите пожалуйста, куда копать? я не могу посчитать и контролировать данный трафик, т.к. если уберу сортировку по порту 3128/80/8080? то трафик будет удваиваться, сквид + ipcad.
                                  1 Reply Last reply Reply Quote 0
                                  • R
                                    rubic
                                    last edited by

                                    Всем, кто использует данное решение подсчета трафика, необходимо отредактировать файл 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
                                    
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • Z
                                      zar0ku1
                                      last edited by

                                      сделай чтобы ротация лога сквида проходила в 00:05 и всего делов

                                      закрывайте темы, если ответ на ваш вопрос полон.
                                      если схема сложная - не поленитесь ее нарисовать

                                      1 Reply Last reply Reply Quote 0
                                      • R
                                        rubic
                                        last edited by

                                        Подозреваю (но не уверен, кто бы подсказал?), что при ротации LightSquid'ом новый access.log вообще не создается. А создается он только в момент первой записи в него. Тут уж кто раньше встал - того и тапки. Squid или tolog.sh

                                        1 Reply Last reply Reply Quote 0
                                        • Z
                                          zar0ku1
                                          last edited by

                                          @rubic:

                                          Подозреваю (но не уверен, кто бы подсказал?), что при ротации LightSquid'ом новый access.log вообще не создается. А создается он только в момент первой записи в него. Тут уж кто раньше встал - того и тапки. Squid или tolog.sh

                                          создается при ротации

                                          закрывайте темы, если ответ на ваш вопрос полон.
                                          если схема сложная - не поленитесь ее нарисовать

                                          1 Reply Last reply Reply Quote 0
                                          • R
                                            rubic
                                            last edited by

                                            Поторопился с определением причины такого поведения. Сегодня сбойнуло уже утром, далеко-далеко от ротации. У access.log владелец root, группа - proxy, и никакие проверки на существование файла естественно не помогают. Сам файл под 2 мега. Жаль не посмотрел содержимое, кто последний в него писал((
                                            chown что ли в tolog.sh еще ставить?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.