|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Tedim 2:5020/400 10 Mar 2007 04:55:35 To : All Subject : PF: nat & pass route-to... -------------------------------------------------------------------------------- Добрый день! Хочу получить совет по PF. Рассматриваю простую конфигурацию: FreeBSD 6.2, три интерфейса, rl0 (10.0.0.1/16) - для локальной сети, em0 (1.1.1.2/28, gateway 1.1.1.1) - ISP1, fxp0 (2.2.2.2/28, gateway 2.2.2.1) - ISP2. Политики обслуживания соединений ISP1 и ISP2 такие, что они пропускают пакеты только "своих" сетей, а "чужие" - отбрасывают. Использую маршрут по умолчанию в сеть ISP1: route add default 1.1.1.1 (т.е. все по умолчанию - на em0) Есть таблица "xnets", в которой описаны сети, доступ к которым предпочтителен через провайдера ISP1 (em0). Все остальное предпочтительнее проопускать через ISP2 (fxp0). Менять default route неприемлемо. Требования нужно выполнить без использования BGP. Решение искалось в виде pf.conf: ## заполняется из файла через 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 В результате имеем, что для пакетов из локальной сети все работает правильно, правила [***3***] опознают принадлежность таблице xnets и перемаршрутизируют на нужный интерфейс, где для них выполняется маскарадинг по правилам [***1***], и они уходят через интерфейс, удовлетворяя политикам обслуживания соединений провайдеров, так как адрес источника у них подменен маскарадингом. Hо этого не происходит: если пакеты порождаются самим сервером, т.е. правила [***4***] выполняются, но маскарадинг по правилам [**1**] для пакетов с сервера не работает. Tcpdump показывает, что перемаршрутизированные пакеты с SRCIP=1.1.1.2 уходят через fxp0 на 2.2.2.1 и отбрасываются провайдером, как неудовлетворяющие политике. Вопрос взаимодействия nat и route не рассмотрен в man-ах и мне не удалось найти в инете. Я склонен эту ситуацию рассматривать как ошибку PF, ведь нет никакого абсурда в том, чтобы пропускать исходящие пакеты по маскарадингу! Если кто-то знает возможное решение, буду признателен. Или просто посоветуйте обходной путь, может можно использовать для маршрутизации /ports/net/click? --- ifmail v.2.15dev5.3 * Origin: NDIASB (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/201594d98c7c2.html, оценка из 5, голосов 10
|