Есть машина под OpenBSD 3.5, на ней фильтр pf. Нужно чтобы обращаясь к этой машине по smtp, обращение производилось на машину с адресом 192.168.1.1Для этого, делаю такой конфиг:
ext_if = "ne3"
mail_srv = "192.168.1.1"
rdr on $int_if proto tcp from any to any port 25 -> $mail_srvПосле этого получаю:
# pfctl -s a
TRANSLATION RULES:
rdr on ne3 inet proto tcp from any to any port = smtp -> 192.168.1.1FILTER RULES:
INFO:
Status: Enabled for 0 days 00:12:45 Debug: UrgentInterface Stats for ne3 IPv4 IPv6
Bytes In 40829 0
Bytes Out 11558 0
Packets In
Passed 114 0
Blocked 0 0
Packets Out
Passed 132 0
Blocked 0 0State Table Total Rate
current entries 0
searches 1985 2.6/s
inserts 1 0.0/s
removals 1 0.0/s
Counters
match 1983 2.6/s
bad-offset 0 0.0/s
fragment 0 0.0/s
short 22 0.0/s
normalize 0 0.0/s
memory 0 0.0/s
И всё бы хорошо, но при этом на попытку присоединиться к фильтрующей машине (да и хоть с неё самой) на 25-й порт получаю "Connection refused", а при попытке сделать то же самое с $mail_srv проходит так как надо.Есть одно узкое место - на $mail_srv стоит MS Exchange, но...
Не пойму, где грабля зарыта?
>Есть машина под OpenBSD 3.5, на ней фильтр pf. Нужно чтобы обращаясь
>к этой машине по smtp, обращение производилось на машину с адресом
>192.168.1.1
>
>Для этого, делаю такой конфиг:
>
>ext_if = "ne3"
>mail_srv = "192.168.1.1"
>rdr on $int_if proto tcp from any to any port 25 -> $mail_srv
>
>После этого получаю:
>
># pfctl -s a
>TRANSLATION RULES:
>rdr on ne3 inet proto tcp from any to any port = smtp -> 192.168.1.1
>
>FILTER RULES:
>
>INFO:
>Status: Enabled for 0 days 00:12:45
> Debug: Urgent
>
>Interface Stats for ne3
> IPv4
> IPv6
> Bytes In
>
> 40829
>
> 0
> Bytes Out
>
> 11558
>
>0
> Packets In
> Passed
>
> 114
>
> 0
> Blocked
>
>
>0
> 0
> Packets Out
> Passed
>
> 132
>
> 0
> Blocked
>
>
>0
> 0
>
>State Table
>
> Total
> Rate
> current entries
>
> 0
> searches
>
> 1985
> 2.6/s
> inserts
>
>
>1
> 0.0/s
> removals
>
> 1
>
>0.0/s
>Counters
> match
>
> 1983
>
>2.6/s
> bad-offset
>
> 0
> 0.0/s
> fragment
>
> 0
>
>0.0/s
> short
>
>
> 22
> 0.0/s
> normalize
>
> 0
> 0.0/s
>
> memory
>
>
> 0
> 0.0/s
>
>
>И всё бы хорошо, но при этом на попытку присоединиться к фильтрующей
>машине (да и хоть с неё самой) на 25-й порт получаю
>"Connection refused", а при попытке сделать то же самое с $mail_srv
>проходит так как надо.
>
>Есть одно узкое место - на $mail_srv стоит MS Exchange, но...
>
>Не пойму, где грабля зарыта?1)
ext_if = "ne3"
mail_srv = "192.168.1.1"
rdr on (?????)$int_if(?????) proto tcp from any to any port 25 -> $mail_srvhotja v vivode pfctl on u tebja s ne3, no vse-taki.
2) Obrabotka paketov v dannom slu4aje budet takaja:
[paket]->[ne3/nat-rdr dla ne3 interfeisa]->[ne3/pf pravila dla ne3 interfeisa]->[routing tablice]->[ish.intefeis/pf pravila dla interfeisa]->[ish.intefeis/nat-rdr dla interfeisa]
Так стремительно развивались события, что пришлось найти ответ самому: получается, что при использовании "серых" сетей правила "rdr" недостаточно, надо ещё делать "nat"В таком вот виде, заработало всё путём:
ext_if = "ne3"
mail_srv = "192.168.1.1"
rdr on ne3 proto tcp from any to any port 25 -> 192.168.1.1
nat on $ext_if from 192.168.1.1/32 to any -> ($ext_if)