1

Доброго времени суток!
Пытаюсь настроить связку Squid + C-ICAP.

Сам C-ICAP работает:

 Консоль:
ICAP server:localhost, ip:127.0.0.1, port:1344

OPTIONS:
    Allow 204: Yes
    Preview: 1024
    Keep alive: Yes

ICAP HEADERS:
    ICAP/1.0 200 OK:
    Methods:RESPMOD, REQMOD
    Service:C-ICAP/0.3.3 server - Echo demo service
    ISTag:CI0001-XXXXXXXXX
    Transfer-Preview:*
    Options-TTL:3600
    Date:Wed, 04 Jun 2014 05:16:49 GMT
    Preview:1024
    Allow:204
    X-Include:X-Authenticated-User, X-Authenticated-Groups
    Encapsulated:null-body=0

Пинг между машинами есть.
А вот взаимодействия со сквидом нет.
Конфиг сквида:

acl mynetwork src 192.168.10.0/24 #Подсеть, из которой пользователи ломятся в интернет через сквид

acl SSL_ports port 443
acl Safe_ports port 80        # http
acl Safe_ports port 21        # ftp
acl Safe_ports port 443        # https
acl Safe_ports port 70        # gopher
acl Safe_ports port 210        # wais
acl Safe_ports port 1025-65535    # unregistered ports
acl Safe_ports port 280        # http-mgmt
acl Safe_ports port 488        # gss-http
acl Safe_ports port 591        # filemaker
acl Safe_ports port 777        # multiling http
acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow mynetwork
http_access deny all

###
icap_enable on

icap_service service_req reqmod_precache bypass=1 icap://192.168.11.2:1344/request
adaptation_access service_req allow all

icap_service servise_resp respmod_precache bypass=1 icap://192.168.11.2:1344/response
adaptation_access servise_resp allow all
###

http_port 3129
http_port 3128 transparent
visible_hostname myproxy
cache_dir ufs /var/spool/squid3 4096 32 256
cache deny mynetwork
coredump_dir /var/spool/squid3

refresh_pattern ^ftp:        1440    20%    10080
refresh_pattern ^gopher:    1440    0%    1440
refresh_pattern -i (/cgi-bin/|\?) 0    0%    0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .        0    20%    4320

error_directory /usr/share/squid3/errors/Russian-koi8-r

memory_pools on
memory_pools_limit 50 MB

Конфиг икапа:

PidFile /var/run/c-icap/c-icap.pid
CommandsSocket /var/run/c-icap/c-icap.ctl

Timeout 300
MaxKeepAliveRequests 100
KeepAliveTimeout 600  
StartServers 3
MaxServers 10
MinSpareThreads     10
MaxSpareThreads     20
ThreadsPerChild     10
MaxRequestsPerChild  0

Port 1344 
ServerAdmin you@your.address
ServerName icapsrv

TmpDir /var/tmp
MaxMemObject 131072

DebugLevel 1
ModulesDir /usr/local/c-icap/lib/c_icap
ServicesDir /usr/local/c-icap/lib/c_icap
TemplateDir /usr/local/c-icap/share/c_icap/templates/
TemplateDefaultLanguage en
LoadMagicFile /usr/local/c-icap/etc/c-icap.magic

RemoteProxyUsers off
RemoteProxyUserHeader X-Authenticated-User
RemoteProxyUserHeaderEncoded on

acl ALLREQUESTS type OPTIONS RESPMOD REQMOD
acl localnet src 192.168.11.1
acl localhost src 127.0.0.1

icap_access allow ALLREQUESTS
icap_access allow localnet
icap_access allow localhost

ServerLog /usr/local/c-icap/var/log/server.log
AccessLog /usr/local/c-icap/var/log/access.log

Service echo srv_echo.so

В логе сквида следующее:

2014/06/04 12:26:16 kid1| WARNING: Squid got an invalid ICAP OPTIONS response from service icap://192.168.11.2:1344/request; error: unsupported status code of OPTIONS response
2014/06/04 12:26:16 kid1| WARNING: Squid got an invalid ICAP OPTIONS response from service icap://192.168.11.2:1344/response; error: unsupported status code of OPTIONS response

В логе икапа:

04/Jun/2014:12:25:15 +0700, 192.168.11.2 192.168.11.1 OPTIONS request 404
04/Jun/2014:12:25:15 +0700, 192.168.11.2 192.168.11.1 OPTIONS response 404

Я так понимаю они не могут договориться между собой о конфигурации.
Знающие, подскажите, в чем ошибка, что пропустил или не учел?

2 (04.06.2014 09:45:07 отредактировано kisil)

ТС ман по которому настраивали.
И какие версии програм вы используете?

Trouble  in WINDOWS reboot, trouble in UNIX be root.

3

C-ICAP - 0.3.3
Squid - 3.3.8
Толковых, а главное новых манов не нашел, поэтому методом тыка, и по описанию конфига.
Добавление поддержки в сквид брал здесь.

4

squid собран с поддержкой icap?

5

По ссылке, которую я дал, сказано что squid, начиная с 3 версии, имеет встроенную поддержку icap.

6

D4 пишет:

По ссылке, которую я дал, сказано что squid, начиная с 3 версии, имеет встроенную поддержку icap.

ДА имеет собирать не надо

Trouble  in WINDOWS reboot, trouble in UNIX be root.

7

D4 пишет:

icap_access allow ALLREQUESTS icap_access allow localnet

Ну не знаю попробуйте вот тут поправить так

icap_access allow ALLREQUESTS localnet
Trouble  in WINDOWS reboot, trouble in UNIX be root.

8

Попробовал как вы сказали, не заработало. Думаю, перезагружусь, мало что бывает.
Затем, запускаю с параметрами

./c-icap -N -D -d 10

На что он мне отвечает следующее

root@icapSRV:/usr/local/c-icap/bin# ./c-icap -N -D -d 10
Setting parameter :-d=10
Searching 0x8066750 for default value
Setting parameter :PidFile=/var/run/c-icap/c-icap.pid
Searching 0x8066754 for default value
Setting parameter :CommandsSocket=/var/run/c-icap/c-icap.ctl
Searching 0x8066724 for default value
Setting parameter :Timeout=300
Searching 0x806671c for default value
Setting parameter :MaxKeepAliveRequests=100
Searching 0x8066720 for default value
Setting parameter :KeepAliveTimeout=600
Searching 0x806677c for default value
Setting parameter :StartServers=3
Searching 0x8066780 for default value
Setting parameter :MaxServers=10
Searching 0x8066788 for default value
Setting parameter :MinSpareThreads=10
Searching 0x806678c for default value
Setting parameter :MaxSpareThreads=20
Searching 0x8066784 for default value
Setting parameter :ThreadsPerChild=10
Searching 0x8066b8c for default value
Setting parameter :MaxRequestsPerChild=0
Searching 0x8066744 for default value
Setting parameter :Port=1344
Searching 0x8066774 for default value
Setting parameter :ServerAdmin=you@your.address
Searching 0x8066778 for default value
Setting parameter :ServerName=icapsrv
Searching 0x806674c for default value
Setting parameter :TmpDir=/var/tmp
Searching 0x8066ac0 for default value
Setting parameter :MaxMemObject=131072
Searching 0x8066770 for default value
Setting parameter :ModulesDir=/usr/local/c-icap/lib/c_icap
Searching 0x806676c for default value
Setting parameter :ServicesDir=/usr/local/c-icap/lib/c_icap
Searching 0xb76ee628 for default value
Setting parameter :TemplateDir=/usr/local/c-icap/share/c_icap/templates/
Searching 0xb76ee598 for default value
Setting parameter :TemplateDefaultLanguage=en
The db file /usr/local/c-icap/etc/c-icap.magic is the same as default. Ignoring...
Searching 0x8066ba8 for default value
Setting parameter :RemoteProxyUsers=0
Searching 0x8066904 for default value
Setting parameter :RemoteProxyUserHeader=X-Authenticated-User
Searching 0x8066900 for default value
Setting parameter :RemoteProxyUserHeaderEncoded=1
Adding to acl ALLREQUESTS the data OPTIONS
In search specs list (nil),name ALLREQUESTS
Adding to acl ALLREQUESTS the data RESPMOD
In search specs list 0x91d44e8,name ALLREQUESTS
Checking name:ALLREQUESTS with specname ALLREQUESTS
Adding to acl ALLREQUESTS the data REQMOD
In search specs list 0x91d44e8,name ALLREQUESTS
Checking name:ALLREQUESTS with specname ALLREQUESTS
New ACL with name:ALLREQUESTS and  ACL Type: type
Adding to acl localnet the data 192.168.11.1
In search specs list 0x91d44e8,name localnet
Checking name:localnet with specname ALLREQUESTS
New ACL with name:localnet and  ACL Type: src
Adding to acl localhost the data 127.0.0.1
In search specs list 0x91d44e8,name localhost
Checking name:localhost with specname ALLREQUESTS
Checking name:localhost with specname localnet
New ACL with name:localhost and  ACL Type: src
Creating new access entry as allow with specs:
In search specs list 0x91d44e8,name ALLREQUESTS
Checking name:ALLREQUESTS with specname ALLREQUESTS
In search specs list 0x91d44e8,name ALLREQUESTS
Checking name:ALLREQUESTS with specname ALLREQUESTS
    Adding acl spec: ALLREQUESTS
In search specs list 0x91d44e8,name localnet
Checking name:localnet with specname ALLREQUESTS
Checking name:localnet with specname localnet
In search specs list 0x91d44e8,name localnet
Checking name:localnet with specname ALLREQUESTS
Checking name:localnet with specname localnet
    Adding acl spec: localnet
Creating new access entry as allow with specs:
In search specs list 0x91d44e8,name localhost
Checking name:localhost with specname ALLREQUESTS
Checking name:localhost with specname localnet
Checking name:localhost with specname localhost
In search specs list 0x91d44e8,name localhost
Checking name:localhost with specname ALLREQUESTS
Checking name:localhost with specname localnet
Checking name:localhost with specname localhost
    Adding acl spec: localhost
Searching 0x8066938 for default value
Setting parameter :ServerLog=/usr/local/c-icap/var/log/server.log
Adding the access logfile /usr/local/c-icap/var/log/access.log
Loading service :echo path srv_echo.so
Found handler C_handler for service with extension:.so
Initialization of echo module......
Registering conf table:echo
Warning, alias is the same as service_name, not adding
My hostname is:icapSRV
Command relog registered
Cannot open the pid file: /var/run/c-icap/c-icap.pid
Error opening control socket /var/run/c-icap/c-icap.ctl. Fatal error, exiting!

Честно сказать, не понял этого момента. Куда делся файл? Может я изначально что-то не так делаю.

9

icap-демона сначала остановите, а потом запускайте режим отладки.

10

Дык он после перезагрузки автоматически и не запускался (вроде).
Проверяю командой

netstat -apn | grep 1344

Ничего.
+ там где должен располагаться pid файл по конфигу тоже ничего нет. Даже папки c-icap.

11

Может ее создать? И заодно на нее права дать пользователю, от которого запускается c-icap.

12

Создал, c-icap запустился. Но проблемы это не решило, со сквидом он работать отказывается.

Еще идеи есть?

13

D4 пишет:

icap_enable on
icap_service service_req reqmod_precache bypass=1 icap://192.168.11.2:1344/request adaptation_access service_req allow all
icap_service servise_resp respmod_precache bypass=1 icap://192.168.11.2:1344/response adaptation_access servise_resp allow all

Вчитайесь повнимательнее - вы нигде не находите ошибки в написании? -
icap_service servise_resp

14

JonnyBekoff пишет:

icap_service servise_resp respmod_precache bypass=1 icap://192.168.11.2:1344/response adaptation_access servise_resp allow all

И в конце строки такая же ошибочка. Или это не ошибка?

15

Вроде как это не ошибка, просто имя сервиса (хотя да, я опечатался). Но все-равно спасибо  ab

16 (04.06.2014 14:26:04 отредактировано kisil)

c-icap у вас нормально уже стартонул???
И покажыте но вывод

 Консоль:
squid -v

Trouble  in WINDOWS reboot, trouble in UNIX be root.

17

Да, c-icap запустился.

 Консоль:
root@userpc:~/Desktop# squid3 -v
Squid Cache: Version 3.3.8
configure options:  '--build=i686-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--enable-inline' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-underscores' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth-basic=DB,fake,getpwnam,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos,wrapper' '--enable-auth-ntlm=fake,smb_lm' '--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group' '--enable-url-rewrite-helpers=fake' '--enable-eui' '--enable-esi' '--enable-icmp' '--enable-zph-qos' '--enable-ecap' '--disable-translation' '--with-swapdir=/var/spool/squid3' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-linux-netfilter' 'build_alias=i686-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security'

18

Поправили ошыбки в конфиге сквида??

icap_enable on

icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/request
adaptation_access service_req allow all

icap_service service_resp respmod_precache bypass=0 icap://127.0.0.1:1344/response
adaptation_access service_resp allow all

И что при этом не работает????

Trouble  in WINDOWS reboot, trouble in UNIX be root.
+ D4

19

Поправил, не работает.

20

А какие ошыбки при этом выдаёт сквид и Икап сервары?

Trouble  in WINDOWS reboot, trouble in UNIX be root.

21

Вот что говорит сквид:

2014/06/04 18:13:17| WARNING: Squid got an invalid ICAP OPTIONS response from service icap://192.168.11.2:1344/request; error: unsupported status code of OPTIONS response
2014/06/04 18:13:17| optional ICAP service is down after an options fetch failure: icap://192.168.11.2:1344/request [down,!valid]
2014/06/04 18:13:17| WARNING: Squid got an invalid ICAP OPTIONS response from service icap://192.168.11.2:1344/response; error: unsupported status code of OPTIONS response
2014/06/04 18:13:17| essential ICAP service is down after an options fetch failure: icap://192.168.11.2:1344/response [down,!valid]

А вот это икап:

04/Jun/2014:18:22:17 +0700, 192.168.11.2 192.168.11.1 OPTIONS request 404
04/Jun/2014:18:22:17 +0700, 192.168.11.2 192.168.11.1 OPTIONS response 404

22 (04.06.2014 15:48:24 отредактировано kisil)

Возможно бредово, но поробуйте вот так сделать

icap_enable on

icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/echo
adaptation_access service_req allow all

icap_service service_resp respmod_precache bypass=0 icap://127.0.0.1:1344/echo
adaptation_access service_resp allow all

request и response заменить на echo

Trouble  in WINDOWS reboot, trouble in UNIX be root.

23

Огромное спасибо, вроде работает. Теперь буду его мучать ab

24 (04.06.2014 16:00:50 отредактировано kisil)

Отпишытесь когда всё получитса. Что и как делали, чтобы знать. А то для версии сквида 3,1 и више те мануалы что есть в интернете не подходят.

Trouble  in WINDOWS reboot, trouble in UNIX be root.

25 (05.06.2014 14:18:44 отредактировано D4)

Доброго времени суток. Снова появились вопросы.
Если мы меняем request и response на echo, сквид и икап взаимодействуют, но по сути ничего не делают.
Поэтому для примера установил моды, начал пробовать srv_url_check.
В конец файла c-icap.conf дописываю Include srv_url_check.conf
В нем следующее:

Service url_check srv_url_check.so
url_check.LookupTableDB denyurl url /usr/local/c-icap/denyurl.txt "Denied URLs"
url_check.Profile default pass ALL

Ничего хитрого. denyurl.txt содержит список, который необходимо заблокировать.
В сквиде в service_req меняю echo на url_check.
Ошибок никаких, но сайты по прежнему открываются. Что не учел?
PS. С-ICAP возвращает код 204, типо ничего модифицировать не нужно.

26

Нашел ошибку (дурацкую), исправил, может кому пригодиться.

Service url_check srv_url_check.so
url_check.LookupTableDB denyurl url /usr/local/c-icap/denyurl.txt "Denied URLs"
url_check.Profile default block denyurl