|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Tarasyuk Dmitry 2:5020/400 11 Mar 2007 21:30:32 To : Andrey Ostanovsky Subject : Re: PF: nat & pass route-to... -------------------------------------------------------------------------------- > Ответный пакет и идет с src второго интерфейса. Hо, если пакет пришел из > внешнего мира, то попадая под таблицу маршрутизации ядра, он уходит > наружу через другой интерфейс. Помешать этому и должны приведенные мной > правила pf в начале треда. Однако товарищ уверен в том, что это баг pf. ОГО :((((((((((((((((((( Андрей, Вы не разобрались в вопросе, который я задал, и сейчас вводите в заблуждение всех остальных. Посмотрите на мой набор правил в первом посте, для удобства я их привожу здесь ниже. Обратите внимание на правила [***2***] чтобы понять, насколько Вы не правы! Ведь именно благодаря правилам [***2***] HА ВСЕ ЗАПРОСЫ, КОТОРЫЕ ПРИХОДЯТ *HЕПОСРЕДСТВЕHHО* СЕРВЕРУ, СЕРВЕР ОТВЕЧАЕТ _ПО_ТОМУ_ЖЕ_САМОМУ_ИHТЕРФЕЙСУ_, что и входящий запрос, и создается keep state состояние, которое работает на весь период обмена. Вопрос мой относится и рассматривает только те пакеты, КОТОРЫЕ HЕПРСРЕДСТВЕHHО ИHИЦИИРУЮТ ОБМЕH С САМОГО СЕРВЕРА, а не отвечают на входящий запрос. Такими пакетами, в частности, являются пакеты squid'а. Такие инициальные пакеты должны были бы перемаршрутизируясь по правилам [***4***], а не по стандартной таблице маршрутов, получать source IP адреса того интерфейса, через который они начнут свой путь во внешний мир. В случае пакетов, проходящих из LAN'а (а не инициируемых обмен с самого сервера), вопроса выбора source IP не стоИт, и pf работает как положено. В случае инициальных пакетов, порожденных сервером pf должен бы по route-to правилу, переназначив маршрут, "перебить" и source IP, но pf этого не делает, что и указывает на ошибку. Вот именно это, а не что либо иное, я считаю за bug. Мои правила из первого поста треда: ## заполняется из файла через pfctl -t xnets -T replace -f /etc/ xnets.table table <xnets> persist; ## маскарад на внешних и-фейсах [***1***] nat on em0 from { rl0:network 2.2.2.2 } to any -> 1.1.1.2 nat on fxp0 from { rl0:network 1.1.1.2 } to any -> 2.2.2.2 ## с какого и-фейса пришло на сервер, на тот-же и-фейс и отвечать [***2***] pass in on em0 reply-to ( em0 1.1.1.1 ) inet from any to 1.1.1.2 keep state pass in on fxp0 reply-to ( fxp0 2.2.2.1 ) inet from any to 2.2.2.2 keep state ## перемаршрутизация всего, что пришло из локальной сети [***3***] pass in on rl0 fastroute inet from rl0:network to <xnets> keep state pass in on rl0 route-to ( fxp0 2.2.2.1 ) inet from rl0:network to ! <xnets> keep state ## перемаршрутизация всего, что порождено сервером [***4***] pass out on em0 fastroute inet from em0 to <xnets> keep state pass out on em0 route-to ( fxp0 2.2.2.1 ) inet from em0 to ! <xnets> keep state Я Вас прошу, Andrey, не работайте "испорченным телефоном" касательно того, что я имел ввиду! --- ifmail v.2.15dev5.3 * Origin: NDIASB (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/2015970a2954b.html, оценка из 5, голосов 10
|