Страница 1 из 1

Ну солько можно? PF и 2 канала

Добавлено: 2008-03-24 19:17:17
mak_v_
уже выбился из сил
задача на внешние коннекты отвечать через тот же интерфейс
дефолтом указан маршрут через прова1
есть правило
pass in quick on $prov2_if reply-to ($prov2_if $prov2_gate) proto udp from any to $prov2_if port 25 keep state
и всё равно ответ идёт через интерфес смотрящий на прова 1 (через дефолт гв) - трафшоу

Ткните рожей, плз
З.Ы - в статью смотрел -не пашет

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-03-24 22:14:30
fr33man
Будьте добры -- выложите весь конфиг pf.

И tcpdump на внешнем интерфейсе, когда пакеты на него приходят.
+ в это же время на интерфейсе, где стоит default gw.

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-03-24 22:36:24
mak_v_

Код: Выделить всё

nat on $cin_if from <inet_users> to any -> $cin_if
nat on $det_if from <inet_users> to !$det_lan -> $det_if

#Клиент-банк 
nat on $det_if from <banking> to {!$det_lan} port $bank_serv -> $det_if
nat on $cin_if from  <banking> to any port  $bank_serv -> $cin_if
# ---------------------------------------------------------------
# -= Rules =-
# ---------------------------------------------------------------

block all
block in quick from any os nmap to any

## Oтвечаем через тот же интерейс, откуда  пришел пакет
pass in quick on $det_if reply-to ($det_if $det_gate) proto udp from any to $det_if  keep state



pass in quick on $cin_if reply-to ($cin_if $cin_gate) proto udp from any to $cin_if  keep state

#Разрешаем тунели и ссх
pass in inet proto tcp from any to any port {22} keep state
pass in inet proto icmp all icmp-type $icmp_types keep state
pass in inet proto udp from any to  {self} port {$vpn_port} keep state
pass quick on lo0 all
pass quick on (tun0) all
в трафшоу - ответный пакет вываливает на через $det_if - там соответственно прописан $det_gate - дефолт гэйт


ЗАДАЧА:
чтобы все сервисы (их довольно много), висящие непосредственно на интерфейсах смотрящих на провов работали по 2-м адресам
тоесть
отвечать на запрос через тот же интерфейс

пробовал так

Код: Выделить всё

pass out route-to ($cin_if $cin_gate) inet from any to $cin_if
pass out route-to ($det_wif $det_wgate) inet from any to $det_wif
pass out inet from { $det_wif $cin_if } to (self:network)


pass in on $cin_if reply-to ($cin_if $cin_gate) inet proto udp to ($cin_if) port 2000
pass in on $cin_if inet proto udp from ($cin_if:network) to ($cin_if) port 2000
pass in on $det_wif reply-to ($det_if $det_wgate) inet proto udp to ($det_if) port 2000
pass in on $det_wif inet proto udp from ($det_if:network) to ($det_if) port 2000

block all
block in quick from any os nmap to any

#Разрешаем тунели и ссх
pass in inet proto tcp from any to any port {22} keep state
pass in inet proto icmp all icmp-type $icmp_types keep state
pass in inet proto udp from any to  {self} port {vpn} keep state

pass in quick on $int_if
pass in quick on $tun0_if
pass in quick on  $tun1_if
pass on lo0 all
pass out keep state

antispoof for { lo $int_if $det_if $tun0_if $tun1_if $cin_if } inet
тот же рез-т

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-03-27 17:05:37
Жека
Чтоб все ходило как надо
ядро нужно собрать с опцией IPFIREWALL_FORWARD_EXTENDED но это для IPFW
и тогда можна форвардить пакеты на любой внешний IP и они будут
ходить в мир и возвращаться через этот интерфейс. Единственное про всякие
конструкции с verrevpath можешь забыть

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-03-27 17:52:04
psj
Посмотрите - может поможет:
[ root@rt.daycom.ru /etc ] # cat pf.conf [ 17:46 ]
#Внешние и внутренний интерфейсы.
#
ext_if_a = "vr0" #первый провайдер
ext_if_b = "vr2" #второй провайдер
int_if = "vr1" #локалка
int_if_vpn = "tun0" # vpn
if_lo = "lo"

#Шлюзы для каналов.
#
ext_gw_a = "17.106.95.89" #для первого провайдера
ext_gw_b = "192.168.1.1" #для второго провайдера
net = "192.168.0.0/24" #локалка
#TCP/UDP сервисы, обслуживаемые маршрутизатором, то к чему имеется доступ на внешних интерфейсах
#
tcp_svc = "domain, auth, http, ntp, ssh" #как пример, что то нужно вписать иначе будет биг ошибка :)
udp_svc = "domain, ntp, ssh" #аналогично, 1194 - vpn
udp_vpn = "1194"
# Из интернета на почтовый сервер
tcp_mail ="smtp, pop3"
# закрытые порты из внутренней сети в интернет
tcp_block_int ="smtp"

mail_server ="17.106.95.91"
router ="17.106.95.90"

#Создаем таблицу доверенных smtp-севреров (1. внутр. IP, 2. внеш. IP, 3. smtp.mail.ru, 4. smtp.yandex.ru)
table <my_smtp> { $mail_server, 194.67.23.111, 195.161.174.129}

set skip on lo0

# нормализация трафика (иначе терминальный клиент через vpn не работает!!!)
scrub in

#Натим, важный момент, именно тут определяется кого куда пускать
#Синтаксис ната, грубо говоря, таков: nat on _интерфейс_ from _откуда_ to _куда_ -> _интерфейс_или_ип_адрес
#
nat on $ext_if_b from {$net} -> ($ext_if_b:0)
# Пробрасываем порты из внутренней сети на SQUID
#
rdr pass on $int_if proto tcp to port http -> 127.0.0.1 port 3128
#
#Разрешаем сети ходить в интернет, всё остальное блокируем
#
block in on { $ext_if_a $ext_if_b }
block return-rst in on { $ext_if_a $ext_if_b } proto tcp
pass out on { $ext_if_a $ext_if_b } keep state

#Исходящие пакеты в канал, соответствующий адресу источника. Здесь и начинается policy
#
pass out route-to ($ext_if_a $ext_gw_a) from ($ext_if_a) to !(self:network) keep state
pass out route-to ($ext_if_b $ext_gw_b) from ($ext_if_b) to !(self:network) keep state
#
# Пускаем vpn на роутер
#
pass out on $ext_if_b reply-to ($ext_if_a $ext_gw_a) inet proto udp from $router port { $udp_vpn } to any keep state
pass out on $ext_if_b route-to ($ext_if_a $ext_gw_a) inet proto udp from $router port { $udp_vpn } to any keep state
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) inet proto udp from any to $router port { $udp_vpn } keep state
#
#Блокируем все исходящие smtp-запросы которые к левым серверам
#
block in log quick on $int_if proto { tcp, udp } from $net to !<my_smtp> port { $tcp_block_int }
#
# Пускаем почту на почтовый сервер и выпускаем почту с нашего сервера в инет
#
pass out quick on $ext_if_b reply-to ($ext_if_a $ext_gw_a) proto {tcp, udp} from $mail_server port { smtp } to any port { smtp }
pass out quick on $ext_if_b route-to ($ext_if_a $ext_gw_a) proto {tcp, udp} from $mail_server port { smtp } to any port { smtp }
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) proto {tcp, udp} to $mail_server port { $tcp_mail } flags S/SA keep state
#
# Разрешаем пинговать роутер и почтовый сервер
#
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) proto icmp to {$router,$mail_server} keep state
#
#А вот policy для входящих пакетов на внешние интерфейсы
#
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) proto udp to $router port { $udp_svc } keep state
pass in on $ext_if_a proto udp from ($ext_if_a:network) to $router port { $udp_svc } keep state
#
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) proto tcp to port { $tcp_svc } flags S/SA keep state
pass in on $ext_if_a proto tcp from ($ext_if_a:network) to port { $tcp_svc } flags S/SA keep state
#
pass in on $ext_if_b reply-to ($ext_if_b $ext_gw_b) proto udp to port { $udp_svc } keep state
pass in on $ext_if_b proto udp from ($ext_if_b:network) to port { $udp_svc } keep state
#
pass in on $ext_if_b reply-to ($ext_if_b $ext_gw_b) proto tcp to port { $tcp_svc } flags S/SA keep state
pass in on $ext_if_b proto tcp from ($ext_if_b:network) to port { $tcp_svc } flags S/SA keep state

# По внутреннему интерфейсу и vpn пропускаем всё и везде
#
pass on $int_if all keep state
pass on $int_if_vpn all keep state
Файрвол работает следующим образом - с какого интерфейса запрос пришел на тот интерфейс ответ ушел. ТРИ НО.
1 НО - натимся только на один интерфейс (просто задание такое было)
2 НО - vpn тоже только по одному интерфейсу
3 НО - почтовый сервер тоже работает на одном интерфейсе

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-18 13:42:48
schizoid
2 psj, а вы altq не используете случайно?
я вот что хотел спросить, на сколько я почитал инфу, обычно исходящий трафик (в Интернет) режется на полосы пропускания на внешних интерфейсах, а входящий (в локалку) - на внутреннем.
а как быть если 2 внешних канала с разной пропускной способностью? где в этом случае нарезать входящий трафик?

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-18 14:08:59
psj
schizoid писал(а):2 psj, а вы altq не используете случайно?
я вот что хотел спросить, на сколько я почитал инфу, обычно исходящий трафик (в Интернет) режется на полосы пропускания на внешних интерфейсах, а входящий (в локалку) - на внутреннем.
а как быть если 2 внешних канала с разной пропускной способностью? где в этом случае нарезать входящий трафик?
нет, altq я не использую
трафик нарезать, я так думаю, надо на том интерфейсе с которого он приходит
Но я не уверен, т.к. не пробовал

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-18 16:51:18
mak_v_
Ну по altq и другим шейперам - уже милион раз обсасывалось
резать можно ТОЛЬКО ИСХОДЯЩИЙ трафик - смысла отбрасывать трафик, который уже пришёл - НЕТУ:

если режем даунлоад (из мира к примеру), то - ОГРАНИЧИВАЕМ ИСХОДЯЩИЙ трафик на ВНУТРЕННЕМ интерфейсе
(он пришёл из мира, а отдаём в локаль "потихоньку")
если режем аплоад (в мир ), то - ОГРАНИЧИВАЕМ ИСХОДЯЩИЙ трафик на ВНЕШНЕМ интерфейсе
(пришёл из локали, а в мир - "потихоньку)

ограничивать входяший трафик на интерфейсе - сделать мы это можем лишь отбросив пакеты, которые пришли - ??? - тоесть не получая данных
а если ограничивать исходящий - всё пучком, приняли пакетик на внешнем (вариант 2 - на внутреннем), форвардим внутрь (вариант 2 - в мир), а тут "резалка" - отправляем "со скоростью" - заставляя источник в мире (в локалке) "притормозить" - таким образом ограничиваем .

причина - когда узел не может принять N-e кол-во пакетов за опред.промежуток времени , он отправляет инициирующему узлу "сделай скорость меньше", и соответственно так ограничиваем скорость

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-22 21:39:40
schizoid
чета у мну не получается :(

Код: Выделить всё

# cat /etc/pf.conf
#-----------------------------------------Macros's-------------------------------------------------------------------
#Interface's
int_if="rl0"
ext_if_s="ng0"
ext_if_d="ng1"
ext_gw="195.5.ххх.ххх"

#Internal servers
serv_1c="192.168.0.40"
serv_www="192.168.0.100"
serv_mail="192.168.0.1"

int_lan="192.168.0.0/24"
#RFC 1918
NoRouteIps = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"

tcp_svc = "domain, auth, http, ntp, ssh"
udp_svc = "domain, ntp"

#-----------------------------------------Tables-------------------------------------------------------------------
#table <lan_s> { 192.168.0.121, 192.168.0.122, 192.168.0.123, 192.168.0.120, 192.168.0.69, 192.168.0.113, 192.168.0.112, 192.168.0.81 }
#table <lan_d> { 192.168.0.0/24 }

#-----------------------------------------Options-------------------------------------------------------------------
set block-policy drop
set skip on lo0

#-----------------------------------------Scrub-------------------------------------------------------------------
scrub in all fragment reassemble
scrub    on { $ext_if_d $ext_if_s } all reassemble tcp

#------------------------------------------ALTQ-------------------------------------------------------------------
                        #====================ng0==================
#Включаем очереди на внешнем (статическом) интерфейсе ng0 для пакетов выходящих в Интернет.
#Максимальная исходящая полоса 512 kbps.
#Используем планировщик cbq чтобы контролировать полосу пропускания каждой очереди.

altq on $ext_if_s cbq bandwidth 512Kb queue { def_out, serv_out, dil_out }

# определяем параметры дочерних очередей
# def_out       - стандартная очередь. Любые правила ниже, в которых
#                очередь не указана явно, добавляют трафик к этой
#                очереди.
# mail_out      - mail-сервер
# s1c_out       - сервер 1С
# dil_out       - диллерский сайт

queue def_out     bandwidth 128Kb cbq(default borrow)
queue serv_out    bandwidth 256Kb { mail_out, web_out, s1c_out}
  queue mail_out   bandwidth 25% cbq(red borrow)
  queue web_out    bandwidth 50% cbq(red borrow)
  queue s1c_out    bandwidth 25% cbq(red borrow)
queue dil_out     bandwidth 128Kb priority 3 cbq(red borrow)

                        #====================ng1==================
#Включаем очереди на внешнем (динамическом) интерфейсе ng1 для пакетов выходящих в Интернет.
#Максимальная исходящая полоса 512 kbps.
#Используем планировщик cbq чтобы контролировать полосу пропускания каждой очереди.

altq on $ext_if_d cbq bandwidth 512Kb queue { std_out, www_out, im_ssh_out, dns_out }

# определяем параметры дочерних очередей
# def_out       - стандартная очередь. Любые правила ниже, в которых
#                очередь не указана явно, добавляют трафик к этой
#                очереди.
# www_out       - http-трафик
# im_ssh_out    - трафик от интернет мессенджеров и ssh
# dns_out       - запросы DNS

queue std_out      bandwidth 128Kb cbq(default borrow)
queue www_out      bandwidth 256Kb priority 3 cbq(red borrow)
queue im_ssh_out   bandwidth 64Kb priority 4 cbq(red borrow)
queue dns_out      bandwidth 64Kb priority 3 cbq(red borrow)

                        #====================rl0==================
#Включаем очереди на внутреннем интерфейсе rl0 для пакетов выходящих в локальную сеть.
#Максимальная исходящая полоса 4Mb.
#Используем планировщик cbq чтобы контролировать полосу пропускания каждой очереди.

altq on $int_if cbq bandwidth 4.0Mb queue { def_in, serv_in, www_in, im_ssh_in, dns_in, ftp_in }

queue def_in     bandwidth 0.5Mb cbq(default borrow)
queue serv_in    bandwidth 1.0Mb { mail_in, web_in, s1c_in, dil_in}
  queue mail_in   bandwidth 20% cbq(red borrow)
  queue web_in    bandwidth 25% cbq(red borrow)
  queue s1c_in    bandwidth 20% cbq(red borrow)
  queue dil_in    bandwidth 35% cbq(red borrow)
queue www_in     bandwidth 1.0Mb cbq(red borrow)
queue im_ssh_in  bandwidth 0.25Mb cbq(red borrow)
queue dns_in     bandwidth 0.25Mb cbq(red borrow)
queue ftp_in     bandwidth 1.0Mb cbq(red borrow)



#-----------------------------------------redirect and NAT-------------------------------------------------------------------
#redirect to internal servers and TAG
rdr on $ext_if_s inet proto tcp to ($ext_if_s) port 80 tag SERV_WEB -> $serv_www port 80
rdr on $ext_if_s inet proto tcp to ($ext_if_s) port 3389 tag SERV_1C -> $serv_1c port 3389
rdr on $ext_if_s inet proto tcp to ($ext_if_s) port 25 tag SERV_SMTP -> $serv_mail port 25
rdr on $ext_if_s inet proto tcp to ($ext_if_s) port 110 tag SERV_POP3 -> $serv_mail port 110

#For ftp
rdr pass on $int_if proto tcp from $int_lan to any port 21 -> 127.0.0.1 port 8021

#NAT on ext_if_s where TAG
nat on $ext_if_s inet proto tcp tagged SERV_WEB -> ($ext_if_s)
nat on $ext_if_s inet proto tcp tagged SERV_1C -> ($ext_if_s)
nat on $ext_if_s inet proto tcp tagged SERV_SMTP -> ($ext_if_s)
nat on $ext_if_s inet proto tcp tagged SERV_POP3 -> ($ext_if_s)

#NAT lan to internet
nat on $ext_if_s inet proto tcp from $int_lan to 212.82.220.130 port {80, 443}  -> ($ext_if_s)
nat on $ext_if_d from $int_lan to any -> ($ext_if_d)

#-----------------------------------------Filters-------------------------------------------------------------------
antispoof for { lo0 $int_if $ext_if_s $ext_if_d } inet
block in quick from any os nmap to any

#for ext_if_s - static IP
block in log-all on $ext_if_s
pass in on $ext_if_s reply-to ($ext_if_s $ext_gw) inet proto icmp from any to ($ext_if_s) icmp-type echoreq keep state
pass in on $ext_if_s reply-to ($ext_if_s $ext_gw) inet proto tcp  tagged SERV_WEB keep state
pass in on $ext_if_s reply-to ($ext_if_s $ext_gw) inet proto tcp  tagged SERV_1C keep state
pass in on $ext_if_s reply-to ($ext_if_s $ext_gw) inet proto tcp  tagged SERV_SMTP keep state
pass in on $ext_if_s reply-to ($ext_if_s $ext_gw) inet proto tcp  tagged SERV_POP3 keep state
pass in on $ext_if_s reply-to ($ext_if_s $ext_gw) inet proto tcp to port 1022 keep state
pass out on $ext_if_s keep state

#for ext_if_d - dinamic IP
block in log-all on $ext_if_d
#pass in on $ext_if_d
pass in on $ext_if_d reply-to ($ext_if_d $ext_gw) proto udp to port { $udp_svc } keep state
pass in on $ext_if_d proto udp from ($ext_if_d:network) to port { $udp_svc } keep state
pass in on $ext_if_d reply-to ($ext_if_d $ext_gw) proto tcp to port { $tcp_svc, > 49151 } flags S/SA keep state
pass in on $ext_if_d proto tcp from ($ext_if_d:network) to port { $tcp_svc, > 49151 } flags S/SA keep state
#pass out route-to ($ext_if_d $ext_gw) from ($ext_if_d) to !(self:network) keep state
pass out on $ext_if_d keep state

#for int_if - internal network
block in log-all on $int_if
#pass in log-all on $int_if
pass in on $int_if inet proto udp from $int_lan to $int_if port { 53, 123 } keep state
pass in on $int_if inet proto tcp from $int_lan to any port { 20, 21, 25, 80, 110, 2022 } keep state
pass in on $int_if inet proto tcp from $int_lan to $int_if port { 666, 1022 } keep state
#pass in on $int_if inet proto tcp from $int_lan to $int_if keep state
pass in on $int_if inet proto icmp from $int_lan to any keep state
pass out on $int_if keep state
altq - еще не задействовал, просто описал.

Код: Выделить всё

# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            195.5.ххх.ххх        UGS         0     6913    ng1
127.0.0.1          127.0.0.1          UH          0      916    lo0
192.168.0          link#1             UC          0        0    rl0
192.168.0.1        00:17:31:23:47:28  UHLW        1     1751    rl0     83
192.168.0.100      00:11:2f:cf:a0:54  UHLW        1      970    rl0    211
192.168.0.111      00:11:2f:8a:62:d5  UHLW        1     1680    rl0    388
192.168.0.113      00:80:c8:58:1c:89  UHLW        1        0    rl0    860
192.168.0.149      00:00:50:00:5e:1d  UHLW        1     8084    rl0   1150
192.168.0.150      00:a0:d2:10:71:a0  UHLW        1        4    lo0
195.5.ххх.ххх        82.207.ххх.ххх       UH          0        0    ng0
где 195.5.ххх.ххх - шлюз для обоих интерфейсов
82.207.ххх.ххх - внешний ИП

Код: Выделить всё

# ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.0.150 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:a0:d2:10:71:a0
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
sk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        ether 00:15:e9:b1:dc:c0
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        ether 00:02:b3:99:e2:02
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33208
pfsync0: flags=0<> mtu 2020
        syncpeer: 224.0.0.240 maxupd: 128
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1492
        inet 82.207.ххх.ххх --> 195.5.ххх.ххх netmask 0xffffffff
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1492
        inet 92.112.ххх.ххх --> 195.5.ххх.ххх netmask 0xffffffff
ng0 - статика
ng1 - DHCP

все равно пакет идет через дефолтный маршрут.
мож кто чем поможет...

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-22 22:06:42
mak_v_
помогу если смогу, у меня всё организовано редиректом
ип1- 1гв
ип2- 2гв
дефолтом 1гв
сервис к примеру на порту tcp 29 на этой же машине
сделано так
rdr pass on $ип2 inet proto tcp from any to $ип2 port 29 -> $ип1
(я так думаю, тут надо ещё второй раз редиректить внутрь (если сервис внутри) с этого интерфейса, дабы правильно уходило) и пускать с кип-стейт
+ разрешение по Ло бегать

всё работает

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-23 9:10:44
schizoid
а ответы у тебя с того же интерфейса?

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-23 9:38:10
mak_v_
да, пакеты уходят с другого интерфейса:
приходят с одного, я их редиректю, они уходят через дефолт, но СОЕДИНЕНИЕ живо

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-23 11:22:17
schizoid
а еще, вот выдержка от сюда http://house.hcn-strela.ru/BSDCert/BSDA ... tml#pf-ftp

Код: Выделить всё

Опция route-to используется для приёма трафика на внутреннем интерфейсе и назначения ему внешнего сетевого интерфейса и шлюза, таким образом обеспечивая балансировку. Обратите внимание, что опция route-to должна быть указана в каждом правиле, предназначенном для балансировки трафика. Ответные пакеты приходят на тот интерфейс, с которого ушёл запрос и они будут перенаправлены во внутрь как обычно. 

Для гарантии того, что пакеты с $ext_if1 всегда направляются к $ext_gw1 (и соответственно для $ext_if2 к $ext_gw2), в правилах можно указать следующее: 
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any
можете растолковать? как расшифровываются эти правила?

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-23 20:31:15
mak_v_
для приёма трафика на внутреннем интерфейсе и назначения ему внешнего сетевого интерфейса и шлюза



, так что придётся думать как доставить пакет на внутренний интерфейс (тэггирование/дст-нат/прочее)

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-23 20:56:00
schizoid
так, с тем разобрался.
возник еще вопрос.
к примеру у мну вся локаль ходит через ИФ2, но нужно, что б на определенный сайт они ходили через ИФ1 (т.е. что б сайт видел, что у них статический ИП). как это сделать?

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-24 6:44:05
manefesto
э....а если что то типа форварда на другой интерфейс при обращении на такой то ipшник ?

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-24 10:55:19
schizoid
да вот тоже думаю форвард нужен...тока чета не получается :(
все равно идет по динамическому ипу...
ща буду еще думать

Re: Ну солько можно? PF и 2 канала

Добавлено: 2008-04-25 11:54:21
schizoid
сделал вот что:

Код: Выделить всё

nat on $ext_if_d from <lan> to !<dil> -> ($ext_if_d)
nat on $ext_if_d from $servers to any -> ($ext_if_s)
nat on $ext_if_d from <lan> to <dil> -> ($ext_if_s)
...

Код: Выделить всё

pass out quick on $ext_if_d route-to ( $ext_if_s $ext_gw_s ) from ($ext_if_s) to any keep stat
где

Код: Выделить всё

table <lan> { 192.168.0.0/24 , !192.168.0.40, !192.168.0.100, !192.168.0.1 }
table <dil> { 212.82.ххх.ххх, 213.186.ххх.ххх, 212.109.ххх.ххх }
serv_1c="192.168.0.40"
serv_www="192.168.0.100"
serv_mail="192.168.0.1"
servers = "{" $serv_1c $serv_www $serv_mail "}"
мож кому пригодится... 8)
1. при этом локалка кроме серверов куда угодно кроме диллерских сайтов натится на динамический ИП
2. сервера натим на статику
3. пакеты из сети на диллерские сайты натим на статику
шлюз по-умолчанию динамический.