The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Перенаправление HTTP через PF на SQUID для некоторых подсетей"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Firewall, Фильтрация пакетов / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Перенаправление HTTP через PF на SQUID для некоторых подсетей"  –1 +/
Сообщение от bulletin6 (ok) on 19-Июн-15, 20:05 
Много в интернете есть статей как перенаправить с помощью PF веб-трафик на SQUID. Тема обсуждалась не одну сотню раз.

Вопрос! Как перенаправить трафик на SQUID с помощью PF для определенных подсетей?

Обычно в PF создается правило, которые перенаправляет ВЕСЬ трафик на прокси.

Я хочу чтобы трафик на определенные хостинг-ресурсы, чьи подсети я знаю, перенаправлялся из моей клиентской подсети на SQUID, таким образом, чтобы остальные пакеты шли тразитом через внутреннюю таблицу маршрутизации, не попадая на прокси.

Куда копать?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Перенаправление HTTP через PF на SQUID для некоторых подсетей"  +/
Сообщение от eRIC (ok) on 19-Июн-15, 20:40 
> Много в интернете есть статей как перенаправить с помощью PF веб-трафик на
> SQUID. Тема обсуждалась не одну сотню раз.
> Вопрос! Как перенаправить трафик на SQUID с помощью PF для определенных подсетей?
> Обычно в PF создается правило, которые перенаправляет ВЕСЬ трафик на прокси.
> Я хочу чтобы трафик на определенные хостинг-ресурсы, чьи подсети я знаю, перенаправлялся
> из моей клиентской подсети на SQUID, таким образом, чтобы остальные пакеты
> шли тразитом через внутреннюю таблицу маршрутизации, не попадая на прокси.
> Куда копать?

SQUID на сервере где и PF или отдельный сервер?

приблизительно такой будет конфиг:


int_if="em0"
ext_if="em1"

-- локальная сеть
lan = "192.168.1.0/24"
-- хостинг сети
nets = "{ 10.8.0.0/16, 192.168.50.0/24 }"
-- сервер squid
squid = "192.168.1.15"

rdr on $int_if proto tcp from $lan to $nets port 80 -> $squid port 3128

pass in on $int_if inet proto tcp from $lan to $squid port 3128 keep state
pass out on $ext_if inet proto tcp from $squid to any port 80 keep state


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Перенаправление HTTP через PF на SQUID для некоторых подсетей"  +/
Сообщение от bulletin6 (ok) on 19-Июн-15, 20:42 
>[оверквотинг удален]
> -- хостинг сети
> nets = "{ 10.8.0.0/16, 192.168.50.0/24 }"
> -- сервер squid
> squid = "192.168.1.15"
> rdr on $int_if proto tcp from $lan to $nets port 80 ->
> $squid port 3128
> pass in on $int_if inet proto tcp from $lan to $squid port
> 3128 keep state
> pass out on $ext_if inet proto tcp from $squid to any port
> 80 keep state

да, SQUID на той железке что и PF

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Перенаправление HTTP через PF на SQUID для некоторых подсетей"  +/
Сообщение от eRIC (ok) on 19-Июн-15, 23:39 
>[оверквотинг удален]
>> nets = "{ 10.8.0.0/16, 192.168.50.0/24 }"
>> -- сервер squid
>> squid = "192.168.1.15"
>> rdr on $int_if proto tcp from $lan to $nets port 80 ->
>> $squid port 3128
>> pass in on $int_if inet proto tcp from $lan to $squid port
>> 3128 keep state
>> pass out on $ext_if inet proto tcp from $squid to any port
>> 80 keep state
> да, SQUID на той железке что и PF

тогда значение переменной $squid нужно будет указать 127.0.0.1


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Перенаправление HTTP через PF на SQUID для некоторых подсетей"  +/
Сообщение от bulletin6 (ok) on 20-Июн-15, 08:37 
>[оверквотинг удален]
>>> -- сервер squid
>>> squid = "192.168.1.15"
>>> rdr on $int_if proto tcp from $lan to $nets port 80 ->
>>> $squid port 3128
>>> pass in on $int_if inet proto tcp from $lan to $squid port
>>> 3128 keep state
>>> pass out on $ext_if inet proto tcp from $squid to any port
>>> 80 keep state
>> да, SQUID на той железке что и PF
> тогда значение переменной $squid нужно будет указать 127.0.0.1

такая конфигурация не работает, но после 8 часов потрахушек и изучения документации заработала вот какая конфига PF

int_if="re0"
ext_if="re1"
bridge="bridge0"

rdr on $int_if inet proto tcp from any to 213.180.0.0/16 port www -> 127.0.0.1 port 3128
pass in quick on $int_if route-to lo0 inet proto tcp from any to 127.0.0.1 port 3128 keep state

да, забыл сказать, что у меня только 1 IP-адрес и Squid висит на loopback интерфейсе, с чем были связаны ошибки вида:

    Invalid URL
Some aspect of the requested URL is incorrect.
Some possible problems are:
    Missing or incorrect access protocol (should be "http://" or similar)
    Missing hostname
    Illegal double-escape in the URL-Path
    Illegal character in hostname; underscores are not allowed.
Your cache administrator is root.

а в логах сквида ошибки:
WARNING: Forwarding loop detected for:
GET /Artwork/SN.png HTTP/1.1
Host: www.squid-cache.org

при обращении к любой странице. Исправил заменой

http_port 127.0.0.1:3128
http_port 127.0.0.1:3129 intercept

на

http_port 127.0.0.1:3128 accel vhost allow-direct

Может кому поможет.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Перенаправление HTTP через PF на SQUID для некоторых подсетей"  +/
Сообщение от eRIC (ok) on 20-Июн-15, 13:36 
>>[оверквотинг удален]
>>>> -- сервер squid
> при обращении к любой странице. Исправил заменой
> http_port 127.0.0.1:3128
> http_port 127.0.0.1:3129 intercept
> на
> http_port 127.0.0.1:3128 accel vhost allow-direct
> Может кому поможет.

мой конфиг PF рабочий, все зависит какие у вас правила PF для loopback были. вам показали дверь в которую нужно зайти, а идти без света или с светом ваше решение :). рад был помочь

да верно, без accel не заработает. SQUID должен работать в прозрачном режиме в виде акселератора, иначе все зациклится. примерно такими доп. опциями в SQUID:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

3. "Перенаправление HTTP через PF на SQUID для некоторых подсетей"  +/
Сообщение от bulletin6 (ok) on 19-Июн-15, 20:42 
>[оверквотинг удален]
> -- хостинг сети
> nets = "{ 10.8.0.0/16, 192.168.50.0/24 }"
> -- сервер squid
> squid = "192.168.1.15"
> rdr on $int_if proto tcp from $lan to $nets port 80 ->
> $squid port 3128
> pass in on $int_if inet proto tcp from $lan to $squid port
> 3128 keep state
> pass out on $ext_if inet proto tcp from $squid to any port
> 80 keep state

сегодня до сервера доберусь, потестирую, отпишусь

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру