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

Вопросы настройки и работы с этой ОС.
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
enno
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-03-19 10:49:49
Откуда: ЧЛБ

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

Непрочитанное сообщение enno » 2009-03-19 11:31:57

Добрый день знатоки!

На 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)..

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Khuman
рядовой
Сообщения: 27
Зарегистрирован: 2007-07-31 8:33:47
Откуда: Украина, Киев
Контактная информация:

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

Непрочитанное сообщение Khuman » 2009-04-01 16:14:18

Первое замечание. На каком интерфейсе висит прокси?
Если пользователи используют непрозрачные прокси, то в данное правило никогда не попадет ни один пакет. Потому что пакеты на 80 порт будут уходить с интерфейса прокси. Такое правило надо всегда вешать на внешний интерфейс.
It comes in the night and sucks the essence from your computers. ©Kern Sibbald

enno
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-03-19 10:49:49
Откуда: ЧЛБ

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

Непрочитанное сообщение enno » 2009-04-01 16:37:10

Хмм.. заметил что прокси 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      
это конечно не есть гуд.. Имеет ли это какое-то значение в моем случае?
Прозрачный прокси не используется.. т.е. на прокси принудительно ничего не заворачивается.

Аватара пользователя
Khuman
рядовой
Сообщения: 27
Зарегистрирован: 2007-07-31 8:33:47
Откуда: Украина, Киев
Контактная информация:

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

Непрочитанное сообщение Khuman » 2009-04-07 15:33:11

Приведите правило к следующему виду:

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

pass in on $ext_if route-to ($ext_if_2 $ext_gw_2) inet proto tcp to  port { 80 } keep state
И все должно работать.
It comes in the night and sucks the essence from your computers. ©Kern Sibbald

galser
проходил мимо

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

Непрочитанное сообщение galser » 2011-01-23 12:55:09

А не работает, столкнулся с той же проблемой, и... не работает, хотя и должно.

nerve
проходил мимо

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

Непрочитанное сообщение nerve » 2011-01-23 23:50:44

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

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

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

galser
проходил мимо
Сообщения: 3
Зарегистрирован: 2011-01-24 22:42:19

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

Непрочитанное сообщение galser » 2011-01-24 22:48:04

nerve писал(а): для роутинга сквида в нужный канал подымаем его только на нужном интерфейсе и делаем правило

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

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

galser
проходил мимо
Сообщения: 3
Зарегистрирован: 2011-01-24 22:42:19

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

Непрочитанное сообщение galser » 2011-01-25 12:16:19

nerve писал(а):последнее правило - верх бессмысленности.делаем правило

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

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

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

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

Непрочитанное сообщение BlackCat » 2011-01-28 18:05:59

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

Аватара пользователя
itux
мл. сержант
Сообщения: 114
Зарегистрирован: 2008-11-09 12:37:55
Откуда: Kemerovo
Контактная информация:

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

Непрочитанное сообщение itux » 2011-04-05 5:07:14

А что в опенке уже поменяли 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
несу чушь, не дорого... звонить +7903.......