Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Tarasyuk Dmitry                      2:5020/400     11 Mar 2007  01:51:33
 To : Tedim
 Subject : Re: 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, ведь нет никакого абсурда в том, чтобы пропускать исходящие пакеты
 > по маскарадингу!
 
 Ошибка может состоять в следующем. Когда пакет проходит "транзитом" через
 FreeBSD машину подходящий "pass route-to" перенаправляет его по маршруту
 вне зависимости от стандартной route-таблицы в ядре. При этом SRCIP не
 меняется, если нет правил маскарадинга. Hо в случае, если пакет _порожден
 на самом хосте_ без явной привязки к интерфейсу (например, когда создается
 сокет для отправки пакета с указанием порта, но без указания локального
 адреса интерфейса), тогда ядро ОС на основании маршрутов само должно
 решить каким именно будет SRCIP, а именно IP интерфейса, через который
 пакет уйдет. PF, обрабатывая такие пакеты по route-to _должен изменять_
 SRCIP на тот, который присвоен интерфейсу, через который пакет пойдет на
 самом деле после перемаршрутизации. Ошибка именно в том, что PF этого не
 делает! Или я не прав?
 --- ifmail v.2.15dev5.3
  * Origin: NDIASB (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 PF: nat & pass route-to...   Tedim   10 Mar 2007 04:55:35 
 Re: PF: nat & pass route-to...   Tarasyuk Dmitry   11 Mar 2007 01:51:33 
 PF: nat & pass route-to...   Andrey Ostanovsky   10 Mar 2007 14:52:04 
 Re: PF: nat & pass route-to...   Tarasyuk Dmitry   10 Mar 2007 19:27:31 
 PF: nat & pass route-to...   Andrey Ostanovsky   11 Mar 2007 02:07:00 
 Re: PF: nat & pass route-to...   Tarasyuk Dmitry   11 Mar 2007 04:25:05 
 PF: nat & pass route-to...   Andrey Ostanovsky   11 Mar 2007 12:28:34 
 Re: PF: nat & pass route-to...   Anton Yuzhaninov   11 Mar 2007 14:12:37 
 PF: nat & pass route-to...   Andrey Ostanovsky   11 Mar 2007 15:52:10 
 Re: PF: nat & pass route-to...   Eugene Grosbein   11 Mar 2007 20:40:39 
 PF: nat & pass route-to...   Andrey Ostanovsky   11 Mar 2007 20:18:28 
 Re: PF: nat & pass route-to...   Tarasyuk Dmitry   11 Mar 2007 21:30:32 
 Re: PF: nat & pass route-to...   Eugene Grosbein   11 Mar 2007 18:20:33 
 Re: PF: nat & pass route-to...   Tarasyuk Dmitry   11 Mar 2007 16:42:16 
Архивное /ru.unix.bsd/201590ae9dc67.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional