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

Исходное сообщение
"публикация сервера с помощью PF"

Отправлено Fedor_ , 27-Июл-07 17:57 
Всем привет"
Кто либо публиковал Exchаnge 2003 с помощью пакетного фильтра PF?
Настроил ридирект из инета в сеть, видно что пакеты проходят но обратно нет.

Могет кто сталкивался?

вот мой конфиг PF


ext_if  = "bge1"
int_if  = "bge0"
lan_net = "10.0.0.0/8"
exchange = "10.0.2.17"
exchange_port = "{http,https}"

nat on $ext_if from {$int_if, $lan_net} to any -> ($ext_if)
rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange

block log all

pass in log on $ext_if proto tcp from any to $exchange port $exchange_port \
   flags S/SA synproxy state

pass out on $int_if from any to $lan_net


Может я с натом напутал?


Содержание

Сообщения в этом обсуждении
"публикация сервера с помощью PF"
Отправлено reader , 27-Июл-07 20:32 
>[оверквотинг удален]
>block log all
>
>pass in log on $ext_if proto tcp from any to $exchange port
>$exchange_port \
>   flags S/SA synproxy state
>
>pass out on $int_if from any to $lan_net
>
>
>Может я с натом напутал?

а где разрешение входящих пакетов на внутреннем интерфейсе?


"публикация сервера с помощью PF"
Отправлено reader , 27-Июл-07 21:19 
>ext_if  = "bge1"
>int_if  = "bge0"
>lan_net = "10.0.0.0/8"
>exchange = "10.0.2.17"
>exchange_port = "{http,https}"
>
>nat on $ext_if from {$int_if, $lan_net} to any -> ($ext_if)

помоему $int_if тут не нужен.


>rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange
>
>block log all
>

после nat , ответ под правило наверно не попадет.


"публикация сервера с помощью PF"
Отправлено Fedor_ , 30-Июл-07 10:41 
>[оверквотинг удален]
>
>помоему $int_if тут не нужен.
>
>
>>rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange
>>
>>block log all
>>
>
>после nat , ответ под правило наверно не попадет.

а куда он поподает?
Я в логах смотрю там вообще обращения нет


"публикация сервера с помощью PF"
Отправлено reader , 30-Июл-07 11:08 
>а куда он поподает?
>Я в логах смотрю там вообще обращения нет

в логах pf или внутреннего сервака?


"публикация сервера с помощью PF"
Отправлено Fedor_ , 30-Июл-07 11:12 
>>а куда он поподает?
>>Я в логах смотрю там вообще обращения нет
>
>в логах pf или внутреннего сервака?

в логах PF

а вот правила доступа из сети
pass in log  on $int_if from $lan_net to any
pass out log on $int_if from any to $lan_net


"публикация сервера с помощью PF"
Отправлено Fedor_ , 30-Июл-07 11:16 
вообще, вот весь конфиг


ext_if  = "bge1"
int_if  = "bge0"
lan_net = "10.0.0.0/8"
mail_service = "{smtp, pop3}"
exchange = "10.0.2.100"
exchange_port = "{http,https,3389}"


# scrub incoming packets
scrub in all


rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange

nat on $ext_if from {$int_if, $lan_net} to any -> ($ext_if)


# setup a default deny policy
block log all


# activate spoofing protection for the internal interface.
antispoof quick for $ext_if inet


pass in log on $ext_if proto tcp from any to $exchange port $exchange_port \
   flags S/SA synproxy state

#pass in log  on $int_if proto tcp  from $lan_net \
    to $int_if port ssh keep state
#pass out log on $int_if proto tcp from $lan_net \
    to $int_if  keep state

# pass all traffic to and from the local network
pass in log  on $int_if from $lan_net to any
pass out log on $int_if from any to $lan_net


pass in log on $ext_if proto {tcp,udp} from any to $ext_if port {domain,smtp,pop3}

pass out log on $ext_if proto tcp all keep state
pass out log on $ext_if proto { udp, icmp } all keep state


"публикация сервера с помощью PF"
Отправлено A Clockwork Orange , 30-Июл-07 11:42 
ext_if  = "bge1"
int_if  = "bge0"
lan_net = "10.0.0.0/8"
mail_service = "{smtp, pop3}"
exchange = "10.0.2.100"
exchange_port = "{http,https,3389}"


# scrub incoming packets
scrub in all

nat on $ext_if from $lan_net to any -> $ext_if

rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange port \  
    $exchange_port

# setup a default deny policy
block log all

# activate spoofing protection for the internal interface.
antispoof quick for $ext_if inet


pass in log on $ext_if proto tcp from any to $exchange port $exchange_port \
    flags S/SA keep state


pass in log on $ext_if proto {tcp,udp} from any to $ext_if port {domain,smtp,pop3} \
    keep state

pass out       on $ext_if inet proto tcp   all keep state
pass out       on $ext_if inet proto udp   all keep state
pass out       on $ext_if inet proto icmp  all keep state

# pass all traffic to and from the local network
pass in  log on $int_if all
pass out log on $int_if all


"публикация сервера с помощью PF"
Отправлено Fedor_ , 30-Июл-07 12:00 
>[оверквотинг удален]
>exchange_port = "{http,https,3389}"
>
>
># scrub incoming packets
>scrub in all
>
>nat on $ext_if from $lan_net to any -> $ext_if
>
>rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange port \  
>    $exchange_port

тут ругается на синтаксис а именно на $exchange port \  
    $exchange_port

если строка такая, то рукани нет
rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange


>[оверквотинг удален]
>pass out       on $ext_if inet proto
>tcp   all keep state
>pass out       on $ext_if inet proto
>udp   all keep state
>pass out       on $ext_if inet proto
>icmp  all keep state
>
># pass all traffic to and from the local network
>pass in  log on $int_if all
>pass out log on $int_if all

но все равно не работает


"публикация сервера с помощью PF"
Отправлено A Clockwork Orange , 30-Июл-07 12:22 
>[оверквотинг удален]
>>pass out       on $ext_if inet proto
>>udp   all keep state
>>pass out       on $ext_if inet proto
>>icmp  all keep state
>>
>># pass all traffic to and from the local network
>>pass in  log on $int_if all
>>pass out log on $int_if all
>
>но все равно не работает

rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange $exchange_port


"публикация сервера с помощью PF"
Отправлено Fedor_ , 30-Июл-07 12:26 
>[оверквотинг удален]
>>>pass out       on $ext_if inet proto
>>>icmp  all keep state
>>>
>>># pass all traffic to and from the local network
>>>pass in  log on $int_if all
>>>pass out log on $int_if all
>>
>>но все равно не работает
>
>rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange $exchange_port

один хрен пишет
pfctl -nf pf.conf
pf.conf:14: syntax error

ну не суть я ставил
rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange port 443

и все равно не было


"публикация сервера с помощью PF"
Отправлено A Clockwork Orange , 30-Июл-07 12:29 
>[оверквотинг удален]
>>rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange $exchange_port
>
>один хрен пишет
>pfctl -nf pf.conf
>pf.conf:14: syntax error
>
>ну не суть я ставил
>rdr on $ext_if proto tcp from any to $ext_if port $exchange_port -> $exchange port 443
>
>и все равно не было

у меня вот это работает
rdr on $ext_if proto tcp from 2.2.1.0/24 to $external_addr port 3389 -> 192.168.21.7 port 3389


"публикация сервера с помощью PF"
Отправлено A Clockwork Orange , 30-Июл-07 12:23 
>[оверквотинг удален]
>>pass out       on $ext_if inet proto
>>udp   all keep state
>>pass out       on $ext_if inet proto
>>icmp  all keep state
>>
>># pass all traffic to and from the local network
>>pass in  log on $int_if all
>>pass out log on $int_if all
>
>но все равно не работает

добавь еще первым разрешающим правилом
pass       quick on lo all


"публикация сервера с помощью PF"
Отправлено Fedor_ , 30-Июл-07 12:47 
>[оверквотинг удален]
>>>icmp  all keep state
>>>
>>># pass all traffic to and from the local network
>>>pass in  log on $int_if all
>>>pass out log on $int_if all
>>
>>но все равно не работает
>
>добавь еще первым разрешающим правилом
>pass    quick on lo all

так, с этим тараканом я разобрался.
все дело было в шлюзах, у одного компа один( на нем все работало и тогда все правила работали) у второго (exchange) другой.
Тогда вопрос не вкурсе как в pf сделать так. чтобы подменить адресс запроса?
Exchange видит что запрос идет из вне и пытается переслать его через свой шлюз, и соответственно это не работает.
Я знаю в Ip firewall есть команда Map, которая делает подмену.
А сдесь есть что либо подобное?
  


"публикация сервера с помощью PF"
Отправлено reader , 30-Июл-07 12:59 
сделай nat на внутреннем интерфейсе, что бы ответ прислали на эту машину

"публикация сервера с помощью PF"
Отправлено Fedor_ , 30-Июл-07 14:34 
>сделай nat на внутреннем интерфейсе, что бы ответ прислали на эту машину
>

сделал, тока потом не мог по ssh зайдти

nat on $int_if from $lan_net to any ->$int_if так?


"публикация сервера с помощью PF"
Отправлено reader , 30-Июл-07 15:34 
>>сделай nat на внутреннем интерфейсе, что бы ответ прислали на эту машину
>>
>
>сделал, тока потом не мог по ssh зайдти
>
>nat on $int_if from $lan_net to any ->$int_if так?

nat on $int_if from ! $lan_net to $lan_net -> $int_if

можеш еще порты добавить


"публикация сервера с помощью PF"
Отправлено Fedor_ , 31-Июл-07 12:07 
короче, все заработало.
добавил еще одно правило
nat on $int_if from any to $exchange port 80 ->10.0.0.1

и все заработало.

хотя если использовать не стандартные порты, то есть тормаза