всем - драсЬте!...есть локалка: 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
==============================================================
подскажите пожайлуста, куда копать...
>[оверквотинг удален]
>сервера 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
>
>==============================================================
>
>подскажите пожайлуста, куда копать...
>может?
>nat on $vir_if from $office_net to $vir_net -> ($vir_if)не помогло и это!.. :(
>>может?
>>nat on $vir_if from $office_net to $vir_net -> ($vir_if)
>
>не помогло и это!.. :(А может не городить весь этот огород и просто тупо
pass in quick on $local_if from $local_net to $dmz_net
>>>может?
>>>nat on $vir_if from $office_net to $vir_net -> ($vir_if)
>>
>>не помогло и это!.. :(
>
>А может не городить весь этот огород и просто тупо
>pass in quick on $local_if from $local_net to $dmz_netПравильно, НАТ в этом случае уже не нужен
>>>>может?
>>>>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" # DMZmail_server = "10.10.10.123"
...
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
>[оверквотинг удален]
>
>...
>
>но почтовый клиент при попытке получить почту задумывается на пару секунд и
>выдаёт ошибку о невозможности соединиться с почтовым серверов, а 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
...млин!!!
>...млин!!!прошу прощение за наглость, но может у кого нибудь есть готове решение о том как организовать почтовый сервер в DMZ с применением правил PF?.. а то почта на него сваливается, но принять получается только через интерфейс, подключеный к локалке напрямую... :(((
Сети с адресом 10.10.10.10/24 НЕ СУЩЕСТВУЕТ.УЧИТЕ ТЕОРИЮ!
>Сети с адресом 10.10.10.10/24 НЕ СУЩЕСТВУЕТ.
>
>УЧИТЕ ТЕОРИЮ!упс - ОЧЕПЯТКА...
10.10.10.0/24
>подскажите пожайлуста, куда копать...http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#p...
копать внимательно в этом пункте
C.2.1.6.4. Перенаправление и отражениепроверено, работает
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.XXXint_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 995block in log from any to any
block out log from any to anypass 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 statepass 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 statepass 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 statepass 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
Вроде все пашет