вобщем проблему победил (вместо таблицы vpn_users использовал этот же макрос)
теперь мой pf.conf принял следующий вид (см. ниже)
уважаемые гуру, укажите на ошибки, если таковые имеются
волнует безопасность как сервера, так и клиентов pptp
да, кстати, у меня OpenBSD 4.2
разрешается ходить в инет тока серверу ) и пользователям pptpint_if="sk0" #локалка
ext_if="rl0" #интернет (реальный адрес)
int_ip="192.168.222.20"
ext_ip="80.80.80.20"
vpn_grp = "tun"
tcp_services = "{ www }"
udp_services = "{ domain }"
vpn_users = "172.25.25.0/24" #адреса, которые присваиваются клиентам pptp (172.25.25.1 - серверу)
table <ssh-bruteforce> persist
scrub in all
set skip on lo0
#включаем нат
nat on $ext_if from $vpn_users -> ($ext_if)
#по дефолту блочим всё
block in all
#Активируем защиту на внутреннем интерфейсе от spoof атак.
antispoof quick for $int_if inet
#разрешаем исходящие соединения и следим за их состоянием
pass out keep state
#разрешаем icmp-пакеты (пинги)
pass in inet proto icmp all icmp-type echoreq keep state
#разрешаем наши сервисы
pass in on $int_if proto tcp from any to $int_if port $tcp_services flags S/SA keep state
pass in on $ext_if proto tcp from any to $ext_if port $tcp_services flags S/SA keep state
pass in on $ext_if proto udp from any to $ext_if port $udp_services keep state
#разрешаем и защищаем от брутфорса ssh
pass in on $int_if proto tcp from any to $int_if port ssh flags S/SA keep state
block drop in quick on $ext_if from <ssh-bruteforce>
pass in on $ext_if proto tcp from any to ($ext_if) port ssh flags S/SA keep state (max-src-conn-rate 3/30, overload <ssh-bruteforce> flush global)
#следующие три строчки разрешают pptp на внутреннем интерфейсе
pass in on $int_if proto gre from any to $int_ip
pass out on $int_if proto gre from $int_ip to any
pass in on $int_if inet proto tcp from any to $int_ip port = 1723 flags S/SA keep state
#разрешаем pptp-клиентам ходить в интернет
pass in on $vpn_grp inet from any keep state