Good morning folks,

I am a little bit stumped with my firewall config and need some
assistance. I have a Soekris net4501 with two interfaces connected. The
sis1 interface is connected to my macbook and the sis2 interface (vlan
trunk) is connected to my switch (see diagram below). I have a bridge
interface (bridge0) with with vlan100, sis1 and ral0 as members. I
assume this is the best way to have multiple physical interfaces in a vlan.

                                   .-------.
                                  |         |
                                  | macbook |
.------.+ sis0        .---------+ |_________|
|      |             /             \_________\
|  fw  |+ sis1 +----*
|      |          802.1q trunk    .----------.  vlan99 (inet)
!______!+ sis2 +----------------+ |  switch  | +-------------
    |                             !__________!
    +ral0     .--------.               +
              |        |   vlan100    /
              | server | ------------*
              |        |
              !________!

With no rules loaded in PF everything works just fine. From my Macbook I
am able to NAT outside the network and also access everything on
vlan100. When I load the rules into PF I am unable to access the
management IP on the switch or my server, both of which are in vlan100.
It's obviously an issue with pf and the bridge interface, I just can't
seem to figure it out (see config below).

I appreciate any advice on this.

Cheers,
-Chris


hostname.sis1
-------------

up

hostname.sis2
-------------

up

hostname.vlan99
---------------

dhcp NONE NONE NONE vlan 99 vlandev sis2

hostname.vlan100
----------------

inet 192.168.1.1 255.255.255.0 NONE vlan 100 vlandev sis2

bridgename.bridge0
------------------

add vlan100
add sis1
add ral0
up

pf.conf
-------

#################################################################
# Macros

ext_if="vlan99"
int_if="vlan100"
int_bridge="bridge0"

int_net="192.168.1.0/24"

icmp_types="echoreq"

#################################################################
# Options

set block-policy return
set loginterface $ext_if
set skip on lo

#################################################################
# Traffic Normalization

scrub in

#################################################################
# NAT Rules: "rdr", "nat", "binat"

nat on $ext_if from !($ext_if) -> ($ext_if:0)
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"

rdr pass on $int_if proto tcp to port ftp -> 127.0.0.1 port 8021
rdr on $ext_if inet proto tcp from any to ($ext_if) port 2121 \
        -> 192.168.1.200 port 21
rdr on $ext_if inet proto tcp from any to ($ext_if) port 2222 \
        -> 192.168.1.200 port 22
rdr on $ext_if inet proto tcp from any to ($ext_if) port 80 \
        -> 192.168.1.200 port 80


#################################################################
# Filter Rules

block in

pass out

anchor "ftp-proxy/*"

antispoof quick for lo0

pass  in log on $ext_if proto udp from any to ($ext_if:0) \
        port {500, 4500}
pass out log on $ext_if proto udp from ($ext_if:0) to any \
        port {500, 4500}

pass  in log on $ext_if proto esp from any to ($ext_if:0)
pass out log on $ext_if proto esp from ($ext_if:0) to any

pass  in log on enc0 proto ipencap from any to ($ext_if:0) \
        keep state (if-bound)
pass out log on enc0 proto ipencap from ($ext_if:0) to any \
        keep state (if-bound)

pass  in on enc0 from 10.1.0.2/32 to any keep state (if-bound)
pass out on enc0 from 192.168.1.0/24 to any keep state (if-bound)

pass in inet proto icmp all icmp-type $icmp_types

pass in  log on $ext_if proto udp from any to port 1194
pass in  log on $ext_if proto tcp to ($ext_if) port ssh
pass in  log on $ext_if proto tcp from any to 192.168.1.200 \
        port 21
pass in  log on $ext_if proto tcp from any to 192.168.1.200 \
        port 22
pass in  log on $ext_if proto tcp from any to 192.168.1.200 \
        port 80
pass in  log on $ext_if proto tcp to ($ext_if) port smtp
pass out log on $ext_if proto tcp from ($ext_if) to port smtp

pass quick on $int_if

Reply via email to