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

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

    Scheduled Pinned Locked Moved Russian
    222 Posts 39 Posters 169.1k 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.
    • B
      Broodval
      last edited by

      @Axl:

      Добрый день!
      все тоже самое было, поправил… НО! статистика считается только со сквида... как получить статистику по другим портам и протоколам?

      Если ты делал тоже самое, то твоей целью и должно было быть получение статистики по другим портам. Уточни проблему!

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

      1 Reply Last reply Reply Quote 0
      • 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
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.