Ключевые слова:pf, firewall, bsd, policy, nat, (найти похожие документы)
Date: Thu, 30 Dec 2004 20:41:19 +0500
From: Svyatoslav Bezgin <Svyatoslav_Bezgin@f20.n5009.z2.fidonet.org.>
Newsgroups: ftn.ru.unix.bsd
Subject: Направление разных подсетей через разные каналы в PF
AB> смотрю tcpdump fxp1:
AB> 5.6.7.8.80 > IP_товарища.1505:...
AB> т.е. пакет, после перезаписи адреса NAT-ом, в лице IP 5.6.7.8 уходит
AB> согласно роутингу на шлюз провайдера ISP_2.
AB> Вот такая вот беда. Т.е. получается роутинг на это еще и как влияет.
AB> что делать? :)
У меня была похожая трабла... применяю pf и использовал там конструкции
route-to и reply-to. вроде все ходит нормально. Только меня немного иная
задача стояла. надо было 1 подсеть направить на один внешний интерфейс, а
другую -- на другой. и соответсвенно отвечать на внешние запросы через тот
интерфейс, через которые он пришел.
Вот выдержки из pf.conf
int_network = $int_if:network # внутренняя сеть 1 идет наружу через default_router
net_network = $net_if:network # внешняя сеть 2. gateway провайдера имеет
# адрес A.B.C.D
dmz_network = $dmz_if:network # внутрення сеть 2. должна ходить наружу через $net_if
ext_network = $ext_if:network # внешняя сеть 1. маршрут по умолчания.
table <nonroute> { $int_network, $dmz_network}
# NAT'им одну сеть через один внешний интерфейс
nat on $ext_if from 192.168.1.1/24 to any -> ($ext_if)
# а другую -- через второй.
nat on $ext_if from 192.168.2.1/24 to any -> ($net_if)
# Правила входящих редиректов.
rdr pass on $net_if inet proto tcp from any to ($net_if) port $tcp_dmz_hosting_services -> 192.168.2.2
rdr pass on $ext_if inet proto tcp from any to ($ext_if) port $tcp_dmz_services -> 192.168.2.2
rdr pass on $ext_if inet proto tcp from any to ($ext_if) port $tcp_dmz_hosting_services -> 192.168.2.3
# После выполнеия второго NAT'а пакет имеет dst-addr==($net_if) и по таблице
# маршрутизации должен идти через ($ext_f). Hасильно заворачиваем его на
# нужный интерфейс
pass out quick on $ext_if route-to ($net_if A.B.C.D) from ($net_if) to any keep state
# После выполнения редиректа src-addr не меняется. Мы указываем, что на эти
# пакеты надо отвечать через $net_if
pass out quick on $dmz_if reply-to ($net_if A.B.C.D) from !<nonroute> to $dmz_network keep state