- Node.js (v14 oder höher)
- NPM (Node Package Manager)
- Root-Rechte für Port 53 (Standard-DNS-Port)
- Erstelle ein neues Verzeichnis und initialisiere ein Node.js-Projekt:
mkdir anycast-nameserver
cd anycast-nameserver
npm init -y- Installiere die benötigten Abhängigkeiten:
npm install dns2 axios geoip-lite-
Kopiere den Code in eine Datei
server.js -
Starte den Server:
sudo node server.jsRoot-Rechte (sudo) werden benötigt, da der DNS-Server auf Port 53 läuft.
Der Nameserver übernimmt nun DNS-Anfragen und leitet sie an die nächstgelegene IP-Adresse aus der API weiter. Um eine Domain über diesen Nameserver zu verwenden:
- Konfiguriere die betreffenden Domains, dass sie diesen Nameserver als autoritativen DNS-Server verwenden.
- Stelle sicher, dass die IPs aus der API die entsprechenden Dienste bereitstellen.
- Der Server fragt regelmäßig die API
https://staticapi.fastasfuck.net/locationsab, um verfügbare IP-Adressen zu erhalten. - Alle 5 Minuten wird für jede IP-Adresse geprüft, ob der Server auf TCP-Port 25565 erreichbar ist.
- Bei DNS-Anfragen wird anhand der IP-Adresse des anfragenden Clients dessen ungefährer Standort ermittelt.
- Die geografisch nächstgelegene erreichbare IP-Adresse aus der API wird als Antwort zurückgegeben.
- Wenn keine Server erreichbar sind, wird als Fallback die geografisch nächste IP verwendet.
- DNS-Anfragen werden sowohl über TCP als auch UDP beantwortet.
- Erweiterte Fehlerbehandlung und Fallback-Strategien
- Unterstützung für verschiedene Anfrage-Typen (A, AAAA, CNAME, etc.)
- Lastenausgleich zwischen mehreren nahen IPs
- Cache-Mechanismen für DNS-Anfragen
- Monitoring und Logging-Funktionen
- Konfigurationsdatei für anpassbare Einstellungen