pf.conf revision 1.19
1#	$OpenBSD: pf.conf,v 1.19 2003/03/24 01:47:28 ian Exp $
2#
3# See pf.conf(5) and /usr/share/pf for syntax and examples.
4# Required order: options, normalization, queueing, translation, filtering.
5# Macros and tables may be defined and used anywhere.
6# Note that translation rules are first match while filter rules are last match.
7
8# Macros: define common values, so they can be referenced and changed easily.
9#ext_if="ext0"	# replace with actual external interface name i.e., dc0
10#int_if="int0"	# replace with actual internal interface name i.e., dc1
11#internal_net="10.1.1.1/8"
12#external_addr="192.168.1.1"
13
14# Tables: similar to macros, but more flexible for many addresses.
15#table <foo> { 10.0.0.0/8, !10.1.0.0/16, 192.168.0.0/24, 192.168.1.18 }
16
17# Options: tune the behavior of pf, default values are given.
18#set timeout { interval 30, frag 10 }
19#set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
20#set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
21#set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
22#set timeout { icmp.first 20, icmp.error 10 }
23#set timeout { other.first 60, other.single 30, other.multiple 60 }
24#set limit { states 10000, frags 5000 }
25#set loginterface none
26#set optimization normal
27#set block-policy drop
28#set require-order yes
29
30# Normalization: reassemble fragments and resolve or reduce traffic ambiguities.
31#scrub in all
32
33# Queueing: rule-based bandwidth control.
34#altq on $ext_if bandwidth 2Mb cbq queue { dflt, developers, marketing }
35#queue dflt bandwidth 5% cbq(default)
36#queue developers bandwidth 80%
37#queue marketing  bandwidth 15%
38
39# Translation: specify how addresses are to be mapped or redirected.
40# nat: packets going out through $ext_if with source address $internal_net will
41# get translated as coming from the address of $ext_if, a state is created for
42# such packets, and incoming packets will be redirected to the internal address.
43#nat on $ext_if from $internal_net to any -> ($ext_if)
44
45# rdr: packets coming in on $ext_if with destination $external_addr:1234 will
46# be redirected to 10.1.1.1:5678. A state is created for such packets, and
47# outgoing packets will be translated as coming from the external address.
48#rdr on $ext_if proto tcp from any to $external_addr/32 port 1234 -> 10.1.1.1 port 5678
49
50# rdr outgoing FTP requests to the ftp-proxy
51#rdr on $int_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021
52
53# spamd-setup puts addresses to be redirected into table <spamd>.
54#table <spamd> persist
55#no rdr on { lo0, lo1 } from any to any
56#rdr inet proto tcp from <spamd> to any port smtp -> 127.0.0.1 port 8025
57
58# Filtering: the implicit first two rules are
59#pass in all
60#pass out all
61
62# block all incoming packets but allow ssh, pass all outgoing tcp and udp
63# connections and keep state, logging blocked packets.
64#block in log all
65#pass  in  on $ext_if proto tcp from any to $ext_if port 22 keep state
66#pass  out on $ext_if proto { tcp, udp } all keep state
67
68# pass incoming packets destined to the addresses given in table <foo>.
69#pass in on $ext_if proto { tcp, udp } from any to <foo> port 80 keep state
70
71# pass incoming ports for ftp-proxy
72#pass in on $ext_if inet proto tcp from any to $ext_if user proxy keep state
73
74# assign packets to a queue.
75#pass out on $ext_if from 192.168.0.0/24 to any keep state queue developers
76#pass out on $ext_if from 192.168.1.0/24 to any keep state queue marketing
77