Название: Как прикрутить Squid часть 2
Отправлено: podavan от 09 Июля 2010, 15:27:44
Озадачился тоде прикрутить сквид, т.к. помимо прозрачного прокси, хотел ещё и нарезать часть правил для некоторых пользователей (блокировать по адресу) почитал вот это http://forum.nodeny.com.ua/index.php?topic=72.0 (http://forum.nodeny.com.ua/index.php?topic=72.0) сделал, как там было описано: сначала исправил nofire.pl: [root@test /var]# ee /usr/local/nodeny/nofire.pl #--------закоментим # $NumIpfw=$End_num_ipfw; # &SetIpfwRule(qq{deny ip from any to any}); # ---------------начало, меняем------------ $NumIpfw=$End_num_ipfw-3; &SetIpfwRule(qq{divert 1 ip from table(0) to any}); &SetIpfwRule(qq{fwd 127.0.0.1,3128 tcp from table(0) to any dst-port 80}); &SetIpfwRule(qq{allow ip from table(0) to any}); &SetIpfwRule(qq{deny ip from any to any}); # --------------------------------конец------ $NumIpfw=$Start_num2_ipfw;
$n1=$NumIpfw+10; $n2=$NumIpfw+400;
&SetIpfwRule(qq{pipe tablearg ip from table(126) to table(127)}); # альтернативное направление -> клиент &SetIpfwRule(qq{skipto $n1 ip from not table(2) to any}); # не от клиента -> &SetIpfwRule(qq{pipe tablearg ip from any to table(20)}); # клиент -> клиент # -------------------ещё добавление ----------- &SetIpfwRule(qq{allow ip from any to table(0)}); # ----------------------конец---------------
потом поменял rc.firewall, как было описано: [root@test /etc]# ee /etc/rc.firewall
#!/bin/sh - f='/sbin/ipfw'
ifOut='em0'
${f} -f flush
${f} add 50 allow tcp from any to me 22 ${f} add 51 allow tcp from me 22 to any
${f} add 110 allow ip from any to any via lo0 ${f} add 120 skipto 1000 ip from me to any ${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17 ${f} add 160 skipto 2000 ip from any to me
${f} add 170 allow ip from any to any via ${ifOut} out ${f} add 200 allow ip from any to "table(0)" via ${ifOut}
${f} add 300 skipto 4500 ip from any to any in
${f} add 400 skipto 450 ip from any to any recv ${ifOut} ${f} add 420 divert 1 ip from any to any ${f} add 450 divert 2 ip from any to any ${f} add 490 skipto 32500 ip from any to any
${f} add 1000 allow udp from any 53,7723 to any ${f} add 1010 allow tcp from any to any setup keep-state ${f} add 1020 allow udp from any to any keep-state ${f} add 1100 allow ip from any to any
${f} add 2000 check-state ${f} add 2010 allow icmp from any to any ${f} add 2012 allow gre from any to any ${f} add 2020 allow tcp from any to any 80,443 ${f} add 2050 deny ip from any to any via ${ifOut} ${f} add 2060 allow udp from any to any 53,7723
${f} add 2100 deny ip from any to any
${f} add 32490 deny ip from any to any
перед этим делом поставил Squid Cache version 3.0.STABLE25 его конф: http_port 3128 transparent icp_port 0 hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 128 MB maximum_object_size 8192 KB maximum_object_size_in_memory 512 KB cache_dir ufs /var/squid/cache 5120 64 256 access_log /var/squid/logs/access.log squid cache_log /var/squid/logs/cache.log cache_store_log /var/squid/logs/store.log visible_hostname test.local #acl all src 0.0.0.0/0.0.0.0 acl loc src 192.168.254.0/24 http_access allow loc http_access deny all coredump_dir /var/squid/cache pid_filename /var/squid/logs/squid.pid
всё это дело крутится на виртуалке, free 8.0 если ставить стандартный фаер, то сквид набирает кеш, надо проверить, клиент забирает ли его проблема в фаере насколько я понимаю, а где найти не могу, у кого есть варианты?
Название: Re: Как прикрутить Squid часть 2
Отправлено: Cell от 09 Июля 2010, 16:06:19
а ты правильно выкурил вот это? Обязательно добавляем параметр net.inet.ip.fw.one_pass=0 в файл sysctl.conf
сервер ребутал после этого?
Название: Re: Как прикрутить Squid часть 2
Отправлено: podavan от 09 Июля 2010, 16:07:47
о да, учитель, этот момент вкурил моментально, забыл о нём в посте написать :) собственно сервер ребутал уже не раз), это на виртуалке :)
Название: Re: Как прикрутить Squid часть 2
Отправлено: podavan от 09 Июля 2010, 16:21:15
да, ещё инфа: сквид слушает, всё как и положено 3128 порт: [root@test /home/start]# netstat -an | grep tcp tcp4 0 0 81.19.70.1.80 192.168.254.3.3961 SYN_RCVD tcp4 0 0 127.0.0.1.514 127.0.0.1.909 TIME_WAIT tcp4 0 0 127.0.0.1.514 127.0.0.1.774 TIME_WAIT tcp4 0 52 192.168.254.1.22 192.168.254.3.3962 ESTABLISHED tcp4 0 0 127.0.0.1.25 *.* LISTEN tcp4 0 0 127.0.0.1.514 127.0.0.1.632 TIME_WAIT tcp4 0 0 127.0.0.1.514 127.0.0.1.943 TIME_WAIT tcp4 0 0 *.22 *.* LISTEN tcp4 0 0 *.443 *.* LISTEN tcp4 0 0 *.80 *.* LISTEN tcp4 0 0 127.0.0.1.514 *.* LISTEN tcp4 0 0 *.3306 *.* LISTEN tcp4 0 0 *.3128 *.* LISTEN tcp4 0 0 127.0.0.1.953 *.* LISTEN tcp4 0 0 127.0.0.1.53 *.* LISTEN tcp4 0 0 192.168.254.1.53 *.* LISTEN
в логах кеша у него всё ок: 2010/07/09 18:15:11| Starting Squid Cache version 3.0.STABLE25 for i386-portbld-freebsd8.0... 2010/07/09 18:15:11| Process ID 1203 2010/07/09 18:15:11| With 7232 file descriptors available 2010/07/09 18:15:11| DNS Socket created at 0.0.0.0, port 60959, FD 7 2010/07/09 18:15:11| Adding domain test.local from /etc/resolv.conf 2010/07/09 18:15:11| Adding nameserver 127.0.0.1 from /etc/resolv.conf 2010/07/09 18:15:11| User-Agent logging is disabled. 2010/07/09 18:15:11| Referer logging is disabled. 2010/07/09 18:15:12| Unlinkd pipe opened on FD 12 2010/07/09 18:15:12| Swap maxSize 5242880 + 131072 KB, estimated 413380 objects 2010/07/09 18:15:12| Target number of buckets: 20669 2010/07/09 18:15:12| Using 32768 Store buckets 2010/07/09 18:15:12| Max Mem size: 131072 KB 2010/07/09 18:15:12| Max Swap size: 5242880 KB 2010/07/09 18:15:12| Version 1 of swap file with LFS support detected... 2010/07/09 18:15:12| Rebuilding storage in /var/squid/cache (DIRTY) 2010/07/09 18:15:12| Using Least Load store dir selection 2010/07/09 18:15:12| Set Current Directory to /var/squid/cache 2010/07/09 18:15:13| Loaded Icons. 2010/07/09 18:15:13| Accepting transparently proxied HTTP connections at 0.0.0.0, port 3128, FD 14. 2010/07/09 18:15:13| HTCP Disabled. 2010/07/09 18:15:13| Ready to serve requests. 2010/07/09 18:15:13| Done reading /var/squid/cache swaplog (839 entries) 2010/07/09 18:15:13| Finished rebuilding storage from disk. 2010/07/09 18:15:13| 839 Entries scanned 2010/07/09 18:15:13| 0 Invalid entries. 2010/07/09 18:15:13| 0 With invalid flags. 2010/07/09 18:15:13| 839 Objects loaded. 2010/07/09 18:15:13| 0 Objects expired. 2010/07/09 18:15:13| 0 Objects cancelled. 2010/07/09 18:15:13| 0 Duplicate URLs purged. 2010/07/09 18:15:13| 0 Swapfile clashes avoided. 2010/07/09 18:15:13| Took 0.23 seconds (3598.43 objects/sec). 2010/07/09 18:15:13| Beginning Validation Procedure 2010/07/09 18:15:13| Completed Validation Procedure 2010/07/09 18:15:13| Validated 1703 Entries 2010/07/09 18:15:13| store_swap_size = 7138 2010/07/09 18:15:13| storeLateRelease: released 0 objects
в access.log ничего нет ядро собирал с опциями: options IPFIREWALL options IPDIVERT options IPFIREWALL_FORWARD options DUMMYNET
options ALTQ options ALTQ_CBQ options ALTQ_RED options ALTQ_RIO options ALTQ_HFSC options ALTQ_CDNR options ALTQ_PRIQ options ALTQ_NOPCC options ALTQ_DEBUG
device pf device pflog device pfsync
когда собирал сквид, указывал поддержку transparent ipfw
Название: Re: Как прикрутить Squid часть 2
Отправлено: Cell от 09 Июля 2010, 23:14:17
так а что конкретно по мануалу не работает? может опечатался где? ipfw show в студию.
Название: Re: Как прикрутить Squid часть 2
Отправлено: podavan от 09 Июля 2010, 23:41:37
может и опечатка где, вроде всё смотрел... конкретно так: если пишем ipfw add 1 allow ip from any to any то клиент получает инет, иначе у него только срабатывает DNS сервер (определяется ip), со старым (дефолтным фаером) клиент получает инет(nofire.pl оставляем изменённым по твоему Ману), но при этом ведь ему кеш не отдаётся, или я неправ? ipfw: [root@test /home/start]# ipfw show 00050 651 48312 allow tcp from any to me dst-port 22 00051 538 225972 allow tcp from me 22 to any 00110 4388 407096 allow ip from any to any via lo0 00120 168 13793 skipto 1000 ip from me to any 00130 0 0 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17 00160 85 12152 skipto 2000 ip from any to me 00170 55 2896 allow ip from any to any via em0 out 00200 70 3476 allow ip from any to table(0) via em0 00300 614 39571 skipto 4500 ip from any to any in 00400 70 3476 skipto 450 ip from any to any recv em0 00420 1188 57024 divert 1 ip from any to any 00450 1258 60500 divert 2 ip from any to any 00490 1258 60500 skipto 32500 ip from any to any 01000 12 2244 allow udp from any 53,7723 to any 01010 0 0 allow tcp from any to any setup keep-state 01020 175 19509 allow udp from any to any keep-state 01100 2 168 allow ip from any to any 02000 0 0 check-state 02010 8 755 allow icmp from any to any 02012 0 0 allow gre from any to any 02020 0 0 allow tcp from any to any dst-port 80,443 02050 26 1232 deny ip from any to any via em0 02060 30 2037 allow udp from any to any dst-port 53,7723 02100 0 0 deny ip from any to any 05000 55 8364 deny ip from not table(0) to any 05001 0 0 skipto 5010 ip from table(127) to table(126) 05002 559 31207 skipto 5030 ip from any to not table(2) 05003 0 0 deny ip from any to not table(1) 05004 0 0 pipe tablearg ip from table(21) to any 05005 0 0 deny ip from any to any 05010 0 0 pipe tablearg ip from table(127) to any 05030 0 0 deny tcp from table(15) to any dst-port 25 05400 559 31207 pipe tablearg ip from table(11) to any 31997 559 31207 divert 1 ip from table(0) to any 31998 460 22080 fwd 127.0.0.1,3128 tcp from table(0) to any dst-port 80 31999 99 9127 allow ip from table(0) to any 32000 0 0 deny ip from any to any 32490 0 0 deny ip from any to any 33000 0 0 pipe tablearg ip from table(126) to table(127) 33001 1258 60500 skipto 33010 ip from not table(2) to any 33002 0 0 pipe tablearg ip from any to table(20) 33003 0 0 allow ip from any to table(0) 33004 0 0 deny ip from any to any 33400 1258 60500 pipe tablearg ip from any to table(10) 65535 1258 60500 deny ip from any to any
Название: Re: Как прикрутить Squid часть 2
Отправлено: Efendy от 10 Июля 2010, 02:42:51
33400 1258 60500 pipe tablearg ip from any to table(10) 65535 1258 60500 deny ip from any to any не все ты добавил в nofire.pl - после пайпа пакет возвращается в фаер согласно net.inet.ip.fw.one_pass=0
Название: Re: Как прикрутить Squid часть 2
Отправлено: podavan от 10 Июля 2010, 14:34:22
Ага! нашёл! Всё, закрутилось! про это указывал serojperoj в первом посте, а у Cell я этого не увидел, получается что nofire.pl надо привести к такому виду(врезки в код показаны коментами): # сюда skipto $NumIpfw=$n1; &SetIpfwRule(qq{pipe tablearg ip from table(127) to any}); # клиент -> альт. направление $NumIpfw=$n3; &SetIpfwRule(qq{deny tcp from table(15) to any $denied_ports}); # клиент -> запрещенные порты $NumIpfw=$n2; &SetIpfwRule(qq{pipe tablearg ip from table(11) to any}); # клиент -> мир # ---------------------Начало Врезки 1 (Squid)------------ # $NumIpfw=$End_num_ipfw; # &SetIpfwRule(qq{deny ip from any to any}); $NumIpfw=$End_num_ipfw-3; &SetIpfwRule(qq{divert 1 ip from table(0) to any}); &SetIpfwRule(qq{fwd 127.0.0.1,3128 tcp from table(0) to any dst-port 80}); &SetIpfwRule(qq{allow ip from table(0) to any}); &SetIpfwRule(qq{deny ip from any to any}); # ---------------------Конец Врезки 1 (Squid)------ $NumIpfw=$Start_num2_ipfw;
$n1=$NumIpfw+10; $n2=$NumIpfw+400;
&SetIpfwRule(qq{pipe tablearg ip from table(126) to table(127)}); # альтернативное направление -> клиент &SetIpfwRule(qq{skipto $n1 ip from not table(2) to any}); # не от клиента -> &SetIpfwRule(qq{pipe tablearg ip from any to table(20)}); # клиент -> клиент # ---------------------Начало Врезки 2 (Squid) ----------- &SetIpfwRule(qq{allow ip from any to table(0)}); # ---------------------Конец Врезки 2 (Squid)--------------- &SetIpfwRule(qq{deny ip from any to any}); # $n1 ... $n2 буфер для таблиц направлений $NumIpfw=$n2; &SetIpfwRule(qq{pipe tablearg ip from any to table(10)}); # мир -> клиент # ---------------------Начало Врезки 3 (Squid)------------ &SetIpfwRule(qq{allow ip from any to table(0)}); # ---------------------Конец Врезки 3 (Squid)--------------- }
Итого надо было сделать 3 врезки в nofire.pl теперь и ipfw show показывает правильно [root@test /var]# ipfw show 00050 575 37984 allow tcp from any to me dst-port 22 00051 677 398124 allow tcp from me 22 to any 00110 2256 190658 allow ip from any to any via lo0 00120 485 111016 skipto 1000 ip from me to any 00130 0 0 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17 00160 453 370811 skipto 2000 ip from any to me 00170 255 20627 allow ip from any to any via em0 out 00200 295 100371 allow ip from any to table(0) via em0 00300 683 118719 skipto 4500 ip from any to any in 00400 295 100371 skipto 450 ip from any to any recv em0 00420 436 369619 divert 1 ip from any to any 00450 731 469990 divert 2 ip from any to any 00490 731 469990 skipto 32500 ip from any to any 01000 10 1836 allow udp from any 53,7723 to any 01010 847 471734 allow tcp from any to any setup keep-state 01020 62 7048 allow udp from any to any keep-state 01100 0 0 allow ip from any to any 02000 0 0 check-state 02010 0 0 allow icmp from any to any 02012 0 0 allow gre from any to any 02020 0 0 allow tcp from any to any dst-port 80,443 02050 9 598 deny ip from any to any via em0 02060 10 611 allow udp from any to any dst-port 53,7723 02100 0 0 deny ip from any to any 05000 3 210 deny ip from not table(0) to any 05001 0 0 skipto 5010 ip from table(127) to table(126) 05002 593 111669 skipto 5030 ip from any to not table(2) 05003 0 0 deny ip from any to not table(1) 05004 0 0 pipe tablearg ip from table(21) to any 05005 0 0 deny ip from any to any 05010 0 0 pipe tablearg ip from table(127) to any 05030 0 0 deny tcp from table(15) to any dst-port 25 05400 593 111669 pipe tablearg ip from table(11) to any 31997 593 111669 divert 1 ip from table(0) to any 31998 406 96437 fwd 127.0.0.1,3128 tcp from table(0) to any dst-port 80 31999 187 15232 allow ip from table(0) to any 32000 0 0 deny ip from any to any 32490 3 234 deny ip from any to any 33000 0 0 pipe tablearg ip from table(126) to table(127) 33001 623 404795 skipto 33010 ip from not table(2) to any 33002 0 0 pipe tablearg ip from any to table(20) 33003 0 0 allow ip from any to table(0) 33004 0 0 deny ip from any to any 33400 623 404795 pipe tablearg ip from any to table(10) 33401 623 404795 allow ip from any to table(0) 65535 1 40 deny ip from any to any
+ Efendy, serojperoj
Название: Re: Как прикрутить Squid часть 2
Отправлено: Cell от 10 Июля 2010, 21:44:13
Интересное дело, я первый эту тему поднял, первый добился устойчивой работы данной связки, первый внедрил на реальных юзерах и первый кому плюс не достался. Более того, тут меня уже во второй теме пытаются в чем-то обвинить, мне не понятно в чем? Я кому-то что-то обязан был предоставить? Вроде нет. Тот сервер, который я когда-то делал, в настоящее время недоступен и посмотреть что там с файрволом нет никакой возможности. Хотя ладно. Забил я на прокси. Тему, думается, можно закрывать.
Название: Re: Как прикрутить Squid часть 2
Отправлено: podavan от 10 Июля 2010, 21:56:09
Никто ни в чём Cell не обвиняет, молодец, хороший парень, что сказать :) я внимательно прочитал первый пост, serojperoj написал, что в описании данным тобой нехватало одной строчки, чтобы всё поднялось, а в итоге вместо дискуссии у вас возник сыр бор :( Однозначно +, каюсь что упустил :) Может дропнуть обе темы, а сделать одну, с полным описанием, как считаешь Cell?
|