Freifunk Fulda/DNS

Aus Magrathea Laboratories e.V.
Wechseln zu: Navigation, Suche

Die Konfiguration der DNS Server unterscheidet sich für den Master und die Gateways. Im folgenden wird die Konfigurationen beschrieben und jeweils ein Hinweis angezeigt, ob der entsprechende Schritt auf dem Master oder auf den Gateways durchzuführen sind.

Installation

Durchzuführen auf: Master und Gateway


Dieser wird mit folgendem Kommando installiert

apt-get install bind9


Grundkonfiguration

Durchzuführen auf: Master und Gateway


Anschließend werden die Konfigurationsdateien bearbeitet. In der Datei named.conf.options werden grundsätzliche Einstellungen vorgenommen. Die Datei named.conf.local verweist auf unsere Zonendateien.

Datei /etc/bind/named.conf.options

options {
       directory "/var/cache/bind";

       dnssec-validation auto;

       recursion yes;
       allow-recursion { localnets; localhost; };

       auth-nxdomain no;    # conform to RFC1035
       listen-on-v6 { fd00:fffd:fffd::X; };    # ipv6 des gateway
       listen-on { 127.0.0.1; 10.185.0.X; };   # localhost und ipv4 des gateway
};

## for debugging purposes only. do not enable in production!
##
#logging {
#       category "default" { "debug"; };
#       category "general" { "debug"; };
#       category "database" { "debug"; };
#       category "security" { "debug"; };
#       category "config" { "debug"; };
#       category "resolver" { "debug"; };
#       category "xfer-in" { "debug"; };
#       category "xfer-out" { "debug"; };
#       category "notify" { "debug"; };
#       category "client" { "debug"; };
#       category "unmatched" { "debug"; };
#       category "network" { "debug"; };
#       category "update" { "debug"; };
#       category "queries" { "debug"; };
#       category "dispatch" { "debug"; };
#       category "dnssec" { "debug"; };
#       category "lame-servers" { "debug"; };
#       channel "debug" {
#               file "/tmp/nameddbg" versions 2 size 50m;
#               print-time yes;
#               print-category yes;
#       };
#};


TSIG Key für Zonentransfer

Achtung, der Key wurde bereits generiert und hinterlegt, jedoch ist TSIG bisher nicht in Verwendung. Die Umstellung erfolgt mit der Umstellung der Gateways 1 und 2 auf Saltstack


Der Zonentransfer zwischen Master und Slave Servern wird mittels TSIG gesichert. Dazu muss ein entsprechender Key generiert und auf den Systemen hinterlegt werden.

Master

Zunächst wird der Schlüssel auf dem Master Server generiert.

dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST -r /dev/urandom tsigkey

Es werden zwei Dateien erstellt, deren Name in etwa folgendermaßen aussieht:

Ktsigkey.+165+22334.key
Ktsigkey.+165+22334.private

Uns interessiert hier lediglich der tatsächlich generierte private Schlüssel.

cat Ktsigkey.+165+22334.private |grep Key

Der private Schlüssel wird jetzt auf dem Master Server hinterlegt (Datei /etc/bind/named.conf.tsigkeys)

key "fffd-axfr-tsig" {
        algorithm HMAC-SHA512;
        secret "O123456789abcdefO123456789abcdefO123456789abcdefO123456789abcdef==";
};

Die neue Datei muss natürlich auch geladen werden (Datei /etc/bind/named.conf)

include "/etc/bind/named.conf.tsigkeys";

Der Schlüssel kann nun in der Zonenkonfiguration verwendet werden (siehe weiter unten).


Slaves

Auch auf den Slave Servern muss der TSIG Schlüssel hinterlegt werden. Ausserdem teilen wir bind auch mit, von welchem Master der Key verwendet wird (Datei /etc/bind/named.conf.tsigkeys)

key "fffd-tsig" {
        algorithm HMAC-SHA512;
        secret "O123456789abcdefO123456789abcdefO123456789abcdefO123456789abcdef==";
};

server 10.185.0.11 {
        keys { fffd-tsig; };
};

server fd00:fffd:fffd::11 {
        keys { fffd-tsig; };
};

Die neue Datei muss natürlich auch geladen werden (Datei /etc/bind/named.conf)

include "/etc/bind/named.conf.tsigkeys";



Konfiguration der Zone (Master)

Durchzuführen auf: Master


Datei /etc/bind/named.conf.local

zone "fffd" {
        type master;
        notify yes;
        allow-transfer { 10.185.0.X; 10.185.0.Y; fd00:fffd:fffd::X; fd00:fffd:fffd::Y; };
        //allow-transfer { key "fffd-axfr-tsig" };
        file "/opt/fffd-dns/zones/db.fffd";
};

zone "services.fffd" {
        type master;
        notify yes;
        allow-transfer { 10.185.0.X; 10.185.0.Y; fd00:fffd:fffd::X; fd00:fffd:fffd::Y; };
        //allow-transfer { key "fffd-axfr-tsig" };
        file "/opt/fffd-dns/zones/db.services.fffd";
};

zone "nodes.fffd" {
        type master;
        notify yes;
        allow-transfer { 10.185.0.X; 10.185.0.Y; fd00:fffd:fffd::X; fd00:fffd:fffd::Y; };
        //allow-transfer { key "fffd-axfr-tsig" };
        file "/opt/fffd-dns/zones/db.nodes.fffd";
};

zone "0.185.10.in-addr.arpa" {
        type master;
        notify yes;
        allow-transfer { 10.185.0.X; 10.185.0.Y; fd00:fffd:fffd::X; fd00:fffd:fffd::Y; };
        //allow-transfer { key "fffd-axfr-tsig" };
        file "/opt/fffd-dns/zones/0.185.10.in-addr.arpa";
};

zone "0.0.0.0.d.f.f.f.d.f.f.f.0.0.d.f.ip6.arpa" {
        type master;
        notify yes;
        allow-transfer { 10.185.0.X; 10.185.0.Y; fd00:fffd:fffd::X; fd00:fffd:fffd::Y; };
        //allow-transfer { key "fffd-axfr-tsig" };
        file "/opt/fffd-dns/zones/0.0.0.0.d.f.f.f.d.f.f.f.0.0.d.f.ip6.arpa";
};

Die Zonendateien sowie ein Skript zum erstellen der nodes.fffd-Zone kommen aus GIT.

cd /opt
git clone https://github.com/freifunk-fulda/fffd-dns.git

Die Zone nodes.fffd wird automatisch generiert. Dazu kommt ein kleines Python-Skript zum Einsatz, das mittels Cron ausgeführt wird.

cp /opt/fffd-dns/cron.daily /etc/cron.daily/dns-nodenames

Das Skript muss initial einmal ausgeführt werden, damit die Zonendatei erstellt wird.

/etc/cron.daily/dns-nodenames

Hinweis: Das Python-Skript verwendet alfred-json um auf die A.L.F.R.E.D Informationen zuzugreifen. Weitere Informationen siehe unten.

Hinweis: Updates an der Zone werden über git durchgeführt. Änderungen am Repo werden durch den Master alle 10 Minuten geprüft. Dazu wird das Skript update-repo.sh aus dem Repo fffd-utils verwendet, das in einem Späteren Schritt im Artikel Freifunk Fulda/Gateway installiert wird.


Konfiguration der Zone (Slave)

Durchzuführen auf: Gateway


Datei /etc/bind/named.conf.local

zone "fffd" {
       type slave;
       masters { 10.185.0.15; fd00:65a8:93a4::15; };
       file "/opt/fffd-dns/zones/db.fffd";
};

zone "services.fffd" {
       type slave;
       masters { 10.185.0.15; fd00:65a8:93a4::15; };
       file "/opt/fffd-dns/zones/db.services.fffd";
};

zone "nodes.fffd" {
       type slave;
       masters { 10.185.0.15; fd00:65a8:93a4::15; };
       file "/opt/fffd-dns/zones/db.nodes.fffd";
};

zone "0.185.10.in-addr.arpa" {
       type slave;
       masters { 10.185.0.15; fd00:65a8:93a4::15; };
       file "/opt/fffd-dns/zones/0.185.10.in-addr.arpa";
};

zone "0.0.0.0.d.f.f.f.d.f.f.f.0.0.d.f.ip6.arpa" {
        type slave;
        masters { 10.185.0.15; fd00:65a8:93a4::15; };
        file "/opt/fffd-dns/zones/0.0.0.0.d.f.f.f.d.f.f.f.0.0.d.f.ip6.arpa";
};


Der Benutzer bind benötigt Schreibrechte auf die Zonendateien.

mkdir -p /opt/fffd-dns/zones
chown bind /opt/fffd-dns/zones

Lokaler DNS-Resolver

Die Gateways sollten den eigenen DNS-Server für lokale Adressauflösung verwenden. Alternativ wird der DNS-Master angegeben. Der dritte DNS-Server (OpenNIC) wird als Fallback verwendet, falls auf dem Gateway sowohl der lokale DNS-Dienst als auch die Verbindung zum Freifunk-Netz (fastd) ausfällt.

Datei /etc/resolv.conf

nameserver 127.0.0.1
nameserver 10.185.0.15
nameserver 84.200.83.161

Starten

Durchzuführen auf: Master und Gateway


Anschließend bind starten

/etc/init.d/bind9 restart