注意
ゴリゴリの独自調査(多分ガバあり)
マサカリ求
RFCの原文読むのは無理でした
概要
アンダーバー入りの名前でサブドメインを切ってくださいと言われて、ドメインに_(アンダーバー)は使えないので変えてくださいっていうやり取りをちょくちょくしていたんですが、これの根拠を知ろうとしたら泥沼だったって話です。
RFCをたどる
DNSに関する一番古いRFCは1987年11月発行 RFC1034-1035です。
jprsが日本語訳を出してくれていたので、推奨される名前の構文 の章から意訳抜粋すると。
- ドメイン名空間はラベルをもつノードのツリー構造
- ノードのドメイン名はそのノードまでのラベルの列挙
- ラベルはARPANETのホスト名に関するルールに従う。ラベルは
文字で始まり、文字または数字で終わり、その間には文字、数字、ハイフンだけ
しか存在してはならない。長さは63文字以下でなければならない
とのことです。
なるほど、推奨ではありますが文字、数字、ハイフンだけを使うということと、ARPANETのホスト名に関するルールに由来ということがわかりました。
その一方でこんなRFCもあります。
1997年7月発行 RFC2181 はDNSの仕様を明確化するRFCです。
以下はこちらのjprsの日本語訳の、11.名前の構文の5行目からの引用です。
DNSそれ自体には、リソースレコードを特定するために使用するラベルの制約は一つしか存在しない。その制約は、ラベル及び完全名(full name)の長さに関するものである。
(中略)
これらの制約に外れない限り、どんなバイナリ文字列も任意のリソースレコードのラベルで使用できる。
🤔
なんだか🤔.jpっていうドメインまでとれそうな感じですね...
とりあえずこれらを見るにrfc的には_がないことが推奨されるが、DNSがドメインを扱う際にはどの文字も扱えるのが仕様っぽいです。
と見せかけてrfcはあくまで標準仕様の話、ドメインで使える文字を指定する場所はまだあって
それがレジストリのポリシーです。
レジストラ、レジストリってなに
具体的に言うとレジストラがお名前.comとかawsのroute 53でレジストリがjprsとかverisignです。
レジストリは特定のドメインについて管理し、ネームサーバーを運用します。
(jprsは.jpや.tokyo、verisignは.netや.com)
上記ドメインではレジストリレジストラモデルが採用されており、我々がドメインを取得しようと思った際はレジストラを経由して申請します。
レジストリは管理下のドメインについてドメインのポリシーを定め、登録規則や細則を決めています。
(.co.jpは日本に登記のある企業に限るみたいなものですね。)
その中には技術的な細則もあって.jpや.tokyoの技術的細則はこちらです。
(.netや.comのポリシーは、見つけられませんでした。)
こちらの、
1.登録可能な汎用JPドメイン名の文字種別と文字列
に使っていい文字などの記述があります。超ざっくりまとめると.jpのドメインだと日本語文字および英字("A"から"Z")、数字("0"から"9")、ハイフン("-")は使える文字のようです。
まとめ
- ドメインにアンダーバーは使えない、は厳密ではない
- ただ少なくとも.tokyoや.jpをTLDにしたい場合アンダーバーは使えない
追記
AWSのACMのCNAMEレコードの値は先頭が必ずアンダースコアで始まってたりする
https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/troubleshooting-DNS-validation.html#underscores-prohibited