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

Исходное сообщение
"Прозрачный Squid - Запрошенный URL не может быть доставлен"

Отправлено billybons2006 , 03-Фев-11 11:45 
На FreeBSD 7.0 стоит Squid 2.6.20 и ipfw.

В squid.conf есть (192.168.2.61 - адрес прокси в локалке):
*****
http_port 192.168.2.61:3128 transparent
#http_port 3128 transparent #по сути, аналогично строке выше

*****

В ipfw.sh так (естественно, укорочено):
*****
$cmd 0200 divert natd ip from any to any in via $out_if
...
# как только я не извращался...
#$cmd 0202 fwd 127.0.0.1,3128 tcp from $user_IP to any 80 via $out_if
#$cmd 0202 fwd 127.0.0.1,3128 tcp from $user_IP to any 80 recv $local_if
$cmd 0202 fwd 127.0.0.1,3128 tcp from $user_IP to any 80
...
*****

При попытке открыть сайт без указания прокси получаю в ответ (в броузере):
*****
ОШИБКА
Запрошенный URL не может быть доставлен.
Во время обработки запроса:
GET /?clid=139085 HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; Yandex Browser; ru)
Host: www.yandex.ru
...
Произошла следующая ошибка:
Неверный запрос.

Некоторые аспекты HTTP запроса неправильны. Возможные проблемы:
Отсутствует либо неизвестен метод запроса (GET, POST)
Отсутствует URL
Отсутствует HTTP идентификатор (HTTP/1.0)
Запрос слишком велик
Не указан Content-Length для запросов POST или PUT
Недопустимый символ в имени сервера; подчёркивания недопустимы.
_____
Generated Thu, 03 Feb 2011 07:48:00 GMT by InternetPC (squid/2.6.STABLE20)
*****

Т.е. судя по ответу, мои запросы к проксе доходят (т.е. форвардинг работает, Squid получает запрос). Но вот почему вместо сайта я получаю ошибку - не ясно. Если проксю указать вручную, все работает.

ВОПРОС: че я делаю не так?


Содержание

Сообщения в этом обсуждении
"Прозрачный Squid - Запрошенный URL не может быть доставлен"
Отправлено ленивец_ , 03-Фев-11 13:23 
>[оверквотинг удален]
> Запрос слишком велик
> Не указан Content-Length для запросов POST или PUT
> Недопустимый символ в имени сервера; подчёркивания недопустимы.
> _____
> Generated Thu, 03 Feb 2011 07:48:00 GMT by InternetPC (squid/2.6.STABLE20)
> *****
> Т.е. судя по ответу, мои запросы к проксе доходят (т.е. форвардинг работает,
> Squid получает запрос). Но вот почему вместо сайта я получаю ошибку
> - не ясно. Если проксю указать вручную, все работает.
> ВОПРОС: че я делаю не так?

в сквиде
вместо http_port 192.168.2.61:3128 transparent
попробовать http_port 127.0.0.1:3128 transparent

или в ipfw
вместо $cmd 0202 fwd 127.0.0.1,3128 tcp from $user_IP to any 80
указать $cmd 0202 fwd 192.168.2.61,3128 tcp from $user_IP to any 80

что-то одно из двух ;)


"Прозрачный Squid - Запрошенный URL не может быть доставлен"
Отправлено reader , 03-Фев-11 13:25 
собиралось с поддержкой ipfw?
посмотрите в access.log как записан url

и с ip определитесь


"Прозрачный Squid - Запрошенный URL не может быть доставлен"
Отправлено billybons2006 , 03-Фев-11 14:35 
Большое спасибо за комментарии, исправлений оказалось несколько.

1. (я в шоке) в squid.conf первой строкой стояло http_port 3128!!! Я в конфиге не заметил (!!!!) первую строку. Естественно, дальше все мои потуги с разными http_port работать не должны были.

2. Перед правилом NAT поставил следующую переадресацию:
*****
# Redirect to local proxy
$cmd 0170 fwd 127.0.0.1,3128 tcp from 192.168.2.0/24 to any 80

# NAT
$cmd 0200 divert natd ip from any to any in via $out_if
...
*****

Все работает. Еще раз спасибо!