Есть две подсети - 192.168.1.0/24 и 192.168.2.0/24. В подсети 192.168.2.0 есть некоторый хост 192.168.2.20
Нужно разрешить весь трафик между подсетями за исключением трафика на хост 192.168.2.0 - для этого хоста будут свои правила.Т. е. нужно записать что-то вроде
block all
pass quick on $int_if inet from 192.168.1.0/24 to { ! 192.168.2.20 , 192.168.2.0/24 }
pass quick on $int_if inet from { ! 192.168.2.20 , 192.168.2.0/24 } to 192.168.1.0/24
# Ниже правила для 192.168.2.20
pass on $int_if inet from 192.168.1.0/24 to 192.168.2.20 port ftp S/SA keep state
.......Но естественно так не будет работать.
>block all
># Ниже правила для 192.168.2.20
>pass on $int_if inet from 192.168.1.0/24 to 192.168.2.20 port ftp S/SA keep
>pass quick on $int_if inet from 192.168.1.0/24 to { ! 192.168.2.20 ,
>192.168.2.0/24 }
>pass quick on $int_if inet from { ! 192.168.2.20 , 192.168.2.0/24 }
>to 192.168.1.0/24
>state
>.......
>Но естественно так не будет работать.по логике так должно работать...
>[оверквотинг удален]
>>pass on $int_if inet from 192.168.1.0/24 to 192.168.2.20 port ftp S/SA keep
>>pass quick on $int_if inet from 192.168.1.0/24 to { ! 192.168.2.20 ,
>>192.168.2.0/24 }
>>pass quick on $int_if inet from { ! 192.168.2.20 , 192.168.2.0/24 }
>>to 192.168.1.0/24
>>state
>>.......
>>Но естественно так не будет работать.
>
>по логике так должно работать...Не работает потому что распишется как
pass quick on $int_if inet from 192.168.1.0/24 to ! 192.168.2.20
pass quick on $int_if inet from 192.168.1.0/24 to 192.168.2.0/24
pass quick on $int_if inet from ! 192.168.2.20 to 192.168.1.0/24
pass quick on $int_if inet from 192.168.2.0/24 to 192.168.1.0/24Т. е. трафик c/на 192.168.2.20 будет пропускаться вторым и четвертым правилом.
а если так попробовать?>block all
#здесь правила для 192.168.2.20 (обязательно с quick)
block quick on $int_if inet from 192.168.1.0/24 to 192.168.2.20
pass quick on $int_if inet from 192.168.1.0/24 to { 192.168.2.0/24 }
block quick on $int_if inet from 192.168.2.20 to 192.168.1.0/24
pass quick on $int_if inet from { 192.168.2.0/24 } to 192.168.1.0/24
>[оверквотинг удален]
>pass quick on $int_if inet from 192.168.1.0/24 to { ! 192.168.2.20 ,
>192.168.2.0/24 }
>pass quick on $int_if inet from { ! 192.168.2.20 , 192.168.2.0/24 }
>to 192.168.1.0/24
># Ниже правила для 192.168.2.20
>pass on $int_if inet from 192.168.1.0/24 to 192.168.2.20 port ftp S/SA keep
>state
>.......
>
>Но естественно так не будет работать.сделай таблицу:
table net2_20 {!192.168.2.20 192.168.2.0/24 }pass quick on $int_if inet from 192.168.1.0/24 to <net2_20>
pass quick on $int_if inet from <net2_20> to 192.168.1.0/24