This is an old revision of the document!
Unbound Howto
Base setup
server:
verbosity: 1
log-queries: no
port: 53
# ----------------------
# optimizations https://nlnetlabs.nl/documentation/unbound/howto-optimise/
# ----------------------
num-threads: 2
msg-cache-slabs: 2
rrset-cache-slabs: 2
infra-cache-slabs: 2
key-cache-slabs: 2
so-reuseport: yes
key-cache-size: 8m # default 4m
neg-cache-size: 2m # default 1m
rrset-cache-size: 100m # rrset=msg*2 # default 4m
msg-cache-size: 50m # default 4m
# depends on number of cores: 1024/cores - 50
outgoing-range: 462
num-queries-per-thread: 231 # outgoing-range/2
so-rcvbuf: 4m
so-sndbuf: 4m
outgoing-num-tcp: 100 #default 10
incoming-num-tcp: 100 #default 10
stream-wait-size: 8m #default 4m
# ----------------------
statistics-interval: 1200
# ----------------------
port: 53
interface: 0.0.0.0
interface: ::0
#
# tls setup get ssl keys from letsencrypt
#
interface: 0.0.0.0@853
interface: ::0@853
tls-service-key: /etc/unbound/privkey.pem
tls-service-pem: /etc/unbound/fullchain.pem
#
use-syslog: yes
# first start
# drill . ns @161.97.219.84 > named.cache.opennic
# dig -t DNSKEY . @161.97.219.84 | dnssec-dsfromkey -1 -f - . > opennic.dnskey
# dig -t DNSKEY . @161.97.219.84 | dnssec-dsfromkey -2 -f - . > opennic.dnskey
root-hints: "/etc/unbound/named.cache.opennic"
trust-anchor-file: "/etc/unbound/opennic.dnskey"
# dnssec not working at the moment for all domains
harden-dnssec-stripped: no
harden-glue: no
aggressive-nsec: no
do-not-query-localhost: no
access-control: 0.0.0.0/0 allow
access-control: ::0/0 allow
#
hide-identity: yes
identity: "pope.vatican.va"
hide-version: yes
version: "0.0"
tls-system-cert: yes
#ip-ratelimit-factor: 10
#ip-ratelimit: 60
ratelimit: 100
include: /etc/unbound/opennic_server.conf
local-zone: "168.192.in-addr.arpa." transparent
local-zone: "10.in-addr.arpa." transparent
local-zone: "16.172.in-addr.arpa." transparent
local-zone: "17.172.in-addr.arpa." transparent
local-zone: "18.172.in-addr.arpa." transparent
local-zone: "19.172.in-addr.arpa." transparent
local-zone: "20.172.in-addr.arpa." transparent
local-zone: "21.172.in-addr.arpa." transparent
local-zone: "22.172.in-addr.arpa." transparent
local-zone: "23.172.in-addr.arpa." transparent
local-zone: "24.172.in-addr.arpa." transparent
local-zone: "25.172.in-addr.arpa." transparent
local-zone: "26.172.in-addr.arpa." transparent
local-zone: "27.172.in-addr.arpa." transparent
local-zone: "28.172.in-addr.arpa." transparent
local-zone: "29.172.in-addr.arpa." transparent
local-zone: "30.172.in-addr.arpa." transparent
local-zone: "31.172.in-addr.arpa." transparent
local-zone: "0.in-addr.arpa." transparent
local-zone: "127.in-addr.arpa." transparent
local-zone: "254.169.in-addr.arpa." transparent
local-zone: "2.0.192.in-addr.arpa." transparent
local-zone: "100.51.198.in-addr.arpa." transparent
local-zone: "113.0.203.in-addr.arpa." transparent
local-zone: "255.255.255.255.in-addr.arpa." transparent
local-zone: "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." transparent
local-zone: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." transparent
local-zone: "d.f.ip6.arpa." transparent
local-zone: "8.e.f.ip6.arpa." transparent
local-zone: "9.e.f.ip6.arpa." transparent
local-zone: "a.e.f.ip6.arpa." transparent
local-zone: "b.e.f.ip6.arpa." transparent
local-zone: "8.b.d.0.1.0.0.2.ip6.arpa." transparent
local-zone: "onion." always_null
# test local
# just an example
#local-zone: "porno." static
#local-data: 'porno. IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800'
#local-data: 'rechner.porno. IN A 127.0.0.1'
remote-control:
control-enable: yes
Refresh script
#!/usr/bin/perl
use strict;
use warnings;
use XML::Parser;
use Data::Dumper;
my @bla = `wget --no-check-certificate -q -O - https://servers.opennic.org?tier=1`;
my $done=0;
my $res="";
while ( @bla ) {
my $l = shift @bla;
unless ($done) {
if ( $l =~ /opennic\.glue/ ) {
$done++;
$res = $l;
}
}
}
$res =~ s/\<p\>//g;
$res =~ s/\<\/p\>//g;
$res =~ s/\<span\>//g;
$res =~ s/\<\/span\>//g;
$res =~ s/\<span\sclass=\'host\'[^\>]+\>//g;
$res =~ s/\<a.+\>(.+)\<\/a\>//;
$res =~ s/\<wbr\>/:/g;
if ( $res =~ /\>(\d+\.\d+\.\d+\.\d+)\</ ) {
print $1 . "\n";
}
if ( $res =~ /\>([0-9A-Fa-f]+:\S+)\</ ) {
print $1 . "\n";
}