srv レコードの有効なゾーン名または有効なサービス名は何ですか?

srv レコードの有効なゾーン名または有効なサービス名は何ですか?

私は、A レコードと SRV レコードを使用してドメインを特定の IP とポートにマッピングする方法に関するいくつかのガイド/質問に従ってきました1.1.1.1:1889

https://stackoverflow.com/questions/11433570/how-to-use-srv-or-any-other-record-do-redirect-a-domain

https://stackoverflow.com/questions/19015138/how-to-redirect-dns-to-different-ports

上記のような質問では、SRVレコードの使用が推奨されています。私が明確に理解していないのは、serviceSRVレコードで使用する正しい名前をどのように決定するかということです。たとえば、次のようなレコードがあるとします。

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.

_mysql, _mongo, _http and _mqttSRV レコードで使用するサービス名は正しいですか? 使用できるすべての許容可能なサービス名をリストしている Web サイトを見つけることができなかったので、これらのサービス名を完全に推測しました。

答え1

まずウェブブラウザはレコードを全く追わないのでSRV、設計できたとしても役に立たない。

SRVここで、例を挙げて、レコードに何が含まれるかを知るための一般的なプロセスを示します。

IANAは物事の守護者なので、https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4SRVRFC 2782で定義されていることがわかります。

そこでは次のように定義されています。

DNS タイプ コードが 33 である SRV RR の形式は次のとおりです。

   _Service._Proto.Name TTL Class SRV Priority Weight Port Target

それぞれ次のようになります。

サービス

   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.

そして

プロト

   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] の参照は RFC 1700 ですが、RFC 3232 では、可能な値のデータベースをオンラインで作成するために廃止されました。このデータベースは、再び IANA によって管理されています。

今はそこにあります:https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml/etc/servicesこれは基本的に、どの Unix ボックスのファイルにも見られる内容であることに注意してください。

したがって、あなたの例を取り消します (ただし、示されている複数のレコードのポート番号は間違っていますSRV)。

  • mysqlポートは確かに定義されている3306ので、サービス名として有効であり、したがってSRVレコードに
  • ポート の場合27017、サービス名は でありmongodb、 ではありませんmongo(ただし、Mongo クライアントはSRVレコードを尊重しますか?)
  • httpは確かにポートに対して定義されている80ので、有効なサービス名です(httpsポート443の場合)
  • mqttは、ポートの有効なポート名として定義されています1883。しかし、上記と同じ質問ですが、クライアントはSRVレコードをまったく使用しないのでしょうか?

また、上記に従わないさまざまなレコードが存在することにも注意してくださいSRV。これらを公開できる場合、それらは「機能」します。つまり、もちろん何らかのアプリケーションがそれらを読み取る限り、上記のように登録されたサービス名を使用していなくても、DNS レベルでの解決を妨げるものは何もありません。

例えば、オンラインでは_sip._tlsまたは の例をたくさん見つけることができます_sipfederationtls._tcpが、どちらも間違っています。tlsは有効なプロトコルではなく、sipfederantiontlsは有効なサービス名ではありません(実際、長すぎます。https://www.rfc-editor.org/rfc/rfc6335.html#section-5.1最大 15 文字の長さにする必要があることを指定します)。そのため、一部のツール/UI ではゾーンファイル内にこれらのレコードを作成できない場合があります。また、一部のネームサーバーではそれらの読み込みを拒否する場合がありますが、ほとんどの場合は機能します (アプリケーションがそれらを消費する場合)。

関連情報