URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 4294
[ Назад ]

Исходное сообщение
"Не работает squi+ipfw"

Отправлено Виктор , 25-Авг-06 15:09 
Люди добрые, помогите.

Собираю кеширующий 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 3128

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

cache_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.log

refresh_pattern ^ftp:         &n... 1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320

acl 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 CONNECT

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

acl our_networks src 192.168.5.0/255.255.255.0
http_access allow our_networks

http_access deny all
http_reply_access allow all
icp_access allow all

cache_effective_user nobody
cache_effective_group nogroup

error_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
--------------------------------------------


Содержание

Сообщения в этом обсуждении
"Не работает squi+ipfw"
Отправлено universite , 28-Авг-06 01:32 
>Люди добрые, помогите.

>2006/08/25 15:54:57| Reconfiguring Squid Cache (version 2.6.STABLE3)...

Оформляй PR разработчикам Кальмара.
У меня тоже не запахал на version 2.6.STABLE1, поэтому сижу на 2.5.


"Не работает squid+ipfw"
Отправлено ViktOr , 28-Авг-06 08:52 
По совету попробовал установить версию 2.5.STABLE12. Эффект одинаковый. Вывод, от версии в моем случае не зависит.



"Не работает squid+ipfw"
Отправлено Сергей , 09-Окт-06 09:36 
>По совету попробовал установить версию 2.5.STABLE12. Эффект одинаковый. Вывод, от версии в
>моем случае не зависит.


точно такая же картина  с  2.6 stable4

проблему разрешили?


"Не работает squid+ipfw"
Отправлено DeadLoco , 09-Окт-06 16:11 
>>По совету попробовал установить версию 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.

Успехов.


"Не работает squid+ipfw"
Отправлено kunaksergey , 11-Окт-06 19:45 
>>>По совету попробовал установить версию 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

>


"Не работает squid+ipfw"
Отправлено DeadLoco , 12-Окт-06 09:30 
>Я почему-то не согласен.. у меня например заворачивается на 3128 но опции
>httpd_accel_host virtual ,httpd_accel_with_proxy on httpd_accel_uses_host_header on -неактивны, а httpd_accel_port 80-вообще нету
>в squid.conf.default
>

Можно увидеть рабочую конфигурацию?


"Не работает squid+ipfw"
Отправлено ViktOr , 13-Окт-06 06:29 
Решение найдено, ошибка в написании правил 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. При этом очень не удобно использовать внешнюю программу авторизации. Это дело конечно вкуса и времени потраченного на настройку.


"Не работает squi+ipfw"
Отправлено Heggi , 30-Окт-06 22:29 
С версии 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


"Не работает squi+ipfw"
Отправлено Dima , 31-Окт-06 15:07 
>С версии 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+ipfw"
Отправлено blacksnake , 15-Май-07 06:07 
>>С версии 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 нетрогать. Будет работать.


"Не работает squid+ipfw"
Отправлено vpetrykanyn , 06-Окт-08 09:47 
"заворот на 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


Что я делаю не так?


"Не работает squid+ipfw"
Отправлено Вовк Владимир , 09-Ноя-11 10:08 
>[оверквотинг удален]
> 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


"Не работает squid+ipfw"
Отправлено Me_Shock , 23-Янв-13 11:46 
Спасибо огромное ТС и ответившим) Благодаря этому топику все заработало!

"Не работает squid+ipfw"
Отправлено Me_Shock , 23-Янв-13 13:04 
UPD: если squid версии 3 то для "прозрачного" вместо
http_port 192.168.100.1:3128 transparent
кажется нужно писать:
http_port 192.168.100.1:3128 tproxy