dns-scripts/README.md

116 lines
3.0 KiB
Markdown
Raw Normal View History

2020-08-01 10:21:45 +02:00
# fff-scripts
2021-01-15 17:12:33 +01:00
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.
Weiterhin 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.
2020-08-01 10:21:45 +02:00
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.
2020-08-01 10:21:45 +02:00
## Installation
#### Systemanforderungen
curl
2021-01-15 21:26:07 +01:00
bind9
named-checkzone (z.B. bei bind oder bind-tools enthalten)
für DNSSEC: delv; bind9 >= 9.16.18
2021-01-15 17:12:33 +01:00
2020-08-01 10:21:45 +02:00
#### dns-scripts klonen
2021-01-15 21:26:07 +01:00
Die Scripte müssen geklont werden, oder anderweitig in einem Ordner auf dem Server abgelegt werden. Dabei ist aktuell noch die Position wichtig, da das Skript derzeit absolute Pfade verwendet (oder den Pfad in update-dns.sh anpassen)
2020-08-01 10:21:45 +02:00
```
2021-01-15 17:12:33 +01:00
git clone https://git.freifunk-franken.de/freifunk-franken/dns-scripts.git /usr/lib/ffdns
2020-08-01 10:21:45 +02:00
```
#### konfigurieren
In der Datei update-dns.sh die Konfigurationsparameter setzen.
2020-08-01 10:21:45 +02:00
#### Cron anlegen
2021-01-23 23:37:49 +01:00
Schließlich muss noch ein Cron angelegt werden, der regelmäßig das Skript aufruft:
2020-08-01 10:21:45 +02:00
```
1-59/5 * * * * /usr/lib/ffdns/update-dns.sh
2020-08-01 10:21:45 +02:00
```
#### DNS-Server konfigurieren
2021-01-15 17:12:33 +01:00
Dann muss nur noch der DNS Server, z.B. `bind`, eingerichtet werden.
2021-01-15 21:26:07 +01:00
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:
2021-01-15 17:12:33 +01:00
Konfiguration:
```
$ cat named.conf.local
[..]
acl icvpnlocal {
10.0.0.0/8;
172.16.0.0/12;
2021-01-15 17:12:33 +01:00
fc00::/7;
};
2021-01-15 17:12:33 +01:00
include "/etc/bind/icvpn-acl.conf"; # auto-generated
[..]
options {
2021-01-15 17:12:33 +01:00
[..] # 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; };
2021-01-15 17:12:33 +01:00
allow-query-cache { any; }
[..] # eigene Optionen
2021-01-15 17:12:33 +01:00
include "/etc/bind/icvpn-internal-view.conf"; # auto-generated
2021-01-15 17:12:33 +01:00
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;
};
[..]
```