c-icap nem megy [SOLVED]

Fórumok

Na nem biztos hogy a security-be tartozik el. Telepítettem egy c-icap szervert, aminek többek között az lenne a feladat, hogy a squid által szolgáltatott weblapokat szűrje meg. Telepítettem hozzá egy squidclamav-t is. Amikor foreground + debug módban megpróbálom elindítani a c-icap-ot akkor a következő történik:

# /usr/local/bin/c-icap -f /usr/local/etc/c-icap/c-icap.conf -D
The acl spec all does not exists!
squidclamav.c(183) squidclamav_init_service: DEBUG Going to initialize squidclamav
LOG Reading configuration from /usr/local/etc/c-icap//squidclamav.conf
LOG Reading directive maxsize with value 5000000
LOG Reading directive clamd_local with value /var/run/clamav/clamd.sock
LOG Reading directive timeout with value 1
LOG Reading directive logredir with value 0
LOG Reading directive dnslookup with value 1
LOG Reading directive safebrowsing with value 0
Warning, alias is the same as service_name, not adding
#

Szóval az történik, hogy beolvassa a konfig állományokat. Látszólag nincs semmiféle hiba (csak LOG sorok vannak és egy WARNING), de a program befejeződik, és mindenféle további magyarázat nélkül visszakapom a prompt-ot. Ha rc script-ből próbálom meg elindítani, akkor pontosan ugyan ez a helyzet. Nincs üzenet, nincs semmi a logban:

# /usr/local/etc/rc.d/c-icap start
Starting c_icap.
# /usr/local/etc/rc.d/c-icap status
c_icap is not running.
#

Így hibaüzenet hiányában nem sikerült rájönnöm hogy mi a baj. Mi lehet a baja?

Környezet: FreeBSD 10.2-RELEASE c-icap-0.3.5_2,2 squidclamav-6.13

Hozzászólások

A config állományban átirtam a user-t c_icap -ra és most elindul. Érdekes, hogy a "rossz" user-nél semmiféle hibaüzenetet nem irt ki. Ha meg -N -D -d 10 kapcsolókkal indittotam (ultra debug level) akkor a legvégén csak annyit hogy "already running" pedig nem is.

Na most már más hiba van (squid irja hogy ICAP protocol error) de azt már bizonyára magamtól is megoldom.

Több sebtől vérzett, de megoldódott. Íme a buktatók:

- A c_icap alapból ipv6-on figyel és nem ipv4-en. Emiatt ha a squid-ot nem fordítod ipv6 támogatással akkor megette a fene az egészet.
- A c_icap alap telepítésnél csak akkor működik jól ha c_icap user nevével fut. (Hogy miért azt nem vizsgáltam mélyebben)
- A squid.conf-ba az icap_service részbe ha beírod címnek hogy icap://localhost:1344 akkor megintcsak átvágtad magadat, mert a localhost az sajnos ipv4-es címet jelent. És ez még akkor is így van, ha ugyan ebbe a sorba options-ba beírod hogy "ipv6=yes". Hogy ez miért jó, azt nem tudom de így van. Ehelyett azt kell megadni hogy "icap://[::1]:1344" ami elég vicces. A [] arra kell hogy a ::1 -et ne vegye egy szintaktikai hibás portszámnak.
- Végül de nem utolsó sorban, amikor engedélyeztem az ipv6-ot akkor elfelejtettem hogy arra nincs tűzfal szabályom, és vagy fél órát azzal szívtam hogy nem tudott csatlakozni az icap szolgáltatáshoz.

Vagyis nem emiatt szívtam, hanem ezek együttesével, amik közül néhány önmagában is nehezen földeríthető hibaforrás. Debuggolás se egyszerű, icap debug-hoz "debug_options 93, 5" a squid.conf-ba, utána tail -f cache.log

Ez a bejegyzés azért ilyen hosszú, mert gondoltam ha eltöltöttem vele ennyi időt akkor másnak már ne kelljen - fölsoroltam az összes nem triviális buktatót amit találtam.

Amúgy azt ki találta ki hogy az ipv6 címek rövidítése ugyan azzal a karakterrel történjen mint a portszámok megadása???