# $FreeBSD: src/etc/pf.conf,v 1.2.2.1 2006/04/04 20:31:20 mlaier Exp $
# $OpenBSD: pf.conf,v 1.21 2003/09/02 20:38:44 david Exp $
#
# See pf.conf(5) and /usr/share/examples/pf for syntax and examples.
# Required order: options, normalization, queueing, translation, filtering.
# Macros and tables may be defined and used anywhere.
# Note that translation rules are first match while filter rules are last match.
## Macros: define common values, so they can be referenced and changed easily.
ext_if="vr0"
external_addr="XXXXXXXXX"
icmp_types = "echoreq"
## Tables: similar to macros, but more flexible for many addresses.
#table <foo> { 10.0.0.0/8, !10.1.0.0/16, 192.168.0.0/24, 192.168.1.18 }
## Options: tune the behavior of pf, default values are given.
#set timeout { interval 10, frag 30 }
#set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
#set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
#set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
#set timeout { icmp.first 20, icmp.error 10 }
#set timeout { other.first 60, other.single 30, other.multiple 60 }
#set timeout { adaptive.start 0, adaptive.end 0 }
#set limit { states 10000, frags 5000 }
set loginterface $ext_if
set optimization normal
#set block-policy drop
#set require-order yes
#set fingerprints "/etc/pf.os"
## Normalization: reassemble fragments and resolve or reduce traffic ambiguities.
scrub in all
## Queueing: rule-based bandwidth control.
#altq on $ext_if bandwidth 2Mb cbq queue { dflt, developers, marketing }
#queue dflt bandwidth 5% cbq(default)
#queue developers bandwidth 80%
#queue marketing bandwidth 15%
## Translation
#nat on $ext_if from $internal_net to any -> ($ext_if)
## redirections
#rdr on $ext_if proto tcp from any to $external_addr/32 port 1234 -> 10.1.1.1 port 5678
## spamd-setup puts addresses to be redirected into table <spamd>.
#table <spamd> persist
#no rdr on { lo0, lo1 } from any to any
#rdr inet proto tcp from <spamd> to any port smtp -> 127.0.0.1 port 8025
block log all
### Localhost
pass out quick on lo0 all
pass in quick on lo0 all
#### ALL IN rules
## SHH
pass in log on $ext_if proto tcp from any to $ext_if port 553 keep state
## Ident
pass in log on $ext_if proto tcp from any to $ext_if port 113 keep state
## DNS
pass in log on $ext_if proto { tcp, udp } from any to $ext_if port 53 flags S/SA keep state
## PING
pass in inet proto icmp all icmp-type echoreq keep state
### ALL OUT rules
pass out all