Ich habe ein paar Anleitungen/Fragen dazu befolgt, wie man A-Einträge und SRV-Einträge verwendet, um eine Domäne einer bestimmten IP-Adresse und einem bestimmten Port zuzuordnen, wie etwa 1.1.1.1:1889
:
https://stackoverflow.com/questions/19015138/how-to-redirect-dns-to-different-ports
Bei Fragen wie den oben genannten wird die Verwendung von SRV-Einträgen empfohlen. Der einzige Teil, der mir nicht klar ist, ist, wie ich den richtigen service
Namen für meinen SRV-Eintrag bestimme. Nehmen wir zum Beispiel an, ich habe diese Einträge
mysql.example.com. 86400 IN A 1.1.1.1
mongo.example.com. 86400 IN A 1.1.1.1
www.example.com. 86400 IN A 1.1.1.1
mosquitto.example.com. 86400 IN A 1.1.1.1
_mysql._tcp.example.com. 86400 IN SRV 10 20 3306 mysql.example.com.
_mongo._tcp.example.com. 86400 IN SRV 10 20 27017 mongo.example.com.
_http._tcp.example.com. 86400 IN SRV 10 20 3306 www.example.com.
_mqtt._tcp.example.com. 86400 IN SRV 10 20 3306 mosquitto.example.com.
Sind das _mysql, _mongo, _http and _mqtt
die richtigen Dienstnamen für die Verwendung in meinen SRV-Einträgen? Ich habe diese Dienstnamen völlig erraten, weil ich keine Website finden konnte, auf der alle zulässigen und verwendbaren Dienstnamen aufgelistet sind.
Antwort1
Erstens verfolgen Webbrowser SRV
Datensätze überhaupt nicht, also sind sie nutzlos, selbst wenn man sie konfigurieren kann.
Nun wird der allgemeine Prozess betrachtet, um herauszufinden, was in einen Datensatz eingeht, und zwar SRV
anhand eines Beispiels.
IANA ist die Hüterin der Dinge, also gehen Sie zuhttps://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4wo Sie sehen können, SRV
dass es in RFC 2782 definiert ist
Dort wird es wie folgt definiert:
Dies ist das Format des SRV RR, dessen DNS-Typcode 33 ist:
_Service._Proto.Name TTL Class SRV Priority Weight Port Target
mit dann jeweils:
Service
The symbolic name of the desired service, as defined in Assigned Numbers [STD 2] or locally. An underscore (_) is prepended to the service identifier to avoid collisions with DNS labels that occur in nature.
Und
Proto
The symbolic name of the desired protocol, with an underscore (_) prepended to prevent collisions with DNS labels that occur in nature. _TCP and _UDP are at present the most useful values for this field, though any name defined by Assigned Numbers or locally may be used (as for Service). The Proto is case insensitive.
[STD 2] Referenz ist RFC 1700, aber RFC 3232 hat es ersetzt, um online eine Datenbank mit möglichen Werten zu erstellen... die wiederum von IANA verwaltet wird.
Jetzt steht es da:https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtmlund beachten Sie, dass es sich grundsätzlich um das handelt, was Sie in jeder Datei /etc/services
in jeder Unix-Box finden.
Also nehme ich Ihre Beispiele zurück (Ihre Portnummern sind SRV
jedoch in mehreren dargestellten Datensätzen falsch):
mysql
ist tatsächlich für Port definiert3306
, also gültig als Servicename und damit in einemSRV
Datensatz- für Port
27017
lautet der Dienstnamemongodb
, nichtmongo
(aber beachten Mongo-ClientsSRV
Aufzeichnungen?) http
ist tatsächlich für Port definiert,80
also ist es ein gültiger Dienstname (undhttps
für Port 443)mqtt
ist als gültiger Portname für Port definiert1883
. Aber dieselbe Frage wie oben: Verwenden ClientsSRV
überhaupt Datensätze?
Beachten Sie auch, dass es in der freien Wildbahn verschiedene SRV
Einträge gibt, die den obigen Anweisungen nicht entsprechen. Wenn sie veröffentlicht werden können, „funktionieren“ sie, d. h. nichts verhindert ihre Auflösung auf DNS-Ebene, selbst wenn sie keinen registrierten Dienstnamen wie oben verwenden, solange sie natürlich von einer Anwendung gelesen werden.
Beispielsweise können Sie viele Beispiele mit _sip._tls
oder _sipfederationtls._tcp
online finden, die beide falsch sind: tls
ist kein gültiges Protokoll und sipfederantiontls
ist kein gültiger Dienstname (und ist in der Tat zu lang, wiehttps://www.rfc-editor.org/rfc/rfc6335.html#section-5.1gibt an, dass es höchstens 15 Zeichen lang sein darf). Daher verhindern manche Tools/Benutzeroberflächen möglicherweise die Erstellung dieser Datensätze in einer Zonendatei, und manche Nameserver weigern sich möglicherweise, sie zu laden, aber in den meisten Fällen funktionieren sie (sofern Anwendungen sie nutzen).