Wie verknüpfe ich DNS-Anfragen mit den Anfragen an den Webserver, der diesen Domänennamen hostet?

Wie verknüpfe ich DNS-Anfragen mit den Anfragen an den Webserver, der diesen Domänennamen hostet?

Wir haben einen Domänennamen registriert (sagen wir „example.com“) und möchten sehen, wer versucht, den Domänennamen aufzulösen und welche Art von Anfragen er an den Webserver dieses Domänennamens sendet.

Zu diesem Zweck richten wir einen Nameserver ein und sammeln die Protokolle von BIND, um herauszufinden, wer den Nameserver abfragt, um „example.com“ aufzulösen (die Fälle, in denen Leute den Domänennamen anhand der zwischengespeicherten Daten in den rekursiven Resolvern auflösen, sind uns egal). Wir sammeln auch die Protokolle des Apache-Webservers. Das Problem ist jedoch, dass wir nicht herausfinden können, welche DNS-Anforderung welcher Webserver-Anforderung entspricht.

Um diese beiden Protokolle miteinander zu verknüpfen, dachte ich daran, eine zufällige Subdomäne zu erstellen und sie als CNAME von example.com für jede DNS-Anforderung zurückzugeben und dann Apache so zu konfigurieren, dass alle diese Subdomänen auf die Hauptseite von „example.com“ umgeleitet werden. Wenn also diese bestimmte Subdomäne von jemandem angefordert wird, weiß ich, was die entsprechende DNS-Abfrage ist.

Ist das die richtige Vorgehensweise? Gibt es eine andere Möglichkeit, das zu tun?

Ich freue mich über jeden Gedanken oder jede Idee.

Antwort1

Eine Zuordnung zur IP-Adresse ist nicht möglich.

Dies liegt daran, dass Ihr autoritativer Nameserver von rekursiven Nameservern abgefragt wird und nicht direkt von Endclients. Sie erhalten also die IP-Adresse des letzten rekursiven (sie können verkettet sein) Nameservers, der vom Client verwendet wurde.

Selbst mit der Option „EDNS-Subnetz-Client“ erhalten Sie bestenfalls einen IP-Block und nicht die echte Client-IP.

Das Gleiche gilt auch auf der HTTP-Seite: Ihr Webserver wird nicht unbedingt direkt vom Client kontaktiert, er kann auch über einen Proxy gehen.

Auf Ihre andere, damit verknüpfte Frage habe ich bereits mit einigen Hinweisen geantwortet:Können wir CNAME pro Anfrage aktualisieren? Siehe insbesondere den letzten Absatz und alle Studien von Geoff Huston.

Sie haben also eine andere Möglichkeit: Geben Sie einfach jedem etwas www.example.com, aber fügen Sie in den Inhalt etwas Dynamisches ein (entweder ein 1x1 Pixel großes Bild oder einen Link zu einer CSS- oder JS-Datei) mit einem eindeutigen Token im Hostnamenteil. Dies kann mit einem Platzhalter an Ihre Nameserver gebunden werden. Ohne CNAME können Sie dann den Zugriff problemlos korrelieren:

  • einige Kunden gehen zuhttp://www.example.com/
  • in der Antwort fügt der Webserver ein hinzu <img src="https://eecahquai5thuu9ji0iepha.tracking.example.net">und zeichnet dies in seiner Protokolldatei auf (so wird das eindeutige Token mit dem aktuellen HTTP-Austausch verknüpft)
  • Konfigurieren Sie autoritative Nameserver tracking.example.net(ich empfehle Ihnen, eine separate Zone nur für jede Zone zu verwenden, da Platzhalter sonst für Überraschungen sorgen können), um einen Platzhaltereintrag zu erhalten. In Ihren Nameserver-Logdateien befinden sich dann dieses eindeutige Token und die zugehörigen DNS-Daten (IP des rekursiven Resolvers usw.).
  • (und um ein richtiger Netzbürger zu sein) konfigurieren Sie tatsächlich einen Webserver, der auf diese Adresse mit einer geeigneten Ressource und einem geeigneten Inhaltstyp antwortet, auch wenn es sich nur um ein transparentes Bild mit 1 x 1 Pixel handelt.

verwandte Informationen