You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Blackyfff 9ba6d7d631 fix master zone removed from config when no change 4 months ago
etc/ffdns Move Remote-ACL to config file 4 months ago
usr/lib/ffdns fix master zone removed from config when no change 4 months ago
LICENSE.txt change file extension license 5 months ago
README.md Update Readme 5 months ago

README.md

dns-scripts

Dieses Git enthält eine Sammlung an Scripten zur Aktualisierung der Zonen für fff.community. Dabei werden aus der Forward-Zone und optional eigener Subdomain (durch community-Zonefile gesteuert) auch passende Reverse-Zonen für unsere internen RFC 1918 und RFC 4193 Adressen erzeugen.

Es werden bei eigener Subdomain die momentan vergebenen Adressen von dnsmasq und odhcpd (alles unter /tmp/hosts/) inkludiert. Das ermöglicht eine Namensauflösung für Freifunk-Teilnehmer ohne manuelle Konfiguration. Damit kann jeder Freifunk-Teilnehmer ein gültiges TLS-Zertifikat bekommen, sofern DHCPv6 am Gateway aktiviert ist.

Unterstützt wird Split-DNS für Freifunk-interne und -externe Anfragen, dabei kann auch eine Subdomain angelegt werden unter welcher nur extern erreichbare IPs herausgegeben werden.

DNSSEC wird für jede Zone unterstützt, allerdings nur für die Hauptzone mit mehreren Servern. Für Subdomainserver darf mit DNSSEC nur jeweils ein Server authorativ sein.

Installation

Systemanforderungen

curl

bind9

named-checkzone (z.B. bei bind oder bind-tools enthalten)

für DNSSEC: delv; bind9 >= 9.16.18

dns-scripts klonen

Die Scripte müssen geklont werden, oder anderweitig auf dem Server abgelegt werden. Die Ordner sind im Git vorgegeben. /usr/lib/ffdns für die Scripte und /etc/ffdns für die Konfigurationsdateien.

git clone https://git.freifunk-franken.de/freifunk-franken/dns-scripts.git

konfigurieren

Die Datei /etc/ffdns/community.conf wird für eine Community konfiguriert(vorzugsweise im Git), und sollte nicht lokal geändert werden.

Die Datei /etc/ffdns/local.conf muss serverspezifisch konfiguriert werden.

Für die Konfiguration der Zonendatei siehe https://git.freifunk-franken/freifunk-franken/dns

Cron anlegen

Schließlich muss noch ein Cron angelegt werden, der regelmäßig das Skript aufruft:

1-59/5 *   * * *   /usr/lib/ffdns/update-dns.sh

DNS-Server konfigurieren

Dann muss noch der DNS Server bind eingerichtet werden. Andere Distributionen sind auch möglich, aber DNSSEC und automatische Konfiguration der verschiedenen Zonen müssen dann selbst gelöst werden.

Für bind werden durch die Scripte für jeden view include-Dateien angelegt (z.B. icvpn-internal-view.conf) und zusätzlich eine icvpn-acl.conf:

Konfiguration:

$ cat named.conf.local 
[..]

acl icvpnlocal {
	10.0.0.0/8;
	172.16.0.0/12;
	fc00::/7;
};
include "/etc/bind/icvpn-acl.conf"; # auto-generated

[..]

options {
	[..] # eigene Optionen

	check-names master warn; # Wichtig, da sonst Hostnamen mit _ (z.B.: HUAWEI_P30_lite ) bind nicht laden lassen
};

[..]

view "icvpn-internal-view" {    
	match-clients { icvpnrange; localhost; };
	allow-query-cache { any; }

    [..] # eigene Optionen


	include "/etc/bind/icvpn-internal-view.conf"; # auto-generated

	include "/etc/bind/icvpn-zones.conf"; # Nicht vergessen ;)

    [..]	
};

view "external-view" {
	match-clients { any; };
    [..] # eigene Optionen
	
	include "/etc/bind/external-view.conf"; # auto-generated
    
    [..]	
};


[..]

Beispielkonfiguration mit DNSSEC:

[..]

options {
	[..] # eigene Optionen
};

dnssec-policy <Name frei wählbar> { # Name muss in der config gesetzt werden
	keys {
		ksk key-directory lifetime unlimited algorithm ECDSAP384SHA384; # Alle Server einer Domain müssen den gleichen Algorithmus für ksk wählen
		zsk key-directory lifetime P30D algorithm ECDSAP384SHA384; # Alle Server einer Domain  müssen den gleichen Algorithmus für zsk wählen
	};
	max-zone-ttl 3600;
	nsec3param;
};

[..]

Konfiguration der Zonendatei

Einträge generell

Alle Einträge sollten im relativen Schema vorliegen, also ohne die Rootdomain und ohne abschließenden Punkt.

Subdomains

Subdomains der Rootzone können von Root-Servern selbst oder auch von jedem anderen Server gehostet werden.

Subdomains sollten im folgenden Format angelegt werden

<Subdomain> IN NS <Serverhostname>[ ; Subnets:[ <SubnetzIPv4>/<Subnetzmaske>| <SubnetzIPv6>/<Subnetzmaske>]+]?

z.B.:

herpf                       IN NS     dns.herpf.fff.community. ; Subnets: 10.50.250.0/24 fd43:5602:29bd:62::/64

Serverhostname muss mit der Konfiguration in local.conf übereinstimmen und muss absolut sein (mit abschließendem Punkt).

Die Subnetzparameter sind für die Delegierung und Erstellung der Reversezonen notwendig.

Sofern noch nicht vorhanden wird dann eine neue Zonendatei für diese Subdomain erstellt. Diese darf dann auch oberhalb der Zeile

;### Leases ###

wie die Rootzonendatei editiert werden.

Subsubdomains

Auch unterhalb von bereits delegierten Subdomains können beliebig viele weitere Subdomains bedient werden.

Dazu muss in local.conf angegeben werden wo die Zonendatei der nächst höheren Zone zu erreichen ist.