PF
# grep test /etc/pf.conf
test="{ 10.0.0.1 - 10.0.0.100 }"
block in quick on $ext_if from $test
# pfctl -nvf /etc/pf.conf | grep 10.0
test = "{ 10.0.0.1 - 10.0.0.100 }"
block drop in quick on em1 inet from 10.0.0.1 - 10.0.0.100 to any
Но у меня не всегда корректно срабатывало это правило на FreeBSD.
iptables
iptables -A INPUT -p tcp --destination-port 22 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT
iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.100-192.168.1.200
В остальных файерволах (ipfilter) данного функционала нет и придётся разбивать диапазон на подсети CIDR.
ipfw
ipfw add allow all from 1.2.3.0/24{128,35-55,89}
Выдержка из мана:
As an example, an address specified as 1.2.3.4/24{128,35-55,89}
or 1.2.3.0/24{128,35-55,89} will match the following IP
addresses:
1.2.3.128, 1.2.3.35 to 1.2.3.55, 1.2.3.89 .
Спасибо нашему читателю, который дополнил статью про ipfw.
Если у кого-то не заработало, вот ссылка на разбивку на подсети