Hi Brian,
This rule:
pass in on $wifi_if from $wifi_if:network to $ext_if:network
just permit a communication of wifi network to ext network, not wifi
network to world
I think you can use this rule to your solution:
pass in on $wifi_if from $wifi_if:network to !(your subnets)
--
Gilberto Villani Brito
System Administrator
Londrina - PR
Brazil
gilbertovb(a)gmail.com
On 26/02/2008, Brian Johnson <[EMAIL PROTECTED]> wrote:
> 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/*"
>