Имеется сервер под управление FreeBSD. На нем установлен squid.
Адрес внешнего интерфейса 192.168.111.1 (реальный считаем). Если сделать прямой запрос, например, lynx www.mail.ru то все работает.Сделал прохождение www запросов через прокси:\
ipfw add 02500 fwd 127.0.0.1,3128 tcp from 192.168.111.1 to any dst-port 80 out via внеш_интерфейсВ squid.conf прописаны следующие строки:
acl all src 0.0.0.0/0
http_access allow allПробую lynx mail.ru
Выдает
The requested URL could not be retrieved
_______________________________________________________________________________________________________________________________________________While trying to retrieve the URL: http://www.mail.ru/
The following error was encountered:
* Access Denied.
Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is
incorrect.Почему же сквид не разрешает?
>Имеется сервер под управление FreeBSD. На нем установлен squid.
>Адрес внешнего интерфейса 192.168.111.1 (реальный считаем). Если сделать прямой запрос, например, lynx
>www.mail.ru то все работает.
>
>Сделал прохождение www запросов через прокси:\
>ipfw add 02500 fwd 127.0.0.1,3128 tcp from 192.168.111.1 to any dst-port 80
>out via внеш_интерфейс
>
>В squid.conf прописаны следующие строки:
>acl all src 0.0.0.0/0
>http_access allow all
>
>Пробую lynx mail.ru
>Выдает
>The requested URL could not be retrieved
> _______________________________________________________________________________________________________________________________________________
>
> While trying to retrieve the URL: http://www.mail.ru/
>
> The following error was encountered:
> * Access Denied.
> Access control configuration prevents your
>request from being allowed at this time. Please contact your service
>provider if you feel this is
> incorrect.
>
>Почему же сквид не разрешает?
Дай весь squid.conf
### squid.conf ###http_port 3128
hierarchy_stoplist cgi-bin ?acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
refresh_pattern ^ftp: 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 Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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 CONNECThttp_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl our_networks src 10.30.0.0/16 192.168.111.0/24 127.0.0.0/8
http_access allow our_networks
http_access deny all
http_reply_access allow all
icp_access allow all
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Посмотри в access.log с какого ip-адреса идет обращение, что ему выдается DENY.
>Посмотри в access.log с какого ip-адреса идет обращение, что ему выдается DENY.
>1130042067.506 0 192.168.111.1 TCP_DENIED/403 1353 GET http://www.mail.ru/ - NONE/- text/html
1130042067.507 5 192.168.111.1 TCP_MISS/403 1387 GET http://www.mail.ru/ - DIRECT/194.67.57.26 text/html
Во всей этой схеме меня смущает одна вещь.
Смотри, когда я запускаю lynx www.mail.ru браузер отправляет запрос на www.mail.ru:80 и адрес отправитель при этом 192.168.111.1 (адрес внешнего интерфейса). Пакет попадает в файрвол и срабатывает правильно "fwd 127.0.0.1,3128 tcp from 192.168.111.1 to any 80 out via внеш_интерфейс". Пакет нашего браузера перенаправляется на проксик на этой же машине. Проксик, получив этот пакет, в свою очередь, отправляет запрос на www.mail.ru:80 и при этом адрес отправителя будет 192.168.111.1 (т.к. это адрес внешнего интерфейса), а далее этот пакет попадает в файрвол и соответствует правилу fwd. В результате запрос самого проксика, должен быть перенправлен на его же вход (127.0.0.1:3128). По логике получается петля. В полне возможно, что проксик от этого защищается, выдавая сообщение, что доступ запрещен. Потому что, в конфиге все списки доступа прописаны более чем достаточно.
Только я пока не могу придумать, как корректно решить эту задачу.