OpenBSD 4.3 pf+IPSec+network balance Хочется, а не можется.

Вопросы настройки и работы с этой ОС.
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
august.leaves
проходил мимо
Сообщения: 1
Зарегистрирован: 2009-05-18 13:26:26

OpenBSD 4.3 pf+IPSec+network balance Хочется, а не можется.

Непрочитанное сообщение august.leaves » 2009-05-18 14:52:42

Во первых, приветствую многоуважаемых All. :) Я и на этом форуме, и в openBSD новичок, так что сразу каюсь за отсутствие необходимого rtfm, который готов всячески восполнять, и опыта работы с subj, который как раз пытаюсь получить.

Недавно случилась у меня оказия столкнуться на работе с этой замечательной системой, и пришлось разбираться с пакетным фильтром, который покорил с первого взгляда мое сердце старого параноика.

Именно о нем то и будет мой вопрос.

Краткая предыстория.
Исходная конфигурация выглядит классически и примерно вот так:

LAN1 --- OpenBSD Box --- Internet VPN --- OpenBSD Box --- LAN2+

Существует 2 офиса между которыми, средствами IPsec, проложен VPN тоннель. Все замечательно работает, пакетики ходят, интернет во всю ширь и вообще все замечательно. Однако настал черный день, когда ширины канала стало катастрофически нехватать и к openBSD box'у был подведен второй интернет канал. От начальства было получено ЦУ оставить ВПН где он и был, а весь остальной траффик (ну или по крайности www, pop3 и аську) пустить по второму каналу. То есть сваять что-то похожее на:

LAN1 --- OpenBSD Box --- ext_if1 -- Internet VPN --- OpenBSD Box --- LAN2+
....................\__ ext_if2 --- Other Internet

За отсутствием опыта было решено применить то что ближе всего к телу, то есть средства PF. Однако. :) Ничего не получилось

Был исходный конфиг:
# vi /etc/pf.conf
#Macross
ext_if1 = "vr0"
#ext_if2 = "vr1" # just added
int_if = "vr2"
remote_gw = "a.b.c.d"
remote_nets = "{10.10.0.0/24, 10.0.2.0/24, 10.205.1.0/24, 10.0.4.0/24}"
tcp_services = "{ 22 }"
icmp_types = "echoreq"

# Options
set block-policy return
set loginterface $ext_if1


set skip on {lo0, enc0, vr2}

scrub in

# nat/rdr
nat on $ext_if inet from !($ext_if1) -> ($ext_if1:0)


nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr pass on $int_if proto tcp to port ftp -> 127.0.0.1 port 8021


# pf
block in

pass out keep state

anchor "ftp-proxy/*"
antispoof quick for { $ext_if1 $ext_if2 lo $int_if }


#vpn exchange
pass in on $ext_if1 proto esp from $remote_gw to $ext_if1
pass out on $ext_if1 proto esp from $ext_if1 to $remote_gw

pass in on $ext_if1 proto udp from $remote_gw to $ext_if1 port {isakmp, ipsec-nat-t}
pass out on $ext_if1 proto udp from $ext_if to $remote_gw port {isakmp, ipsec-nat-t}

pass in on enc0 proto ipencap from $remote_gw to $ext_if1 keep state (if-bound)
pass out on enc0 proto ipencap from $ext_if1 to $remote_gw keep state (if-bound)

pass in on enc0 from $remote_nets to $int_if:network keep state (if-bound)
pass out on enc0 from $int_if:network to $remote_nets keep state (if-bound)


#SSH allow
pass in on $ext_if inet proto tcp from any to ($ext_if) \
port $tcp_services flags S/SA keep state

pass in on $int_if inet proto tcp from any to ($int_if) \
port $tcp_services flags S/SA keep state

#PING allow
pass in inet proto icmp all icmp-type $icmp_types keep state
Пример "неполучания":Каналы vr0 и vr1 разсположены в одной сети, имеют один gateway. (Прописываем в hostname.vr1, разумеется.) Подрубаем второй канал к интерфейсу vr1. Открываем pf.conf и в макросах меняем vr0 на vr1. Траффик не идет. Ни ВПН (что логично), ни асечно \ WWW \ пинговый. Подрубаем канал к ноуту, пишем те же настройки - инет есть.

Вопрос нумбер 1 - где собака порылась. Почему не хочет пахать vr1? :(

Вопрос нумбер 2. Что нужно вписать в pf.conf чтобы перенаправить ввв траффик, допустим на ext_if2.

Тема меня изрядно задолбала, так что имею возможность и даже желание поставить человеку, который поможет разобраться, что-то пенистое или горючее. :)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Andrey 21
проходил мимо

Re: OpenBSD 4.3 pf+IPSec+network balance Хочется, а не можется.

Непрочитанное сообщение Andrey 21 » 2009-05-19 16:50:19

На сколько я понимаю ответ на второй вопрос:

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

pass in log on $int_if route-to ($ext_if2 $gw_2) inet proto {tcp, udp} from $int_net to !$dmz_if port $client_to_internet keep state queue std_int_out