Was sind gültige Zonennamen oder gültige Dienstnamen für SRV-Einträge?

Was sind gültige Zonennamen oder gültige Dienstnamen für SRV-Einträge?

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/11433570/wie-man-srv-oder-jeden-anderen-record-verwendet-um-eine-domain-umzuleiten

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 serviceNamen 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 _mqttdie 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 SRVDatensä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 SRVanhand 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, SRVdass 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/servicesin jeder Unix-Box finden.

Also nehme ich Ihre Beispiele zurück (Ihre Portnummern sind SRVjedoch in mehreren dargestellten Datensätzen falsch):

  • mysqlist tatsächlich für Port definiert 3306, also gültig als Servicename und damit in einem SRVDatensatz
  • für Port 27017lautet der Dienstname mongodb, nicht mongo(aber beachten Mongo-Clients SRVAufzeichnungen?)
  • httpist tatsächlich für Port definiert, 80also ist es ein gültiger Dienstname (und httpsfür Port 443)
  • mqttist als gültiger Portname für Port definiert 1883. Aber dieselbe Frage wie oben: Verwenden Clients SRVüberhaupt Datensätze?

Beachten Sie auch, dass es in der freien Wildbahn verschiedene SRVEinträ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._tlsoder _sipfederationtls._tcponline finden, die beide falsch sind: tlsist kein gültiges Protokoll und sipfederantiontlsist 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).

verwandte Informationen