Help us understand the problem. What is going on with this article?

ホスト名の字数と字種

More than 1 year has passed since last update.

DNS

例えば「www.example.com」という文字列全体をFQDNと呼びますが、これに対して、ピリオドで区切られた「www」「example」「com」一つ一つの部分をラベルと呼びます。

字数は、ラベルの長さは1字以上63字以内(ラベル長0バイトはroot domainを表す)、FQDNの長さは253字以内です。255字ではなく253字なのには理由があり、これはJPNICの「ドメイン名のしくみ」というページの※1のところに解説があります。

ラベルに使える字種は、英字(A~Z)、数字(0~9)、ハイフン(-)です。ただし、ラベルの先頭文字と末尾文字は英字か数字でなければなりません。英字は大文字小文字を区別しませんので、abcABCは同じと見なされます。

RFC的な話としては、RFC1034, RFC1035では先頭文字数字は不可でした。しかし、RFC1123 Section 2.1 (Google翻訳)で先頭文字数字が解禁され、7andi.jpなどのドメイン名が登録されて使われています。

FQDNはこれにラベルの区切り文字ピリオド(.)が加わります。ピリオドはあくまでラベルの区切り文字という位置づけのため、FQDNでピリオドを2連続させることはできません(「www..example.com」は不可。)

リファレンス

DOMAIN NAMES - CONCEPTS AND FACILITIES
https://tools.ietf.org/html/rfc1034 (Google翻訳)

DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
https://tools.ietf.org/html/rfc1035 (Google翻訳)

Clarifications to the DNS Specification
https://tools.ietf.org/html/rfc2181 (Google翻訳)

Domain Name System (DNS) Case Insensitivity Clarification
https://tools.ietf.org/html/rfc4343 (Google翻訳)

JPNIC
ドメイン名のしくみ
https://www.nic.ad.jp/ja/dom/system.html

LLMNR

LLMNRの字数・字種制限はDNSと同じです。

リファレンス

Link-Local Multicast Name Resolution (LLMNR)
https://tools.ietf.org/html/rfc4795 (Google翻訳)

NetBIOS

NetBIOSのRFCとしてはRFC1001 (Google翻訳) とRFC1002 (Google翻訳) がありますが、NetBIOS名の字種・字数仕様は詳述されておらず、16バイトとしか書いてありません。

他の文献によると、最後の1バイトは特別な意味を持つため、NetBIOS名に使えるのは15字までです(ここはIBMの実装とMicrosoftの実装で違うようですが、2017年時点でIBMの実装に触れる機会は少ないと思うので、気にしなくてよいでしょう)。

字種に関しては、英大文字小文字の区別はなく、英小文字は自動的に英大文字に変換されます。記号はかなりフリーダムで、不具合を恐れなければ大抵の文字が設定可能なようです。手元のWindows 10で試してみたところ、日本語やUTF-8絵文字までもがNetBIOS名に設定できました。日本語漢字は7文字まで、絵文字は15文字まで入ります。世の中どうなっているんでしょうか。

リファレンス

NetBIOS サフィックス (NetBIOS 名の 16 番目の文字)
https://support.microsoft.com/ja-jp/help/163409/netbios-suffixes-16th-character-of-the-netbios-name

/etc/hosts

Ubuntu 16.04LTSで実験したところ、/etc/hostsの字数・字種はかなりフリーダムのようです。

300字のホスト名を登録したら通りました。

$ ping host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990
PING host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1) 56(84) bytes of data.
64 bytes from host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1): icmp_seq=1 ttl=64 time=16.0 ms
64 bytes from host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1): icmp_seq=2 ttl=64 time=7.75 ms
64 bytes from host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1): icmp_seq=3 ttl=64 time=7.94 ms
64 bytes from host00000111111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990 (192.168.0.1): icmp_seq=4 ttl=64 time=2.73 ms

また、UTF-8で入力すれば、日本語のホスト名も通ります。

$ ping 日本語ホスト名
PING 日本語ホスト名 (192.168.0.1) 56(84) bytes of data.
64 bytes from 日本語ホスト名 (192.168.0.1): icmp_seq=1 ttl=64 time=6.97 ms
64 bytes from 日本語ホスト名 (192.168.0.1): icmp_seq=2 ttl=64 time=3.36 ms
64 bytes from 日本語ホスト名 (192.168.0.1): icmp_seq=3 ttl=64 time=8.10 ms

大文字・小文字の区別はありません。

hostnameコマンド

これもUbuntu 16.04LTSで実験しました。hostnameコマンドで設定できるホスト名は、/etc/hostsほどフリーダムではないようです。

アンダースコア(_)やプラス記号(+)は通りません。

$ sudo hostname host_name
hostname: the specified hostname is invalid
$ sudo hostname host+name
hostname: the specified hostname is invalid

日本語もダメです。

$ hostname 日本語
hostname: the specified hostname is invalid

先頭文字は数字でも大丈夫です。

$ sudo hostname 0hostname
$ hostname
0hostname

ただし、末尾文字にハイフンはダメです。これはDNSと同じです。

$ sudo hostname hostname-
hostname: the specified hostname is invalid

字数のほうは、63字が上限です。これはDNSのラベルの字数制限と同じです。

$ sudo hostname host0000011111111111222222222233333333334444444444555555555566666
hostname: name too long
$ sudo hostname host000001111111111122222222223333333333444444444455555555556666
$ hostname
host000001111111111122222222223333333333444444444455555555556666

全体として、DNSの字数字種制限に合わせてあるようです。

考察

今からホスト名をつける場合は、字種はDNSの字種制限に準拠(ただし全部数字は勧めません)、字数は15字以内を推奨します。それ以外のホスト名を既につけてしまった場合は。。。幸運を祈ります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした