pf маршрутизация

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
libbkmz.dev
рядовой
Сообщения: 16
Зарегистрирован: 2011-02-13 20:19:43

pf маршрутизация

Непрочитанное сообщение libbkmz.dev » 2011-08-18 9:23:28

Приветствую. Вчера долго и упорно разбирался с pf ну никак не смог его заставить делать то что мне нужно, а нужно мне следующее.
У меня есть интернет по ng0 интерфейсу, и еще есть tap0 с OpenVPN. При соединении с ним у меня прописываются маршруты на некоторые сайты через впнку, дефолтный шлюз остается на ng0. Все замечательно все довольны. Но, так как у меня внешний ип, и сервер выполняет роль веб-сервера и не только, то вчера обьявился косяк. Если к примеру example.org прописать через tap0, то все работает замечательно, но если приходит любой пакет с адресом источника = example.org то все ломается, пакет приходит на ng0 и видя что такой адрес назначения прописан у меня в таблице маршрутизации, делает вывод и идет через tap0 что соответсвенно дает нерабочую схему. Вчера пытался заставить через pf пакеты которые пришли с ng0 отправлять их туда же. Но ничего не смог.
Давно у меня стоял ipfw и там я подобное сделал

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

${fwcmd} add 100 forward tun0 ip from ${inet_ip} to table\(3\) out xmit ${lif}
А теперь мой конфиг pf.conf:

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

ext_if="ng0"                                                    #Внешний интерфейс (смотрит к провайдеру WAN)
int_if="re0"                                                    #Внутренний интерфейс (смотрит в нашу сеть LAN)
int_net="192.168.1.0/24"
ext_gw="109.195.67.254"

vpn_if="tap0"

# using () for dynamicly change IP adress by pf, without reloading rules


#set loginterface $ext_if                                       #собираем статистику на внешнем фейсе
                                                                # Для просмотра статистики используется команда pfctl -s info или pfctl -si

set skip on lo0                                                 #пропускаем проверку на петле
scrub in all                                                    #собираем все части пакета перед отправкой

scrub on $ext_if all no-df max-mss 1400
scrub on $int_if all no-df max-mss 1400

nat on $ext_if from !($ext_if) -> ($ext_if:0) static-port
nat    on $vpn_if from $int_if:network -> ($vpn_if) static-port

rdr pass on $ext_if proto {tcp,udp} to ($ext_if) port 7000:7010 -> 192.168.1.100
rdr pass on $ext_if proto {tcp,udp} to ($ext_if) port 9870:9880 -> 192.168.1.62
rdr pass on $ext_if proto {tcp,udp} to ($ext_if) port 8760:8770 -> 192.168.1.110

rdr pass on $ext_if proto {tcp,udp} to ($ext_if) port 8770:8780 -> 192.168.1.111

rdr-anchor "miniupnpd"
anchor "miniupnpd"

#block all                                                      #запретим все отовсюду

pass in log on $ext_if 
pass out log on $vpn_if 

# for UPnP
pass out on $int_if from any to 239.0.0.0/8 keep state
pass in on $int_if from any to 239.0.0.0/8 keep state

pass in on $int_if from any to any                              #разрешаем всё из локальной сети 
pass out on $ext_if from ($ext_if) to any                       #разрешаем серверу доступ в интернет 
pass in on $ext_if proto tcp from any to ($ext_if) port ssh     #разрешаем ssh
pass in on $ext_if proto tcp from any to ($ext_if) port 80      #разрешаем www
pass in on $ext_if proto tcp from any to ($ext_if) port 443     #разрешаем www

pass in log inet proto icmp all icmp-type echoreq                       #разрешаем ping 
Вчера добавил

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

pass in log on $ext_if 
pass out log on $vpn_if 
Прошу друга пинговать, а вообще пусто в логе. Я вчера просто не смог эти пакеты поймать, как выяснилось, чтобы либо route-to либо replay-to.
Карочи, нужна помощь =)

Хостинговая компания 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/

mak_v_
проходил мимо

Re: pf маршрутизация

Непрочитанное сообщение mak_v_ » 2011-08-18 10:59:29

либо route-to либо replay-to.
туды его и не забывать что у вас динамический интерфейс (помнить составляя правила пф)

libbkmz.dev
рядовой
Сообщения: 16
Зарегистрирован: 2011-02-13 20:19:43

Re: pf маршрутизация

Непрочитанное сообщение libbkmz.dev » 2011-08-18 11:02:03

mak_v_ писал(а):
либо route-to либо replay-to.
туды его и не забывать что у вас динамический интерфейс (помнить составляя правила пф)
Дык я вкурсе. Помогите правилом, у меня не полкчилось их даже в log запихать с просто pass in log on $ext_if а тут еще больше условий. я не знаю...

mak_v_
проходил мимо

Re: pf маршрутизация

Непрочитанное сообщение mak_v_ » 2011-08-18 11:10:10

ну правилом - помочь могу только увидев что там у вас.
Но скорее всего надо непосредственно в консольке "трогать"

libbkmz.dev
рядовой
Сообщения: 16
Зарегистрирован: 2011-02-13 20:19:43

Re: pf маршрутизация

Непрочитанное сообщение libbkmz.dev » 2011-08-18 11:18:56

Что вам нужно предоставить? какие данные?

Аватара пользователя
Dron
ст. сержант
Сообщения: 373
Зарегистрирован: 2007-08-15 13:36:28
Откуда: Днепропетровск
Контактная информация:

Re: pf маршрутизация

Непрочитанное сообщение Dron » 2011-08-18 13:26:27

смотрите в сторону конструкций с reply-to и route-to

http://www.opennet.ru/base/net/pf_faq.txt.html
Та Да...

libbkmz.dev
рядовой
Сообщения: 16
Зарегистрирован: 2011-02-13 20:19:43

Re: pf маршрутизация

Непрочитанное сообщение libbkmz.dev » 2011-08-18 13:28:49

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

pass out on $ext_if route-to ($ext_if $ext_gw) from $ext_if to any
Делаю, никакого эффекта не получаю.

libbkmz.dev
рядовой
Сообщения: 16
Зарегистрирован: 2011-02-13 20:19:43

Re: pf маршрутизация

Непрочитанное сообщение libbkmz.dev » 2011-08-18 16:12:57

Совместно с mak_v_ починили. Конфиг привел к такому виду. Вроде бы работает так как нада.

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

ext_if="ng0"
int_if="re0"
int_net="192.168.1.0/24"
vpn_if="tap0"

ext_gw="109.195.67.254"
vpn_gw="172.16.0.1"

scrub in all
scrub on $ext_if all no-df max-mss 1400
scrub on $int_if all no-df max-mss 1400

nat on $ext_if from !($ext_if) -> ($ext_if)
nat on $vpn_if from $int_if:network -> ($vpn_if)

pass out on $ext_if route-to ($vpn_if $vpn_gw) from $vpn_if to any
pass out on $vpn_if route-to ($ext_if $ext_gw) from $ext_if to any