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