概略
ドキュメントやブログ記事、技術書などを書くときに「IPアドレスやドメイン名を例として示したい」という場面はよくあります。
しかし、実在する IPアドレスやドメイン名を不用意に記載してしまうと、その持ち主が迷惑を被る可能性があります。例えば、説明用の設定例をコピーした人が実際に通信を試みてしまうと、意図せず第三者のサーバーにアクセスが飛んでしまうこともあり得ます。
こうしたトラブルを避けるために、インターネットでは「例示用に予約されたIPアドレスやドメイン名」が用意されています。これらは実際には利用されない範囲であり、教材やマニュアル、ブログ記事などで安心して利用できるようになっています。
本稿では、RFCで定められている国際的な予約アドレスと、JPRSが定める日本国内向けの例示用ドメインをまとめて紹介します。
本稿に記載した内容は、個人的な見解を示したものであり、筆者の所属する企業・団体の公式見解ではありません。
例示用IPアドレス
IPv4アドレスでは、RFC5737 で定義された「TEST-NET-1 ~ TEST-NET-3」という範囲が例示用として予約されています。
-
192.0.2.0/24(TEST-NET-1) -
198.51.100.0/24(TEST-NET-2) -
203.0.113.0/24(TEST-NET-3)
これらは「ドキュメントや教材での使用専用」と明記されており、実際にグローバルインターネット上で割り当てられることはありません。また、RFC5737では、ネットワーク事業者はこれらのアドレスをパケットフィルターに追加するべきであると記載されています。
IPv6の場合はRFC3849によって 2001:db8::/32がドキュメント用として予約されており、RFC9637によってプレフィックスが /20 に更新されました。その更新によって例示に使えるIPv6アドレスの範囲が増え、より実際の環境例を示しやすくなりました。
プライベートIPアドレスや共有アドレスとの違い
例示用IPアドレスは「教材やドキュメントに記載するため」に予約されたものであり、実際の通信には利用すべきでない 範囲です。これに対して、プライベートIPアドレスなどは実際のネットワーク運用で利用される特別なアドレス範囲であり、目的が異なります。
プライベートIPアドレス (RFC1918)
10.0.0.0/8172.16.0.0/12192.168.0.0/16
これらは「組織内部のLAN等で自由に使えるアドレス」として予約されています。教材やサンプルでみかけることも多く、RFC5737でも "ドキュメントで使われることがある" と書かれていますが、本来は「実運用のネットワーク構築用」であり、解説や例示にはRFC5737の TEST-NET を使うの望ましいと考えています。
2000年代初頭の頃に「192.168.0.1 は私のアドレスです」と主張する人からクレームを受けたという小話が流行りました。その頃でも、家庭用ルーターなどの初期設定ではプライベートIPアドレスが使わていることも多く、詳しくない人からすると、自分の買った機器のIPアドレスが勝手に雑誌記事にかかれているとなって不安になるかもしれません。
共有アドレス(RFC6598)
100.64.0.0/10
これは主にインターネットサービスプロバイダー(ISP)がIPv4の枯渇に対応するためのキャリアーグレードNAT(CGNAT)に用いるために予約された範囲です。エンドユーザーが自由に使えるわけではなく、あくまでプロバイダー側の運用用途です。そのため、教材や解説記事の「例示用」として利用するのは明らかに不適切です。
例示用ドメイン名
ドメイン名については RFC2606 によって予約された名前があります。
example.comexample.netexample.orgexmapletestinvalidlocalhost
これらは教材や設定例に広く使われており、実際にブラウザーで https://example.com にアクセスすると IANAによる説明ページが表示されます。
また、.test 、.invalid、.localhost は例示に使うためのものではなく、歴史的な経緯等によって予約されているものです。
test は新しいDNS関連コードのテストに用います。invalid は常に無効であることが保証されたドメインです。localhost は従来からシステム自身を指す特別なものとして扱われています。
日本では、JPドメインを管理するJPRSが独自に「例示用ドメイン」を用意しています。
- "EXAMPLE"を用いたもの
example.jpexample.co.jpexample.ne.jp
- "EXAMPLE"のあとに 0~9の数字をつけたもの
example1.jpexample2.co.jpexample3.ne.jp
-
ドメイン名例.jp(日本語JPドメイン) -
xn--eckwd4c7cu47r2wf.jp(「ドメイン名例.jp」の PunyCode表記1)
最後に
例示用に予約されたIPアドレスやドメイン名を活用することで、誤って第三者に迷惑をかけることなく、安全で分かりやすい資料や記事を作成できます。技術ドキュメントや教材を作る際には、ぜひこれらの予約領域を積極的に利用していきましょう。
| 種類 | 範囲 / 名称 | 定義文書 | 備考 |
|---|---|---|---|
| IPv4 | 192.0.2.0/24 | RFC5737 | TEST-NET-1 |
| 198.51.100.0/24 | RFC5737 | TEST-NET-2 | |
| 203.0.113.0/24 | RFC5737 | TEST-NET-3 | |
| IPv6 | 2001:db8::/32 | RFC3849 | ドキュメント用(旧) |
| 2001:db8::/20 | RFC9637 | ドキュメント用(現行・範囲拡張) | |
| ドメイン | example.com / .net / .org | RFC2606/6761 | ドキュメント用 |
| example | RFC2606/6761 | ドキュメント用 | |
| test | RFC2606/6761 | DNS関連コードのテスト用 | |
| invalid | RFC2606/6761 | 常に無効なドメイン | |
| localhost | RFC2606/6761 | ループバック用途 | |
| JPドメイン | example.jp / example.co.jp / example.ne.jp | JPRS | 「EXAMPLE」を用いた例示用 |
| example1.jp / example2.co.jp ほか | JPRS | 数字を付与したバリエーション | |
| ドメイン名例.jp | JPRS | 日本語JPドメインの例 | |
| xn--eckwd4c7cu47r2wf.jp | JPRS | 「ドメイン名例.jp」のPunyCode表記 |
電話番号や郵便番号の例示に適した値というものは寡聞にして聞いたことがありませんが、ご存知の方がいらっしゃればご教示ください。クレジットカード番号の例については「クレジットカード番号の構成要素と識別をご参照いただければと思います。
脚注
-
Punycode(RFC3492) は、Unicode文字列をASCIIに変換するためのエンコード方式であり、国際化ドメイン名(IDN)に用いられています。 ↩