Система 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???
Как вариант
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.
>Как вариант
>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?
>а как же быть с icmp, tracert?
В чем проблема?
Ты пробовал, что я посоветовал? Должно работать по всем протоколам.
>>а как же быть с icmp, tracert?
>В чем проблема?
>Ты пробовал, что я посоветовал? Должно работать по всем протоколам.а прблема в том, что конструкция правила нат не предполагает использования типа протокола. Тем что ты написал можно разрулить tcp/udp трафик, а для того, чтоб icmp ходил наружу из всей локалки придется использованть
nat on $ext_if from $local_net -> $ext_if
>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
>>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спасибо за помощь, но это не очень красивый вариант. будут ли еще какие мысли?
>спасибо за помощь, но это не очень красивый вариант. будут ли еще
>какие мысли?
есть еще мысли...
например
block in quick on $int_if proto tcp from !192.168.0.100 to any port 5190
>>спасибо за помощь, но это не очень красивый вариант. будут ли еще
>>какие мысли?
>есть еще мысли...
>например
>block in quick on $int_if proto tcp from !192.168.0.100 to any port
>5190
я и начилал с того, что прихоходится фильтровать на внут. интерфейсе. Я так и поступил....