web-dev-qa-db-ja.com

(ドメイン名)サブドメインにアンダースコア「_」を含めることはできますか?

サブドメイン(ドメイン名)にアンダースコア_を含めることはできますか?

186

ここで与えられるほとんどの答えはfalseです。ドメイン名にアンダースコアを使用することは完全に合法です。標準、 RFC 2181、セクション11、「名前の構文」 を引用してみましょう。

DNS自体は、リソースレコードの識別に使用できる特定のラベルに1つの制限のみを設定します。その1つの制限は、ラベルの長さとフルネームに関連しています。 [...] DNSプロトコルの実装では、使用できるラベルに制限を設けてはなりません。特に、DNSサーバーは、一部のDNSクライアントプログラムに受け入れられないラベルが含まれているため、ゾーンの提供を拒否してはなりません。

元のDNS仕様、 RFC 1034 、セクション3.5「優先名の構文」も参照してくださいが、注意深く読んでください。

アンダースコアを持つドメインは、野生では非常に一般的です。 _Jabber._tcp.gmail.comまたは_sip._udp.apnic.netを確認してください。

ここで言及されている他のRFCは、さまざまなものを扱っています。元の質問は、ドメイン名に対するものでした。質問がホスト名(またはホスト名を含むURL)に対するものである場合、これは異なり、関連する標準は RFC 112 、セクション2.1「ホスト名と番号」ホスト名を文字-数字-ハイフンに制限します。

322
bortzmeyer

ボルツマイヤーの答えを助長する用語に関するメモ

定義について明確にする必要があります。ここで使用されるように:

  • ドメイン名DNSデータベース内のリソースの識別子
  • labelドットで囲まれたドメイン名の部分
  • hostnameインターネットホストを識別するドメイン名の特別なタイプ

hostnameRFC 952 および RFC 1123のわずかな緩和 の制限に従います。

RFC 2181 は、ドメイン名とホスト名に違いがあることを明確にします。

... [事実]任意のバイナリラベルがMXレコードを持つことができるということは、任意のバイナリ名を電子メールアドレスのホスト部分として使用できることを意味するものではありません...

したがって、hostnamesの下線はノーノー、domain namesの下線はa-okです。

実際には、アンダースコア付きのhostnamesがよく表示されます。 Robustness Principle が言うように:「あなたが送るものは保守的で、あなたが受け入れるものは寛容であること」。

エンコードに関する注意

21世紀には、ホスト名ドメイン名が国際化される可能性があります。これは、許可されたセット外の文字を含むlabelsの場合にエンコーディングに頼ることを意味します。

特に、hostnames_をエンコードできます(2017-07更新:これは疑わしい、コメントを参照してください。_はホスト名で使用できません。 、国際化ラベルでも使用できません。)

国際化のための最初のRFCは、2003年3月の RFC 349 、「アプリケーションにおけるドメイン名の国際化(IDNA)」でした。今日、私たちは:

  • RFC 589 "IDNA:定義とドキュメントフレームワーク"
  • RFC 5891 "IDNA:プロトコル"
  • RFC 5892 「UnicodeコードポイントとIDNA」
  • RFC 589 "IDNAの右から左へのスクリプト"
  • RFC 5894 「IDNA:背景、説明、根拠」
  • RFC 5895 "IDNA 2008の文字のマッピング"

Wikipedia Entry を確認することもできます

RFC 589 用語を導入 LDH(Letter-Digit-Hypen)label for labelshostnamesで使用され、次のように述べています:

これは、いくつかの追加の制限はありますが、ホスト名(RFC 952)で使用される従来のラベル形式です。その構文は、RFC 1123によって変更されたRFC 1034のセクション3.5の「優先名構文」として説明されているものと同じです。簡単に言うと、ASCII文字、数字、ハイフンで構成される文字列ハイフンを文字列の先頭または末尾に表示できないというさらなる制限。すべてのDNSラベルと同様に、その全長は63オクテットを超えてはなりません。

より簡単な時代に戻ると、 このインターネットドラフトhostname国際化の初期の提案です。国際文字を含むホスト名は、たとえば 'RACE' encoding を使用してエンコードできます。

「RACE encoding」提案の著者は次のように述べています:

RFC 1035によれば、ホスト部分は大文字と小文字を区別せず、先頭と末尾を文字または数字にする必要があり、文字、数字、およびハイフン文字( "-")のみを含める必要があります。もちろん、これは、国際化された文字、およびASCII文字レパートリーの他の多くの文字を除外します。さらに、ドメイン名部分は63オクテット以下の長さである必要があります。..国際化された文字を含むすべての変換後の名前部分は、文字列「bq--」で始まります。 (...)文字列「bq--」が選択されたのは、この仕様が作成される前にホスト部分に存在する可能性が極めて低いためです。

88
David Tonhofer

知っておく必要のある追加事項が1つあります。URLのホストまたはサブドメイン部分にアンダースコアが含まれている場合、IE9(他のバージョンをテストしていない)はCookieを書き込むことができません。

そのため、注意してください。 :-)

47
Kai Mattern

bortzmeyer および David Tonhofer を明確にすると、ドメイン名とサブドメイン名のラベルに先頭のアンダースコアを含めることができますが、それ以外の場所はできません。

David Tonhofer が書いたように、ラベルは中間の部分であり、サービスラベルとポートラベルを指定するときはLDHルールexceptに従う必要があります通常のラベルと区別してください。次に、ラベルの先頭に出現する必要があります。ラベルの先頭は、 サービス名とポート番号レジストリ 、先頭に0がないポート番号、またはプロトコル(tcp、 udp)。これらのサービスラベルは、さらに15文字に制限されています。

  • RFC2782 は、サービスレコードサブドメインの前にアンダースコアを付けることを指定します。
  • RFC6698 は、TLSA証明書レコードでアンダースコアを使用してポート番号のプレフィックスを指定します。

David Tonhofer の答えに反して、IDNはアンダースコア( '_' U + 005F LOW LINE)またはその他の無効なASCII文字のエンコードを許可しません。

RFC589 から

[..] IDNAの導入により、LDHラベルの2つの新しいサブセットが作成されます。これらは、予約済みLDHラベル(R-LDHラベル)および非予約済みLDHラベル(NR-LDHラベル)と呼ばれます。他のコンテキストでは「タグ付きドメイン名」と呼ばれる予約済みLDHラベルには、3番目と4番目の文字に「-」が含まれるプロパティがありますが、それ以外はLDHラベルルールに準拠しています

Punycodeは、アンダースコアを含むすべてのASCIIコードポイントをASCIIとして直接エンコードします。結果のR-LDHは、LDHラベル規則に適合しません。たとえば、Σ_.comは、ルールに違反するxn--_-zmb.comとしてエンコードされます。合法的にコード化できるアンダースコアのように見えるホモグラフィックコードポイントが存在する可能性がありますが(おそらく '_' U + FF3F全角低線)、これらの種類のコードポイントは RFC5892 2.3未満で分類されますNoncharacter_Code_PointとしてのIgnorableProperties。

RACE(他の提案されたIDNエンコード方式)は、IETFによって標準として受け入れられなかったため、使用すべきではありません。

9
Andrew Domaszek

RFC1034へのリンクをたどって、そのほとんどを読んで、これを見て驚いた:

ラベルは、ARPANETホスト名の規則に従う必要があります。文字で始まり、文字または数字で終わり、内部文字として文字、数字、ハイフンのみを使用する必要があります。長さにもいくつかの制限があります。 。ラベルは63文字以下でなければなりません。

明確にするために、ドメイン名はドット「。」で区切られたラベルで構成されています。この仕様は、アンダースコアの使用に言及していないため、古くなっている必要があります。誰かがこの仕様を時代遅れだと知らずにつまずいた場合、私は混乱を理解できます。時代遅れですよね?

RFC2181へのリンクをたどって、その一部を読みました。特に、それが信頼できる、または正規の名前の問題と、有効なDNSラベルを作るものの問題に関係する場合。

前に投稿したように、長さの制限のみがあり、それをまとめると次のようになります:

(名前と有効なラベルについて)

これらはすでに適切に指定されていますが、仕様は時々無視されるようです。既存の仕様を強化しようとしています。

「長さのみの制限」が「適切」かどうか疑問に思うようになります。 @#$%のようなドメイン名を見始めますか!!もうすぐ?インターネットは十分に台無しにされていませんか?

6
Ted Cambron

最近、CABフォーラム(*)は、

DNSNameエントリにアンダースコア文字が含まれ、有効期間が30日を超えるすべての証明書は、2019年1月15日より前に失効する必要があります。 https://cabforum.org/2018/11/12/ballot- sc-12-sunset-of-underscores-in-dnsnames /

これは、ssl/tls証明書を持つドメインでアンダースコアを使用することが許可されなくなったことを意味します。

(*)証明機関ブラウザフォーラム(CA /ブラウザフォーラム)は、主要な証明書発行者(以下のセクション2.1(a)(1)および(2)で定義)およびインターネットブラウザソフトウェアおよびその他のアプリケーションのベンダーの自発的な集まりです。証明書を使用します(以下のセクション2.1(a)(3)で定義されている証明書の消費者)。

1
user906489

ここで、Java世界からの2セント:

Spark Scalaコンソールから、Java 8で:

scala> new Java.net.URI("spark://spark_master").getHost
res10: String = null

scala> new Java.net.URI("spark://spark-master").getHost
res11: String = spark-master

scala> new Java.net.URI("spark://spark_master.google.fr").getHost
res12: String = null

scala> new Java.net.URI("spark://spark.master.google.fr").getHost
res13: String = spark.master.google.fr

scala> new Java.net.URI("spark://spark-master.google.fr:3434").getHost
res14: String = spark-master.google.fr

scala> new Java.net.URI("spark://spark-master.goo_gle.fr:3434").getHost
res15: String = null

それは間違いなく悪い考えです^^

1
Thomas Decaux

個々の TLD は、 ドメイン名 に独自のルールと制限を置くことができます(ローカル言語に対応するなど)。

たとえば、 CIRA によれば、カナダの.caドメイン名は許可されます:

  • 文字az、および次のアクセント記号付き文字:é ë ê è â à æ ô œ ù û ü ç î ï ÿ。ドメイン名では大文字と小文字が区別されないことに注意してください。これは、大文字と小文字を区別しないことを意味します(A = a);

  • 番号0123456789、および

  • ハイフン文字( "-)(ただし、ドメイン名の開始または終了にはを使用できません)。

最大長は63文字です。ただし、アクセント記号付きの各文字は、その制限を4文字分減らします。

ソース


ちなみに、これにより、dot-caドメインで(4 Quadragintillionドメイン名の可能性(サブドメインはカウントされません)が可能になります。

0
ashleedawg