Im Rechenzentrum der Universität, an der ich arbeite, haben wir ein DNS-System, das wir zum Registrieren der Namen unserer Server und der Adressen der Dienste verwenden, die nur für den internen Gebrauch bestimmt sind.
Normalerweise verwenden wir das folgende Muster:
server A xxx.xxx.xxx.xxx
service CNAME server
Jetzt haben wir einen Dienst, den wir beim Zugriff über HTTP nur in den CNAME-Eintrag und nicht in den A-Eintrag auflösen möchten.
Ist das möglich, wenn nur die DNS-Konfiguration verwendet wird?
Antwort1
Bei einigen Protokollen (z. B. http) können Sie den Dienst so konfigurieren, dass er nur antwortet, wenn der Client den richtigen Namen angibt. In diesem Szenario würden Sie den Webserver so konfigurieren, dass er nur auf HTTP-Anfragen antwortet, die den CNAME enthalten. Anhand der Kommentare wissen Sie bereits, wie das geht.
Es gibt auch Protokolle, bei denen der Server den vom Client verwendeten Namen nicht kennt. In diesem Fall gibt es keine Möglichkeit, den Benutzer daran zu hindern, den Namen im A-Eintrag zu verwenden.
Ich glaube nicht, dass Sie dies auf der DNS-Ebene tun können. Das heißt, es gibt keine zuverlässige Möglichkeit, einen CNAME zu erstellen, der für Ihre Clients sichtbar ist und der in die gewünschte IP-Adresse aufgelöst wird, ohne dass ein entsprechender A-Eintrag vorhanden ist, der auch für Ihre Clients sichtbar ist.
Was dudürfen(je nachdem, welche DNS-Software Sie verwenden, denke ich) besteht darin, zwei A-Einträge zu haben, die beide auf die gleiche IP-Adresse verweisen, d. h.
server A xxx.xxx.xxx.xxx
service A xxx.xxx.xxx.xxx
und dann den server
Datensatz nur für die Administratoren sichtbar machen, die Zugriff darauf benötigen. Sie müssen nichthabeneinen CNAME für Dienstnamen zu verwenden. Der einzige Haken besteht darin, dass es dann in Ihrer Verantwortung liegt, sicherzustellen, dass die IP-Adressen für die beiden Namen immer übereinstimmen.
Antwort2
Ja, das ist möglich. Tatsächlich ist das sowieso der erste Schritt zur vollständigen Lösung des Problems.
Um dies tatsächlich zu tun, müssen Sie (normalerweise) die lokalen DNS-Auflösungsmethoden Ihres Betriebssystems umgehen, da diese (wiederum normalerweise) nicht dazu gebracht werden können, beim CNAME-Eintrag anzuhalten und nicht weiter aufzulösen. Mir sind keine DNS-Resolver-Bibliotheken bekannt, die dies ermöglichen, aber ich kenne ein Standardtool, das dies tut. Der dig
Befehl von BIND folgt CNAME-Einträgen nicht, wenn Sie explizit nach einem CNAME
Abfragetyp fragen (oder einem ANY
Abfragetyp, obwohl dasMaigibt je nach DNS-Server auch A- oder AAAA-Einträge zurück).