Здравствуйте! Помогите, пожалуйста, в решении следующей проблемы. Есть шлюз на базе Freebsd 8.2+pf+squid. На шлюзе три сетевые карты - одна внутренняя (172.16.72.0/21-int_if), вторая внешняя (инет, ext_if), третья - в локальной сети другого провайдера (172.30.0.0/16-prov_if). На внутреннем интерфейсе int_if порту 3128 висит сквид. Обычный, с ntlm-авторизацией, не transparent. Маршрутизация настроена и пакеты ходят с компов локальной сети как в инет, так и в локальную сеть другого провайдера. Задача в том, чтобы заворачивать пакеты, идущие в инет на 80-порт принудительно через сквид, а пакеты, идущие в локальную сеть другого провайдера на 80-порт просто пропускать на свой интерфейс (prov_if). Настройки браузеров - Автоматическое получение параметров. В pf имеются следующие правила: rdr pass on $int_if inet proto tcp from <local_comps> to { !172.16.72.0/21, !172.30.0.0/16 } port www ->$int_if port 3128 Интернет при этом перестает работать вообще, и проблема в том, что пакеты на 80-порт локальной сети другого провайдера всё равно перехватываются сквидом. Если закомментировать это правило, в настройках клиентов прописать прокси руками, добавить в исключения локальные ip-адреса другого провайдера, всё работает Может тут необходимо использовать какие-то конструкции типа route-to для решения проблемы?P.S. Сделал так: no rdr on $int_if inet proto tcp from <local_comps> to { 172.30.0.0/16 } rdr pass on $int_if inet proto tcp from <local_comps> to { !172.16.72.0/21 } port www ->$int_if port 3128 И все равно пакеты на 80-порт локальной сети другого провайдера перехватываются сквидом
|