[gelöst] Lokaler DNS für LetsEncrypt und WireGuard mit bind9

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
grizzelbee
Beiträge: 7
Registriert: 11.04.2022 08:16:44

[gelöst] Lokaler DNS für LetsEncrypt und WireGuard mit bind9

Beitrag von grizzelbee » 16.06.2023 18:32:55

Hallo Zusammen,

mit Linux, Windows und Netzwerken beschäftige ich mich zwar schon eine Weile, aber bislang reichte der DNS auf der Fritzbox - deshalb habe ich nur eine recht generelle Vorstellung davon wie DNS funktioniert. Deshalb benötige ich etwas Hilfe bei meinem Projekt.

Ziel:
Ich möchte einen lokalen DNS betreiben um Let'sEncrypt SSL Zertifikate für meine beiden Server nutzen zu können und gleichzeitig im WireGuard-VPN Namensauflösung zu bekommen - Für den Rest soll die FritzBox weiter Haupt-DNS und DHCP Server bleiben (falls möglich).

Aktueller Stand:
Ich habe bind9 auf einem Debian 12 Bookworm installiert und lt. einiger Internet Tutorials konfiguriert.
Aktuell ist bind9 ausschließlich auf diesem Debian 12 per manueller Konfig als DNS eingetragen.

Was funktioniert:
Bind löst auf diesem Rechner die Anfragen an home.meineDomain.de sauber und schnell auf - wie gewünscht und erwartet. Das ist die Basis-Domain für die LetsEncrypt Wildcard Zertifikate. Andere Namen auf der FritzBox oder dem Internet werden zwar grundsätzlich ebenfalls aufgelöst, aber es dauert sehr lange.

Was nicht funktioniert:
Wenn ich nicht von bind unmittelbar verwaltete IPs (*.home.meineDomain.de - aktuell 2 Stück) abfrage, dauert es ziemlich lange (ich vermute das da timeouts greifen) bis ich eine Antwort bekomme.
Mit der Konfig für das WireGuard-VPN (IP-Bereich 100.61.1.xxx) habe ich mich noch nicht beschäftigt.

Vermutung:
Ich habe den Eindruck, dass ich in der Konfig irgendwie was mit den IPs vermurkst habe - die Ausgaben von nslookup sehen nach IPv6-Fallback aus.

Fragestellung:
1. Was läuft hier quer und wie fixe ich das?
2. Wie müsste die WireGuard-Konfig aussehen, damit ich auch über das VPN die selben Hostnamen verwenden kann?


Programmausgaben:

Code: Alles auswählen

user@server2:/etc/bind$ nslookup sevrver1.home.meineDomain.de
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   server1.home.meineDomain.de
Address: 192.168.xxx.2

user@server2:/etc/bind$ nslookup meineDomain.de
;; communications error to 127.0.0.1#53: timed out
;; communications error to 127.0.0.1#53: timed out
;; Got SERVFAIL reply from 127.0.0.1, trying next server
;; Got SERVFAIL reply from ::1, trying next server
Server:         fd00::2e91:abff:fe83:xxxx
Address:        fd00::2e91:abff:fe83:xxxx#53

Non-authoritative answer:
Name:   meineDomain.de
Address: 178.254.0.xx
;; communications error to 127.0.0.1#53: timed out
;; communications error to 127.0.0.1#53: timed out
;; Got SERVFAIL reply from 127.0.0.1, trying next server
;; Got SERVFAIL reply from ::1, trying next server

user@server2:/etc/bind$ nslookup dose01.fitz.box
;; communications error to 127.0.0.1#53: timed out
;; communications error to 127.0.0.1#53: timed out
;; Got SERVFAIL reply from 127.0.0.1, trying next server
;; Got SERVFAIL reply from ::1, trying next server
Server:         fd00::2e91:abff:fe83:xxxx
Address:        fd00::2e91:abff:fe83:xxxx#53

** server can't find dose01.fitz.box: NXDOMAIN

user@server2:/etc/bind$ ping dose01.fritz.box
PING dose01.fritz.box (192.168.xxx.34) 56(84) bytes of data.
64 bytes from 192.168.175.34 (192.168.xxx.34): icmp_seq=1 ttl=255 time=23.0 ms
64 bytes from 192.168.175.34 (192.168.xxx.34): icmp_seq=2 ttl=255 time=40.5 ms
64 bytes from 192.168.175.34 (192.168.xx.34): icmp_seq=3 ttl=255 time=3.51 ms
^C
--- dose01.fritz.box ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 3.506/22.347/40.534/15.123 ms
user@server2:/etc/bind$
Konfig-Files
/etc/bind/named.conf.local

Code: Alles auswählen

// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "home.meineDomain.de"{
        type master;
        file "/var/cache/bind/db.home.meineDomain.de";
        // allow-transfer {xxx.xxx.xxx.xxx;}; // secondary DNS server of the hoster
};

zone "fritz.box" {
        type forward;
        forward only;
        forwarders {192.168.xxx.1;};
        // forwarder = fritzBox
};

zone "xxx.168.192.in-addr.arpa"{
        type master;
        file "/var/cache/bind/db.rev-local";
        allow-transfer {192.168.xxx.1;};
        // allow transfer to fritzBox
};
/etc/bind/named.conf.options

Code: Alles auswählen

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

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        forwarders {
                192.168.xxx.1;80.241.218.68;46.182.19.48;
                // fritzBox; public DNS; public DNS
        };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        listen-on    { any; };
        listen-on-v6 { any; };
};
/var/cache/bind/db.home.meineDomain.de

Code: Alles auswählen

;; db.home.meineDomain.de
;; Forward lookup zone

;$origin db.home.meineDomain.de
$TTL 1h
@       IN      SOA     home.meineDomain.de. user.meineDomain.de. 2 10800 3600 604800 3600
; Name Server Information
@       IN      NS      server2.home.meineDomain.de.
@       IN      NS      server1.home.meineDomain.de.
; A-Record - Hostname to IP Address
;               IN      A       192.168.xxx.3
server1         IN      A       192.168.xxx.2
server2         IN      A       192.168.xxx.3
; # End of File

/var/cache/bind/db.rev-local

Code: Alles auswählen

;; db.rev-local
;; Reverse lookup zone

;$origin db.rev-local
$TTL 604800
@       IN      SOA     home.meineDomain.de. user.meineDomain.de. 2 10800 3600 604800 3600
; Name Server Information
;@      IN      NS      server1.home.meineDomain.de.
@       IN      NS      server2.home.meineDomain.de.
; Reverse lookup for name server
2       IN      PTR    server2.home.meineDomain.de
; PTR record IP address to Hostname
2       IN      PTR     server1.home.meineDomain.de.
3       IN      PTR     server2.home.meineDomain.de.
; # End of file
Zuletzt geändert von grizzelbee am 18.06.2023 13:40:34, insgesamt 2-mal geändert.

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Lokaler DNS für LetsEncrypt und WireGuard mit bind9

Beitrag von bluestar » 16.06.2023 19:15:38

Soweit ich das auf den ersten Blick sehe, fehlt dir allow-recursion { 192.168.xxx.0/24; }; in deinen options.

Was LetsEncrypt mit deiner Domain home.deineDomain.de angeht, nun dazu muss die Zone öffentlich erreichbar sein, dazu bräuchtest du ne feste IPv4 bzw. IPv6 Adresse. Dann brauchst du in der Zone „meineDomain.de“ einen NS Eintrag für „home.deineDomain.de“ und noch einen Glue-Record für IPv4 bzw. IPv6 - je nachdem welches Protokoll du nutzen willst/kannst.

grizzelbee
Beiträge: 7
Registriert: 11.04.2022 08:16:44

Re: Lokaler DNS für LetsEncrypt und WireGuard mit bind9

Beitrag von grizzelbee » 16.06.2023 21:04:24

@bluestar

Perfekte Antwort! Dankeschön!
Jetzt ist das schnell wie ein Blitz!

Das mit Let'sEncrypt will ich über die DNS-Challenge machen. Da gibt es Tutorials - aber dafür ist halt der lokale DNS eine Voraussetzung, damit der andere Antworten für home.meineDomain.de gibt als für meineDomain.de. Die liegt nämlich öffentlich bei einem Hoster. Meine Server sind nicht vom iNet aus erreichbar - und das soll auch so bleiben. ;)
Dann kommt noch ein TXT-Record in den DNS-Eintrag von meineDomain.de und dann sollte das gehen.

Bei WireGuard werde ich dann mal meinen schönen neuen schnellen DNS eintragen - mit etwas Glück klappt das ja.

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Lokaler DNS für LetsEncrypt und WireGuard mit bind9

Beitrag von bluestar » 16.06.2023 21:56:59

grizzelbee hat geschrieben: ↑ zum Beitrag ↑
16.06.2023 21:04:24

Das mit Let'sEncrypt will ich über die DNS-Challenge machen. Da gibt es Tutorials - aber dafür ist halt der lokale DNS eine Voraussetzung, damit der andere Antworten für home.meineDomain.de gibt als für meineDomain.de. Die liegt nämlich öffentlich bei einem Hoster. Meine Server sind nicht vom iNet aus erreichbar - und das soll auch so bleiben. ;)
Dann kommt noch ein TXT-Record in den DNS-Eintrag von meineDomain.de und dann sollte das gehen.
Ja das funktioniert natürlich auch.

Antworten