On Sun, 23 Sep 2018 12:21:36 +0800 Fung wrote:
> simple router build with OpenBSD
> Wan a.b.c.d
> Lan 192.168.0.1/24
> Unbound run for DNS cache in 127.0.0.1
> 
> 
> we want:
> no mater a client pc set dns to any address (  8.8.8.8 or 9.9.9.9 )
> all clients' dns query are redirect to the localhost cache in the
> router 
> 
> 
> Can we achieve using pf.conf?

Yes Fung;- block everything in & out, then permit only what you want:

ext_if="blah"
lan_if="blah"


set skip on lo
set block-policy drop


match in all scrub ( random-id reassemble tcp )


match out on $ext_if inet \
        from $lan_if:network \
        to any \
        nat-to $ext_if


block in all
block in log on $ext_if
block return in on $lan_if
block return out

# DNS:

# Notify/query:
pass out on $ext_if inet proto {udp, tcp} \
        from $ext_if port > 1023 \
        to any port domain \
        user {_nsd, _unbound}


# Let LAN clients query us:
pass in on $lan_if inet proto {udp, tcp} \
        from $lan_if:network port > 1023 \
        to $lan_if port domain \
        user root \
        modulate state


# debug:
pass out inet proto {udp, tcp} \
        from any port > 1023 \
        to any port domain \
        group hostmasters


block in from no-route
block in from $bogon
block return out to $bogon
block on ! lo inet6

antispoof for {lo0, $lan_if, $ext_if} inet


Configure 'domain-name-servers' in dhcpd.conf(5).


Cheers,
-- 
Craig Skinner | http://linkd.in/yGqkv7

Reply via email to