DNS-Server – die besten Beiträge

Pi-Hole als DNS-Resolver mit Problemen?

Hintergundgeschichte:

Ich habe für meine Famillie einen kleinen Home-Server errichtet der als NAS und DNS-Resolver (Pi-hole) genutzt wird. Das Pi-Hole nutzen ALLE Geräte im Netzwerk.

Es gibt jetzt aber zwei Probleme wo ich nicht genau weiß warum oder was das ist.

Mir wurde berichtet, dass ein Laptop teilweise nur sehr langsam Domains auflösen konnte und es sich auch nicht direkt mit dem Netzwerklaufwerk verbinden konnte (ob das jetzt mit Pi-hole zusammenhängt weiß ich nicht) und damit das Netzwerklaufwerk wieder funktioniert brauchte es einen Neustart des Netzwerkes. Das war bis jetzt, soweit ich weiß nur einmal von dem her habe ich es jetzt in den Hintergrund geschoben. Bei der langsamen DNS auslöfung konnte ich selber noch nicht bemerken und auch zu diesem Zeitpunkt wo das Problem bestand konnten die Anfragen vom Pi-Hole von diesem besagten Gerät eigentlich recht schnell bearbeitet werden. Also stecke ich hier jetzt auf dem Schlauch woran, dass problem liegen kann.

So und jetzt zum zweiten größerem Problem: Ein Smartphone (Huawai) kann sich nicht mehr mit dem W-Lan verbinden, ob das jetzt ein anderes Problem ist oder mit dem Pi-Hole und den veränderten Einstellungen zusammen hängt kann ich auch nicht sagen. (Beim Router wurde nur der DNS-Resolver verändert).

Ich bräuchte mal eure Hilfe wo ich weiter forschen könnte um diese Probleme zu beheben.

Server, Internet, WLAN, Linux, Netzwerk, DNS, IP-Adresse, Router, DNS-Server, OMV, Openmediavault, Pi Hole, pihole

Wie sende ich DNS Cookies mit dnslib?

Ich möchte mit dnslib die DNS-Antworten von den jeweiligen Anfragen mit einem DNS-Cookie versehen. Ich habe auch bereits etwas dafür in meinen Code implementiert, jedoch funktioniert das noch nicht so. Kann mir jemand sagen, was ich da brauche?

Der Code:

import socket
from dnslib import *

DNS_PORT = 53

dns_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
dns_socket.bind(('', DNS_PORT))

print(f"DNS-Server hört auf Port {DNS_PORT}...")

def dns_forward(domain):
    try:
        ip_address = socket.gethostbyname(domain)
        return ip_address
    except socket.error:
        return '185.199.111.153' #Error 404

while True:
    data, address = dns_socket.recvfrom(1024)

    dns_message = DNSRecord.parse(data)
    dns_request = str(dns_message.q.qname)
    
    dns_answer = dns_forward(dns_request)
    
    client_ip = address[0]
    client_port = address[1]

    dns_cookie = ("4096")

    if client_ip == '192.168.0.113'
        dns_response = DNSRecord(DNSHeader(id=dns_message.header.id, qr=1, aa=1, ra=1), q=dns_message.q)
        dns_response.add_answer(RR(dns_request, QTYPE.A, rdata=A(dns_answer)))
        dns_response.add_ar(RR(dns_request, QTYPE.OPT, rdata=TXT(dns_cookie)))
        dns_socket.sendto(dns_response.pack(), address)
    
    print(f"DNS-Anfrage von {client_ip} mit Port {client_port} für {dns_request} die Antwort ist {dns_answer}")

Die Fehlermeldung:

Traceback (most recent call last):
 File "c:\Users\Stoppersocke\Documents\Projects\MDM Bypass\test5.py", line 35, in <module>
  dns_socket.sendto(dns_response.pack(), address)
           ^^^^^^^^^^^^^^^^^^^
 File "C:\Users\Stoppersocke\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\dnslib\dns.py", line 339, in pack
  ar.pack(buffer)
 File "C:\Users\Stoppersocke\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\dnslib\dns.py", line 885, in pack
  for opt in self.rdata:
TypeError: 'TXT' object is not iterable
DNS, Netzwerktechnik, Programmiersprache, Python, DNS FEHLER, DNS-Server, Python 3

Meistgelesene Beiträge zum Thema DNS-Server