1 # $NetBSD: soho_gw-npf.conf,v 1.5 2013/09/20 17:51:04 spz Exp $ 2 # 3 # SOHO border 4 # 5 # This is a natting border gateway/webserver/mailserver/nameserver 6 # IPv4 only 7 # 8 9 $ext_if = "wm0" 10 $ext_v4 = inet4(wm0) 11 $ext_addrs = { ifnet(wm0) } 12 13 $int_if = "wm1" 14 15 # a table to house e.g. block candidates in 16 table <1> type hash file "/usr/share/examples/npf/hashtablefile" 17 # feed this using "npfctl table 2 add 198.51.100.16/29" f.e. 18 table <2> type tree dynamic 19 20 $services_tcp = { http, https, smtp, domain, 6000, 9022 } 21 $services_udp = { domain, ntp, 6000 } 22 $localnet = { 198.51.100.0/24 } 23 24 # NAT outgoing to the address of the external interface 25 # Note: if $ext_if has multiple IP addresses (e.g. IPv6 as well), 26 # then the translation address has to be specified explicitly. 27 map $ext_if dynamic 198.51.100.0/24 -> $ext_v4 28 29 # NAT traffic arriving on port 9022 of the external interface address 30 # to host 198.51.100.2 port 22 31 map $ext_if dynamic 198.51.100.2 port 22 <- $ext_v4 port 9022 32 33 procedure "log" { 34 log: npflog0 35 } 36 37 group "external" on $ext_if { 38 pass stateful out final all 39 40 block in final from <1> 41 pass stateful in final family inet proto tcp to $ext_v4 port ssh \ 42 apply "log" 43 pass stateful in final proto tcp to $ext_addrs port $services_tcp 44 pass stateful in final proto udp to $ext_addrs port $services_udp 45 46 # Passive FTP 47 pass stateful in final proto tcp to $ext_addrs port 49151-65535 48 # Traceroute 49 pass stateful in final proto udp to $ext_addrs port 33434-33600 50 } 51 52 group "internal" on $int_if { 53 block in all 54 pass in final from <2> 55 pass out final all 56 } 57 58 group default { 59 pass final on lo0 all 60 block all 61 } 62