URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 79819
[ Назад ]

Исходное сообщение
"PF + почтовый сервер в DMZ..."

Отправлено iTango , 14-Апр-08 23:22 
всем - драсЬте!...

есть локалка: 10.0.0.0/24
есть DMZ: 10.10.10.10/24

между ними стоит FreeBSD 6.3, которая одним интерфейсом смотрит в Инет. На него же она принимает почтовые запросы и пересылает их к почтовому серверу в DMZ.
Правила пакетного фильтра следующие:

ext_if="tun0" - внешний интерфейс
int_if="lnc1" - локалка
vir_if="lnc2" - DMZ


mail_server = "10.10.10.123"
mail_ports = "{ smtp, pop3 }"

...

rdr on $ext_if proto tcp from any to any port $web_ports -> $web_server

...

=======================================================================


помогите написать правила, разрешающие пользователям из локалки (10.0.0.0/24) забирать почту с почтового сервера 10.10.10.123

я пробовал написать так:

...

$office_net="10.0.0.0/24"
$vir_net="10.10.10.10/24"

...

nat on $int_if from $office_net to $vir_net -> ($vir_if)

rdr on $int_if proto tcp from any to $mail_server port 8110 -> 10.10.10.123 port 110

...


...но при попытке получить почту с локального компа, получаю ошибку: НЕВОЗМОЖНО СОЕДИНИТЬСЯ С СЕРВЕРОМ, а pftop показывает вот такую картину:

tcp   Out 10.0.0.2:4818    10.10.10.123:110    SYN_SENT:CLOSED

==============================================================

подскажите пожайлуста, куда копать...


Содержание

Сообщения в этом обсуждении
"PF + почтовый сервер в DMZ..."
Отправлено reader , 15-Апр-08 00:11 
>[оверквотинг удален]
>сервера 10.10.10.123
>
>я пробовал написать так:
>
>...
>
>$office_net="10.0.0.0/24"
>$vir_net="10.10.10.10/24"
>
>...

1
>
>nat on $int_if from $office_net to $vir_net -> ($vir_if)

может?
nat on $vir_if from $office_net to $vir_net -> ($vir_if)
>[оверквотинг удален]
>
>...но при попытке получить почту с локального компа, получаю ошибку: НЕВОЗМОЖНО СОЕДИНИТЬСЯ
>С СЕРВЕРОМ, а pftop показывает вот такую картину:
>
>tcp   Out 10.0.0.2:4818    10.10.10.123:110    
>SYN_SENT:CLOSED
>
>==============================================================
>
>подскажите пожайлуста, куда копать...


"PF + почтовый сервер в DMZ..."
Отправлено iTango , 15-Апр-08 08:56 
>может?
>nat on $vir_if from $office_net to $vir_net -> ($vir_if)

не помогло и это!.. :(


"PF + почтовый сервер в DMZ..."
Отправлено EL , 15-Апр-08 09:37 
>>может?
>>nat on $vir_if from $office_net to $vir_net -> ($vir_if)
>
>не помогло и это!.. :(

А может не городить весь этот огород и просто тупо
pass in quick on $local_if from $local_net to $dmz_net


"PF + почтовый сервер в DMZ..."
Отправлено vg , 15-Апр-08 10:16 
>>>может?
>>>nat on $vir_if from $office_net to $vir_net -> ($vir_if)
>>
>>не помогло и это!.. :(
>
>А может не городить весь этот огород и просто тупо
>pass in quick on $local_if from $local_net to $dmz_net

Правильно, НАТ в этом случае уже не нужен


"PF + почтовый сервер в DMZ..."
Отправлено iTango , 15-Апр-08 10:42 
>>>>может?
>>>>nat on $vir_if from $office_net to $vir_net -> ($vir_if)
>>>
>>>не помогло и это!.. :(
>>
>>А может не городить весь этот огород и просто тупо
>>pass in quick on $local_if from $local_net to $dmz_net
>
>Правильно, НАТ в этом случае уже не нужен

добавил правило:

office_net="10.0.0.0/24"    # local
vir_net="10.10.10.0/24"     # DMZ

mail_server = "10.10.10.123"

...

# mail
rdr on $int_if proto tcp from any to $mail_server port 8110 -> 10.10.10.123 port 110

...

pass in quick on $int_if from $office_net to $vir_net

...

но почтовый клиент при попытке получить почту задумывается на пару секунд и выдаёт ошибку о невозможности соединиться с почтовым серверов, а pftop выдаёт в момент коннекта:

In  10.0.0.2:1924            10.10.10.123:110              CLOSED:SYN_SENT



"PF + почтовый сервер в DMZ..."
Отправлено iTango , 15-Апр-08 11:50 
>[оверквотинг удален]
>
>...
>
>но почтовый клиент при попытке получить почту задумывается на пару секунд и
>выдаёт ошибку о невозможности соединиться с почтовым серверов, а pftop выдаёт
>в момент коннекта:
>
>In  10.0.0.2:1924          
>  10.10.10.123:110        
>     CLOSED:SYN_SENT

убрал:

rdr on $int_if proto tcp from any to $mail_server port 8110 -> 10.10.10.123 port 110

заменил:

pass in quick on $int_if from $office_net to $vir_net

на

pass in quick on $int_if from $office_net to $vir_net flags S/SA synproxy state

...и теперь почтовик непереставая принимает почту (по крайней мере делает вид, что получает...), а pftop выдаёт:

tcp       In  10.0.0.2:3091            10.10.10.123:110               PROXY:DST

...млин!!!


"PF + почтовый сервер в DMZ..."
Отправлено iTango , 15-Апр-08 13:03 
>...млин!!!

прошу прощение за наглость, но может у кого нибудь есть готове решение о том как организовать почтовый сервер в DMZ с применением правил PF?.. а то почта на него сваливается, но принять получается только через интерфейс, подключеный к локалке напрямую... :(((



"PF + почтовый сервер в DMZ..."
Отправлено 1ight_apprentice , 15-Апр-08 13:44 
Сети с адресом 10.10.10.10/24 НЕ СУЩЕСТВУЕТ.

УЧИТЕ ТЕОРИЮ!


"PF + почтовый сервер в DMZ..."
Отправлено iTango , 15-Апр-08 13:55 
>Сети с адресом 10.10.10.10/24 НЕ СУЩЕСТВУЕТ.
>
>УЧИТЕ ТЕОРИЮ!

упс - ОЧЕПЯТКА...

10.10.10.0/24


"PF + почтовый сервер в DMZ..."
Отправлено mishanya , 17-Авг-08 16:16 
>подскажите пожайлуста, куда копать...

http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#p...

копать внимательно в этом пункте
C.2.1.6.4. Перенаправление и отражение

проверено, работает


"PF + почтовый сервер в DMZ..."
Отправлено salimk , 07-Апр-14 21:41 
int_if="bge0" # внутренний интерфейс, имеет адрес 192.168.0.254  192.168.0.0/24
dmz_if="bge1" # DMZ интерфейс, имеет адрес 10.0.1.254
ext_if1="bge3" # внешний интерфейс, имеет адрес XXX.XXX.XXX.XXX

int_net="192.168.0.0/24"
dmz_net="10.0.0.0/24"

mail_server="10.0.1.235"

nat on $ext_if1 inet from { $int_net, $dmz_net } \
to { !$int_net, !$dmz_net }  -> ($ext_if1)

nat on $dmz_if inet from $int_net to $dmz_net -> ($dmz_if)


rdr on $ext_if1 inet proto tcp from any to $ext_if1 port 25 -> $mail_server port 25
rdr on $ext_if1 inet proto tcp from any to $ext_if1 port 465 -> $mail_server port 465
rdr on $ext_if1 inet proto tcp from any to $ext_if1 port 993 -> $mail_server port 993
rdr on $ext_if1 inet proto tcp from any to $ext_if1 port 995 -> $mail_server port 995

block in log from any to any
block out log from any to any

pass out on $int_if proto tcp from any to any  flags S/SA modulate state
pass out on $int_if proto { udp, icmp } from any to any keep state

pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp } from any to any keep state

pass out on $dmz_if proto tcp from any to any  flags S/SA modulate state
pass out on $dmz_if proto { udp, icmp } from any to any keep state


### Pass to mail_server
pass in on $ext_if1 proto tcp from any to $mail_server port 25
pass in on $ext_if1 proto tcp from any to $mail_server port 465
pass in on $ext_if1 proto tcp from any to $mail_server port 993
pass in on $ext_if1 proto tcp from any to $mail_server port 995
### DMZ mail_server ###
pass in on $dmz_if proto tcp from $mail_server to any port 25 keep state
pass in on $dmz_if proto tcp from $mail_server to any port 465 keep state
pass in on $dmz_if proto tcp from $mail_server to any port 993 keep state
pass in on $dmz_if proto tcp from $mail_server to any port 995 keep state

pass in on $int_if proto tcp from $int_net to any port 25
pass in on $int_if proto tcp from $int_net to any port 465
pass in on $int_if proto tcp from $int_net to any port 587
pass in on $int_if proto tcp from $int_net to any port 143
pass in on $int_if proto tcp from $int_net to any port 993
pass in on $int_if proto tcp from $int_net to any port 110
pass in on $int_if proto tcp from $int_net to any port 995


Вроде все пашет