Люди добрые, помогите.Собираю кеширующий firewall. Сам firewall заработал. Все нормально. Но вот squid дружить с ним не хочет.
Поставил frebsd 5.4, далее пересобрал ядро, поправил конфиги, запустил bind, установил squid, все работает кроме squid. На машине клиента выпадает страница squid об ошибке.
С сервера браузер lynx страницы открывает.
Если в rc.conf убрать строку форварда по порту 3128 то машина честно исполняет свои функции.
Просмотрел доки и формумы, ничего не помогает, может я не вижу ошибку.
Привожу примеры конфиг файлов.часть из конфигурации ядра
----------------------------------------------
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
options IPFIREWALL_FORWARD
options TCP_DROP_SYNFIN
----------------------------------------------
rc.conf
----------------------------------------------
hostname="host.ru"
defaultrouter="217.217.217.217"
gateway_enable="YES"
ifconfig_rl0="inet 217.217.217.212 netmask 255.255.255.240"
ifconfig_rl1="inet 192.168.5.1 netmask 255.255.255.0"
inetd_enable="YES"
sshd_enable="YES"
named_enable="YES"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="ST"
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="rl0"
natd_flags="-f /etc/natd.conf"
-----------------------------------------------
rc.firewall
-----------------------------------------------
[Ss][Tt])
ipfw="/sbin/ipfw -q"
${ipfw} add fwd 127.0.0.1,3128 tcp from 192.168.5.0/24 to any 80
${ipfw} add divert natd ip from 192.168.5.0/24 to any out via rl0
${ipfw} add divert natd ip from any to x.X.X.212 in via rl0
${ipfw} add pass all from any to any
;;
--------------------------------------------
natd.conf
--------------------------------------------
log yes
log_denied no
use_sockets yes
same_ports yes
unregistered_only yes
dynamic yes
--------------------------------------------
squid.conf
--------------------------------------------
http_port 3128hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERYacl apache rep_header Server ^Apache
broken_vary_encoding allow apachecache_dir ufs /usr/local/squid/var/cache 100 16 256
access_log /usr/local/squid/var/logs/access.log squid
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.logrefresh_pattern ^ftp: &n... 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl CONNECT method CONNECThttp_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_portsacl our_networks src 192.168.5.0/255.255.255.0
http_access allow our_networkshttp_access deny all
http_reply_access allow all
icp_access allow allcache_effective_user nobody
cache_effective_group nogrouperror_directory /usr/local/squid/share/errors/Russian-1251
coredump_dir /usr/local/squid/var/cache
--------------------------------------------
access.log
--------------------------------------------
1156517350.911 1 192.168.5.20 TCP_DENIED/400 1541 GET error:invalid-request - NONE/- text/html
1156521340.636 1 192.168.5.20 TCP_DENIED/400 1863 GET error:invalid-request - NONE/- text/html
1156522129.855 1 192.168.5.20 TCP_DENIED/400 1536 GET error:invalid-request - NONE/- text/html
--------------------------------------------
store.log
--------------------------------------------
1156518216.161 RELEASE -1 FFFFFFFF C1BBFD153BA30746972ACCBBB99134FC 400 1156518216 0 1156518216 text/html 1421/1421 GET error:invalid-request
1156521340.636 RELEASE -1 FFFFFFFF E4392E8E1EB6C2F8D383AC9772B21436 400 1156521340 0 1156521340 text/html 1863/1863 GET error:invalid-request
1156522129.855 RELEASE -1 FFFFFFFF 6FFCB93DFA4F13AFC1D50963F8CC93B9 400 1156522129 0 1156522129 text/html 1536/1536 GET error:invalid-request
--------------------------------------------
cache.log
--------------------------------------------
2006/08/25 15:54:57| Reconfiguring Squid Cache (version 2.6.STABLE3)...
2006/08/25 15:54:57| FD 9 Closing HTTP connection
2006/08/25 15:54:57| FD 11 Closing ICP connection
2006/08/25 15:54:57| Cache dir '/usr/local/squid/var/cache' size remains unchanged at 102400 KB
2006/08/25 15:54:57| DNS Socket created at 0.0.0.0, port 52935, FD 8
2006/08/25 15:54:57| Adding domain host.ru from /etc/resolv.conf
2006/08/25 15:54:57| Adding nameserver 192.168.5.1 from /etc/resolv.conf
2006/08/25 15:54:57| Adding nameserver 217.217.217.212 from /etc/resolv.conf
2006/08/25 15:54:57| Adding nameserver 217.217.217.5 from /etc/resolv.conf
2006/08/25 15:54:57| Accepting proxy HTTP connections at 0.0.0.0, port 3128, FD 9.
2006/08/25 15:54:57| Accepting ICP messages at 0.0.0.0, port 3130, FD 11.
2006/08/25 15:54:57| WCCP Disabled.
2006/08/25 15:54:57| Loaded Icons.
2006/08/25 15:54:57| Ready to serve requests.
2006/08/25 15:55:40| clientReadRequest: FD 13 Invalid Request
2006/08/25 16:08:49| clientReadRequest: FD 13 Invalid Request
2006/08/25 16:08:49| clientReadRequest: FD 13 Invalid Request
--------------------------------------------
>Люди добрые, помогите.>2006/08/25 15:54:57| Reconfiguring Squid Cache (version 2.6.STABLE3)...
Оформляй PR разработчикам Кальмара.
У меня тоже не запахал на version 2.6.STABLE1, поэтому сижу на 2.5.
По совету попробовал установить версию 2.5.STABLE12. Эффект одинаковый. Вывод, от версии в моем случае не зависит.
>По совету попробовал установить версию 2.5.STABLE12. Эффект одинаковый. Вывод, от версии в
>моем случае не зависит.
точно такая же картина с 2.6 stable4проблему разрешили?
>>По совету попробовал установить версию 2.5.STABLE12. Эффект одинаковый. Вывод, от версии в
>>моем случае не зависит.
>
>
>точно такая же картина с 2.6 stable4
>
>проблему разрешили?Проблема в недостаточно вдумчивом курении манов.
Прозрачное кеширование с принудительным заворотом запросов на сквид требует функционирования сквида в режиме HTTP_ACCELERATOR, что сопровождается помещением в конфиг строк, вида:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header onСвязано это с тем, что запрос к прокси отличается от запроса непосредственно к httpd, о чем свид честно плакался строчками:
access.log
--------------------------------------------
1156517350.911 1 192.168.5.20 TCP_DENIED/400 1541 GET error:invalid-request - NONE/- text/html
1156521340.636 1 192.168.5.20 TCP_DENIED/400 1863 GET error:invalid-request - NONE/- text/html
1156522129.855 1 192.168.5.20 TCP_DENIED/400 1536 GET error:invalid-request - NONE/- text/html
При этом более вдумчивого курения требует ман по форварду в IPFW, ввиду несомненной потребности НЕ заворачивать на прокси запросы к локальному httpd.Успехов.
>>>По совету попробовал установить версию 2.5.STABLE12. Эффект одинаковый. Вывод, от версии в
>>>моем случае не зависит.
>>
>>
>>точно такая же картина с 2.6 stable4
>>
>>проблему разрешили?
>
>Проблема в недостаточно вдумчивом курении манов.
>
>Прозрачное кеширование с принудительным заворотом запросов на сквид требует функционирования сквида в
>режиме HTTP_ACCELERATOR, что сопровождается помещением в конфиг строк, вида:
>
>httpd_accel_host virtual
>httpd_accel_port 80
>httpd_accel_with_proxy on
>httpd_accel_uses_host_header on
>
Я почему-то не согласен.. у меня например заворачивается на 3128 но опции httpd_accel_host virtual ,httpd_accel_with_proxy on httpd_accel_uses_host_header on -неактивны, а httpd_accel_port 80-вообще нету в squid.conf.default>
>Я почему-то не согласен.. у меня например заворачивается на 3128 но опции
>httpd_accel_host virtual ,httpd_accel_with_proxy on httpd_accel_uses_host_header on -неактивны, а httpd_accel_port 80-вообще нету
>в squid.conf.default
>Можно увидеть рабочую конфигурацию?
Решение найдено, ошибка в написании правил IPFW.
Привожу рабочий кусок правил, может кому и пригодится.rc.firewall
-----------------------------------------------
[Ss][Tt])
FwCMD="/sbin/ipfw"
LanOut="rl0"
LanIn="rl1"
IpOut="217.217.217.217"
IpIn="192.168.5.1"
NetMask="24"
NetIn="192.168.5.0"
#
${FwCMD} -f flush
${FwCMD} add check-state
#
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any
#
${FwCMD} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 0.0.0.0/8 in via ${LanOut}
#
${FwCMD} add deny ip from any to 169.254.0.0/16 in via ${LanOut}
#
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}
#
${FwCMD} add deny icmp from any to any frag
#
${FwCMD} add deny log icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add deny log icmp from any to 255.255.255.255 out via ${LanOut}
#squid
${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetIn}/${NetMask} to any 80 via ${LanOut}
# (NAT)
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
#
${FwCMD} add deny ip from 10.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 172.16.0.0/12 to any out via ${LanOut}
${FwCMD} add deny ip from 192.168.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 0.0.0.0/8 to any out via ${LanOut}
#
${FwCMD} add deny ip from 169.254.0.0/16 to any out via ${LanOut}
#
${FwCMD} add deny ip from 224.0.0.0/4 to any out via ${LanOut}
#
${FwCMD} add deny ip from 240.0.0.0/4 to any out via ${LanOut}
#
${FwCMD} add allow tcp from any to any established
#
${FwCMD} add allow ip from ${IpOut} to any out xmit ${LanOut}
# DNS
${FwCMD} add allow udp from any 53 to any via ${LanOut}
# DNS named
${FwCMD} add allow udp from any to any 53 via ${LanOut}
#
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
# 80
${FwCMD} add allow tcp from any to ${IpOut} 80 via ${LanOut}
# 25 (SMTP)
${FwCMD} add allow tcp from any to ${IpOut} 25 via ${LanOut}
# 22 ssh
${FwCMD} add allow tcp from any to ${IpOut} 22 via ${LanOut}
# 143 IMAP
${FwCMD} add allow tcp from any to ${IpOut} 143 via ${LanOut}
# 110 POP
${FwCMD} add allow tcp from any to ${IpOut} 110 via ${LanOut}
${FwCMD} add allow tcp from any to any via ${LanIn}
# udp
${FwCMD} add allow udp from any to any via ${LanIn}
# icmp
${FwCMD} add allow icmp from any to any via ${LanIn}
;;
А по поводу squid.
Я так и остановился на версии сквида 2.5stable12.
Пробовал прозрачное проксирование работает, если добавить строки
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
У меня еще идет авторизация, а при прозрачном проксировании ПО клиента считает, что обращается напрямую к серверу и никогда не посылает заголовок Proxy-authorization. При этом очень не удобно использовать внешнюю программу авторизации. Это дело конечно вкуса и времени потраченного на настройку.
С версии Squid 2.6 отменили опции
httpd_accel_uses_host_header on
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy onтеперь надо писать
http_port 3128 transparentнапоролся на теже грабли, пока не полистал свежий дефолтный конфиг, идущий со Squid
>С версии Squid 2.6 отменили опции
>httpd_accel_uses_host_header on
>httpd_accel_host virtual
>httpd_accel_port 80
>httpd_accel_with_proxy on
>
>теперь надо писать
>http_port 3128 transparent
>
>напоролся на теже грабли, пока не полистал свежий дефолтный конфиг, идущий со
>Squid
Сидел два часа мучался, а внимательности прочитать коментарии мозгов не хватило
>>С версии Squid 2.6 отменили опции
>>httpd_accel_uses_host_header on
>>httpd_accel_host virtual
>>httpd_accel_port 80
>>httpd_accel_with_proxy on
>>
>>теперь надо писать
>>http_port 3128 transparent
>>
>>напоролся на теже грабли, пока не полистал свежий дефолтный конфиг, идущий со
>>Squid
>
>
>Сидел два часа мучался, а внимательности прочитать коментарии мозгов не хватилопросто заменить http_port 3128
на http_port 3128 transparent
заворот на ipfw нетрогать. Будет работать.
"заворот на ipfw нетрогать. Будет работать."Добрый день!
Из ipfw:
...
ipfw add 86 fwd 127.0.0.1,3128 tcp from 10.128.128.0/24 to any 80,8085,5190
...Из squid.conf:
...
http_port 127.0.0.1:3128 transparent
...Но в логи squid все равно валятся ошибки вида:
1223271921.470 0 10.128.128.36 TCP_DENIED/400 1620 GET error:invalid-request - NONE/- text/html
1223271926.476 0 10.128.128.36 TCP_DENIED/400 1620 GET error:invalid-request - NONE/- text/html
1223271931.482 0 10.128.128.36 TCP_DENIED/400 1620 GET error:invalid-request - NONE/- text/html
Что я делаю не так?
>[оверквотинг удален]
> http_port 127.0.0.1:3128 transparent
> ...
> Но в логи squid все равно валятся ошибки вида:
> 1223271921.470 0 10.128.128.36 TCP_DENIED/400 1620 GET error:invalid-request
> - NONE/- text/html
> 1223271926.476 0 10.128.128.36 TCP_DENIED/400 1620 GET error:invalid-request
> - NONE/- text/html
> 1223271931.482 0 10.128.128.36 TCP_DENIED/400 1620 GET error:invalid-request
> - NONE/- text/html
> Что я делаю не так?Заработало после того, как указал адрес шлюза (192.168.100.1):
http_port 192.168.100.1:3128 transparent
Спасибо огромное ТС и ответившим) Благодаря этому топику все заработало!
UPD: если squid версии 3 то для "прозрачного" вместо
http_port 192.168.100.1:3128 transparent
кажется нужно писать:
http_port 192.168.100.1:3128 tproxy