Допустим что у нас есть две сети
first.ru и second.ru которым соответствуют два почтовых и днс домена
для этих зон прописаны два mx
Код: Выделить всё
in mx 10 mail.first.ru.
mail.first.ru. A 1.1.1.1Код: Выделить всё
in mx 10 mail.second.ru.
mail.second.ru. A 2.2.2.2.настройку релея описывать не буду (смотри тему) а вот настройку pf опишу
Решение
1. Лучше пересобрать ядро со следующими опциями
Код: Выделить всё
#PF
device pf
device pflog
device pfsync
#ALTQ
options ALTQ
options ALTQ_CBQ # Class Bases Queueing
options ALTQ_RED # Random Early Detection
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler
options ALTQ_CDNR # Traffic conditioner
options ALTQ_PRIQ # Priority Queueing
options ALTQ_NOPCC # Required for SMP build
options ALTQ_DEBUG
это нужно для работы очередей Altq если очереди вам не нужны то ядро можно не пересобирать (только работать будет медленнее)
2. Включаем pf в rc.conf
Код: Выделить всё
#### Packet Filter
pf_enable="YES"
pf_flags=""
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_flags=""
pflog_logfile="/var/log/pflog"
3. Настраиваем pf.conf
Для начала его можно просто скопировать
Код: Выделить всё
cp /usr/src/tools/tools/tinybsd/conf/firewall/etc/pf.conf /etc/pf.conf
первый интерфейс em0 принадлежит first.ru и имеет ip 1.1.1.1 и имеет гейт 1.1.1.254, он же дефолт гейтвей
второй интерфейс em1 принадлежит second.ru и имеет ip 2.2.2.2 и имеет гейт 2.2.2.1
затем открываем его на редактирование (я исполльзую vim но вам возможно удобней ee или nano)
Код: Выделить всё
#интерфейс сети first.ru
ext1="em0"
#интерфейс сети second.ru
ext2="em1"
# ip сети first.ru
first="1.1.1.1"
# ip сети second.ru
second="2.2.2.2"
# ip сети second.ru
gw2="2.2.2.1"
# устанавливаем лимиты соединений
set limit { states 100000, frags 100000, src-nodes 100000 }
# устанавливаем политику оптимизации правил
set ruleset-optimization basic
# включаем логирование
set loginterface pflog0
# устанавливаем тип оптимизации
set optimization normal
# устанавливаем политику DROP для заблокированых соединений
set block-policy drop
# не приминяем правила для локального интерфейса
set skip on lo0
#set require-order yes
#set fingerprints "/etc/pf.os"
# Normalization: reassemble fragments and resolve or reduce traffic ambiguities.
scrub in all fragment reassemble
#запрещаем и логируем все входящие соединения
block in log all
#разрешаем и логируем все исходящие
pass out log all
#рарешаем ssh на em0
pass in log on $ext1 proto tcp from any port 22 flags S/SA keep state
#рарешаем smtp на em0
pass in log on $ext1 proto tcp from any port 25 flags S/SA keep state
#рарешаем smtp на em1 и возвращаем пакет идущий отправителю через тот же интерфейс через который он пришел
pass in on $ext2 reply-to ( $ext2 $gw2 ) proto tcp from any to $second port 25
