Hi everyone,

I'm having some trouble figuring out why one of my PF rules isn't working. I have my wireless network in it's own subnet. (Internal and DMZ are also subnetted, DMZ currently not being used.) I don't want wireless clients to have open access to my other subnets, so I have a default "block in" on the $wifi_if. But I want to allow any traffic from the wireless network to pass through to the outside world. I tried using the following rule to accomplish this:

        pass in on $wifi_if from $wifi_if:network to $ext_if:network

But it does not seem to work. I know it's not a routing issue because if I change it to this it works fine:

        pass in on $wifi_if from $wifi_if:network to any

But that obviously allows full access to all my other subnets, which I don't want. So if anyone can help me understand why this isn't working the way I think it should, I would be very grateful! I will include my full pf.conf below for reference.

Thanks!
--Brian Johnson



#       $OpenBSD: pf.conf,v 1.29 2005/08/23 02:52:58 henning Exp $
#
# See pf.conf(5) and /usr/share/pf for syntax and examples.
# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
# in /etc/sysctl.conf if packets are to be forwarded between interfaces.

## MACROS ##
ext_if = "rl0"
int_if = "rl1"
dmz_if = "sis0"
wifi_if = "sis1"
www_srv = "192.168.1.3"
mail_srv = "192.168.1.3"
www_ports = "{ http, https }"
mail_ports = "{ smtp, submission, imaps }"

## OPTIONS ##
set block-policy return
set loginterface $ext_if
set skip on lo0

## NORMALIZATION ##
scrub in all

## TRANSLATION ##
nat on $ext_if from !($ext_if) to any -> ($ext_if) static-port

rdr on $ext_if proto tcp from any to any port $www_ports -> $www_srv
rdr on $ext_if proto tcp from any to any port $mail_ports -> $mail_srv
rdr on $int_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021

nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"

## FILTERING ##
block in all

antispoof quick for { $int_if, $dmz_if, $wifi_if }

pass quick on $int_if

pass in on $ext_if proto tcp from any to ($ext_if) port ssh
pass in on $ext_if proto tcp from any to $www_srv port $www_ports synproxy state pass in on $ext_if proto tcp from any to $mail_srv port $mail_ports synproxy state

# This is probably redundant since we're only blocking "in"
pass out on $ext_if proto { tcp, udp, icmp } all modulate state

#pass in on $wifi_if from $wifi_if:network to any
pass in on $wifi_if from $wifi_if:network to $ext_if:network
pass in on $wifi_if proto tcp from $wifi_if:network to $wifi_if port ssh
pass in on $wifi_if proto tcp from $wifi_if:network to $www_srv port $www_ports synproxy state pass in on $wifi_if proto tcp from $wifi_if:network to $mail_srv port $mail_ports synproxy state
pass out on $wifi_if from any to $wifi_if:network

pass in inet proto icmp all icmp-type echoreq

anchor "ftp-proxy/*"

Reply via email to