Страница 1 из 1

PF + 2 прова + squid + route-to

Добавлено: 2009-03-19 11:31:57
enno
Добрый день знатоки!

На pf не получается реализовать сабжевую связку, когда имея 2х подключенных провайдеров к одной машине перенаправить www трафик запрашиваемый прокси сервером на другой интерфейс.
имеем:

OpenBSD машинка. Шлюз по умолчанию на машинке является IP - ext_gw_1, соответственно весь трафик с локального интерфейса em1 (локалка 192.168.5.0/24) ходит через внешний интерфейс em0 - первого прова.
Пользователям локалки 80 порт закрыт наружу. Для доступа к вебу пользователи локалки используют подключения к squid прокси. который находится на этой-же машине. 3128 порт
Перепробовал много вариантов, в том числе и те которые были в примере pf.conf статьи - "Настройка Policy Based Routing с помощью pf" .. одним словом - не прокатило...

Вот текущий конфиг интерфейсов..

Код: Выделить всё

# interfaces
ext_if_1="em0"
ext_if_2="xl1"
ext_gw_1="111.111.111.1"
ext_gw_2="222.222.222.1"
int_if="em1"   # локалка 192.168.5.0/24

pass in on $int_if route-to ($ext_if_2 $ext_gw_2) inet proto tcp from $int_if:network to  any  port { 80 } keep state
Необходимо завернуть www трафик от squid прокси, на второго провайдера - Интерфейс ext_if_2, т.е. чтобы пакет уходил и приходил от squid'a через интерфейс второго провайдера (чтобы исключить spoofing)..

Re: PF + 2 прова + squid + route-to

Добавлено: 2009-04-01 16:14:18
Khuman
Первое замечание. На каком интерфейсе висит прокси?
Если пользователи используют непрозрачные прокси, то в данное правило никогда не попадет ни один пакет. Потому что пакеты на 80 порт будут уходить с интерфейса прокси. Такое правило надо всегда вешать на внешний интерфейс.

Re: PF + 2 прова + squid + route-to

Добавлено: 2009-04-01 16:37:10
enno
Хмм.. заметил что прокси LISTEN у меня на всех интерфейсах. netstat -na |grep 3128

Код: Выделить всё

tcp        0      0  172.16.88.5.3128        172.16.88.238.4758      ESTABLISHED 
tcp        0      0  172.16.88.5.3128        172.16.88.214.3175      ESTABLISHED 
tcp        0      0  172.16.88.5.3128        172.16.88.194.4377      ESTABLISHED 
tcp        0      0  *.3128                 *.*                    LISTEN      
это конечно не есть гуд.. Имеет ли это какое-то значение в моем случае?
Прозрачный прокси не используется.. т.е. на прокси принудительно ничего не заворачивается.

Re: PF + 2 прова + squid + route-to

Добавлено: 2009-04-07 15:33:11
Khuman
Приведите правило к следующему виду:

Код: Выделить всё

pass in on $ext_if route-to ($ext_if_2 $ext_gw_2) inet proto tcp to  port { 80 } keep state
И все должно работать.

Re: PF + 2 прова + squid + route-to

Добавлено: 2011-01-23 12:55:09
galser
А не работает, столкнулся с той же проблемой, и... не работает, хотя и должно.

Re: PF + 2 прова + squid + route-to

Добавлено: 2011-01-23 23:50:44
nerve
последнее правило - верх бессмысленности.
разрешить пакет на внешнем и потом его роутить обратно..кхм.
роут-ту нужен для входящего пакета на одном интерфейсе, когда надо выпустить через другой или чтоб правильно выпускать пакеты на внешних интерфейсах.
реплай-ту нужен для входящих пакетах при порт-форвардинге, чтоб выпускать обратные пакеты в нужный интерфейс.
для роутинга сквида в нужный канал подымаем его только на нужном интерфейсе и делаем правило

Код: Выделить всё

pass out inet from $ext_if_b route-to ($ext_if_b $ext_gw_b)

Re: PF + 2 прова + squid + route-to

Добавлено: 2011-01-24 22:48:04
galser
nerve писал(а): для роутинга сквида в нужный канал подымаем его только на нужном интерфейсе и делаем правило

Код: Выделить всё

pass out inet from $ext_if_b route-to ($ext_if_b $ext_gw_b)
Разбираемся....
Вот теперь можно помедленнее "подымаем его только на нужном интерфейсе" - это на каком? Традиционно сквид подымается на внутреннем интефейсе, так?
Значит, при наличии шлюза по умолчанию, он будет создавать пакеты на ЭТОТ шлюз, от адреса карты которая на этот шлюз смотрит, так? Так что тогда имеется в виду под "подымаем его только на нужном интерфейсе", нужный это какой? Просто если задать ему tcp_outgoing_address то да, он тогда будет запрос делать например от адреса второй карточки, но! что-то с реализацией этого механизма у него не чисто (Squid 3.1) бо потому как многие форумы это смущает, вконтакте тоже ну и т.д.
Если его поднимать на внешнем интефейсе... то... ну это бред какой-то получается, или я не прав?

Re: PF + 2 прова + squid + route-to

Добавлено: 2011-01-25 12:16:19
galser
nerve писал(а):последнее правило - верх бессмысленности.делаем правило

Код: Выделить всё

pass out inet from $ext_if_b route-to ($ext_if_b $ext_gw_b)
Кстати, это синтаксически неверное правило. Чтобы не доверять своим глазам я проверил на FreeBSD 8.1 - Syntax incorrect.

Re: PF + 2 прова + squid + route-to

Добавлено: 2011-01-28 18:05:59
BlackCat
route-to, как уже было сказано выше, предназначен для манипулирования транзитным трафиком, а трафик прокси-сервера является локальным: генерируется локально и уходя во внешнюю сеть не проходит ни одного интерфейса на вход.
Попробуйте создать отдельную таблицу маршрутов для прокси-сервера, в которой маршрут по-умолчанию будет идти через второго провайдера.

Re: PF + 2 прова + squid + route-to

Добавлено: 2011-04-05 5:07:14
itux
А что в опенке уже поменяли pf?

rdr on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128

pass in on $int_if inet proto tcp from any to 127.0.0.1 port 3128 keep state
pass out on $ext_if inet proto tcp from any to any port www keep state