ext_if = "{ igb0 igb1 ix0 ix1 wlan0 }" jail_net_v4 = "10.193.223.0/24" dhcp = "{ bootpc, bootps }" # allow = "{ nat_uplink0 }" tcp_pass_in = "{ 22 }" udp_pass_in = "{ 53 51820 }" # Rules must be in order: options, normalization, queueing, translation, filtering # options set skip on lo # redirections nat on $ext_if inet from $jail_net_v4 to { any, !$jail_net_v4 } tag ALLOWED -> (wlan0) rdr on nat_uplink0 inet proto {tcp, udp} from any to 10.193.223.1 port 53 tag ALLOWED -> 1.1.1.1 port 53 # filtering block log all pass quick on $ext_if tagged ALLOWED pass out on $ext_if # We pass on the interfaces listed in allow rather than skipping on # them because changes to pass rules will update when running a # `service pf reload` but interfaces that we `skip` will not update (I # forget if its from adding, removing, or both. TODO: test to figure # it out) # pass quick on $allow pass on $ext_if proto icmp all pass on $ext_if proto icmp6 all pass in on $ext_if proto tcp to any port $tcp_pass_in pass in on $ext_if proto udp to any port $udp_pass_in pass quick on $ext_if proto udp from any port $dhcp to any port $dhcp pass in on nat_uplink0 proto udp from any to any port { 53 51820 }