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

Исходное сообщение
"PF problem"

Отправлено mclaud , 24-Ноя-05 09:52 
Система FreeBSD 5.4. Решил переходить с IPF на PF и столкнулся со следующей проблемой:
в конфигах IPF уменя были следущие строки:

nat

map on $ext_if from 192.168.0.0/24 -> $ext_if_ip

filter

block all
pass in on $local_if all
pass in on $local_if all
pass out quick on $ext_if from 192.168.0.100 to any port 5190 keep state
  
(т.е. весь трафик из внут. сети транслируется на внешний интерфейс, на внут. интерфейсе
разрешен весь трафик, а с внешнего интерфейса ICQ уходит только с 192.168.0.100)

При попытке сделать подобное на PF ничего не получается, тк(из доки по нему) транслирование происходит
до фильтрации и фильтрующие правила видят уже оттранслированный пакет. Т.е.правило

pass out quick on $ext_if from 192.168.0.100 to any port 5190 keep state

не работает, тк пакет к внешнему интерфейсу дошел с ip $ext_if_ip.

В результате приходится фильтровать пакеты на внут. интерфейсе, а с внешнего пропускать весь трафик.

Вопрос в следующем: возможноли замуть то же, что у меня было на IPF???


Содержание

Сообщения в этом обсуждении
"PF problem"
Отправлено _Ale_ , 24-Ноя-05 15:11 
Как вариант
nat on $ext_if inet from $int_if:network to any port 53 -> ($ext_if)
nat on $ext_if inet from $int_if:network to any port 80 -> ($ext_if)
(если необходимо, добавляем правила для нужных портов)
nat on $ext_if inet from 192.168.0.100 to any port 5190 -> ($ext_if)
То есть, будет трансляция пакетов для всех по нужным портам, кроме icq, а для 192.168.0.100 - еще для icq.

"PF problem"
Отправлено McLaud , 24-Ноя-05 15:27 
>Как вариант
>nat on $ext_if inet from $int_if:network to any port 53 -> ($ext_if)
>nat on $ext_if inet from $int_if:network to any port 80 -> ($ext_if)
>(если необходимо, добавляем правила для нужных портов)
>nat on $ext_if inet from 192.168.0.100 to any port 5190 -> ($ext_if)
>То есть, будет трансляция пакетов для всех по нужным портам, кроме icq,
>а для 192.168.0.100 - еще для icq.

а как же быть с icmp, tracert?


"PF problem"
Отправлено _Ale_ , 24-Ноя-05 16:21 
>а как же быть с icmp, tracert?
В чем проблема?
Ты пробовал, что я посоветовал? Должно работать по всем протоколам.

"PF problem"
Отправлено McLaud , 24-Ноя-05 16:42 
>>а как же быть с icmp, tracert?
>В чем проблема?
>Ты пробовал, что я посоветовал? Должно работать по всем протоколам.

а прблема в том, что конструкция правила нат не предполагает использования  типа протокола. Тем что ты написал можно разрулить tcp/udp трафик, а для того, чтоб icmp ходил наружу из всей локалки придется использованть
nat on $ext_if from $local_net -> $ext_if


"PF problem"
Отправлено _Ale_ , 24-Ноя-05 17:06 
>nat on $ext_if from $local_net -> $ext_if
>nat on $ext_if from $local_net -> $ext_if
Тогда так
nat on $ext_if inet from $int_if:network to any port 53 -> ($ext_if)
nat on $ext_if inet from $int_if:network to any port 80 -> ($ext_if)
(если необходимо, добавляем правила для нужных портов)
nat on $ext_if inet from 192.168.0.100 to any -> ($ext_if)
То есть классному парню с ИП 192.168.0.100 будет разрешено все, в том числе и icmp


"PF problem"
Отправлено McLaud , 24-Ноя-05 17:51 
>>nat on $ext_if from $local_net -> $ext_if
>>nat on $ext_if from $local_net -> $ext_if
>Тогда так
>nat on $ext_if inet from $int_if:network to any port 53 -> ($ext_if)
>nat on $ext_if inet from $int_if:network to any port 80 -> ($ext_if)
>(если необходимо, добавляем правила для нужных портов)
>nat on $ext_if inet from 192.168.0.100 to any -> ($ext_if)
>То есть классному парню с ИП 192.168.0.100 будет разрешено все, в том
>числе и icmp

спасибо за помощь, но это не очень красивый вариант. будут ли еще какие мысли?


"PF problem"
Отправлено _Ale_ , 24-Ноя-05 18:28 
>спасибо за помощь, но это не очень красивый вариант. будут ли еще
>какие мысли?
есть еще мысли...
например
block in quick on $int_if proto tcp from !192.168.0.100 to any port 5190


"PF problem"
Отправлено McLaud , 24-Ноя-05 18:59 
>>спасибо за помощь, но это не очень красивый вариант. будут ли еще
>>какие мысли?
>есть еще мысли...
>например
>block in quick on $int_if proto tcp from !192.168.0.100 to any port
>5190
я и начилал с того, что прихоходится фильтровать на внут. интерфейсе. Я так и поступил....