技術文書で使うべき「安全な」IP アドレス — RFC 5737 / RFC 3849 と例示用ドメイン RFC 2606
技術文書やサンプルコードに書く IP アドレスには、RFC で予約された専用の範囲があります。この記事では、IPv4 の TEST-NET(RFC 5737)と IPv6 のドキュメント用プレフィックス(RFC 3849)の正確な範囲と、実務での使い分けを解説します。
実在の IP アドレスを例に使うリスク
技術ブログや設定例を書くとき、1.2.3.4 や 8.8.8.8、あるいは自分の開発環境のプライベート IP をそのまま記載していませんか。実在する IP アドレスをドキュメントに含めると、3 つのリスクが生じます。
意図しないトラフィックの発生
読者がサンプルコードをそのままコピーして実行すると、実在するサーバーへ意図しないアクセスが飛びます。8.8.8.8 のようなパブリック DNS なら影響は深刻です。世界中から不要なクエリーが集中し、インフラへの負荷やプライバシーの問題につながります。
セキュリティーフィルターへの抵触
企業ネットワークやセキュリティーソフトウェアの中には、特定のパブリック DNS や既知の IP アドレスへの通信を監視・ブロックしているものがあります。実在の IP がドキュメントに含まれていると、読者の環境でスクリプトが動かない、あるいはセキュリティーアラートが発報する、といった事態を招きます。
情報漏えいのリスク
開発環境のプライベート IP(192.168.x.x など)をそのまま公開すると、組織内のネットワーク構成を攻撃者に推測させるヒントになります。
IPv4 の 3 つの TEST-NET(RFC 5737)
RFC 5737(2010 年 1 月発行)は、ドキュメントおよび例示用に 3 つ の IPv4 アドレスブロックを予約しています。いずれもパブリックインターネット上でルーティングされることはなく、ネットワーク機器はこれらを非ルーティングとしてフィルターするよう求められています。
| ブロック名 | ネットワーク範囲 | アドレス数 |
|---|---|---|
| TEST-NET-1 | 192.0.2.0/24 | 256 |
| TEST-NET-2 | 198.51.100.0/24 | 256 |
| TEST-NET-3 | 203.0.113.0/24 | 256 |
合計 768 個 のアドレスが利用できます。RFC 6890(2013 年 4 月発行)はこれらを「特殊用途アドレスレジストリー」に統合し、Source / Destination / Forwardable / Global のすべてが False であると明記しています。
複数ブロックの使い分け
単一のサーバーを例示する場合は 192.0.2.1 が定番です。複数のネットワークが登場する構成図や設定例では、ブロックを分けて使うと読者が「別のネットワーク」と直感的に判別できます。
# 拠点 A のウェブサーバー
192.0.2.1
# 拠点 B のメールサーバー
198.51.100.25
# 外部ネットワークのルーター
203.0.113.254
IPv6 のドキュメント用プレフィックス(RFC 3849 / RFC 9637)
IPv6 では、RFC 3849(2004 年 7 月発行)が 2001:db8::/32 を予約しています。IPv4 の TEST-NET と同様に、パブリックインターネットでルーティングされることはありません。
2001:db8:abcd:1234::1
db8 という文字列が含まれるため、一目で「これはドキュメント用だ」と判別できます。
RFC 9637 による拡張
2024 年 8 月に発行された RFC 9637 は、新たに 3fff::/20 を追加しました。/32 では表現しきれなかった大規模な割り当てシナリオに対応するためです。IANA の調査(2023 年 8 月時点)によると、記録済みの IPv6 割り当ての 25.9% が /32 より大きく、/29 が最も一般的な割り当てサイズでした。
| プレフィックス | RFC | 発行年 |
|---|---|---|
2001:db8::/32 | RFC 3849 | 2004 |
3fff::/20 | RFC 9637 | 2024 |
既存のドキュメントやツールの大半は 2001:db8:: を使用しているため、新規に書く場合も 2001:db8:: を基本とし、大きなプレフィックスが必要な場面で 3fff:: を使う方針で問題ありません。
予約済みドメイン名(RFC 2606)
IP アドレスだけでなく、ドメイン名にも例示専用の予約があります。RFC 2606(1999 年 6 月発行、BCP 32)は以下の TLD とセカンドレベルドメインを予約しています。
予約済み TLD
| TLD | 用途 |
|---|---|
.test | DNS 関連コードのテスト |
.example | ドキュメント・例示 |
.invalid | 無効なドメイン名の明示 |
.localhost | ループバックアドレスの参照 |
予約済みセカンドレベルドメイン
example.comexample.netexample.org
RFC 2606 はのちに RFC 6761(特殊用途ドメイン名)で更新されています。
実務で使える例示テクニック
ここまでの RFC をふまえて、ドキュメントの品質を高める具体的なテクニックを紹介します。Labee Dev Toolbox のドキュメントや用語解説でも、以下のルールで統一しています。
ポート番号に合わせたホスト番号
サービスのポート番号をホスト部に反映させると、読者が役割を即座に把握できます。
# DNS リゾルバー(ポート 53)
dig A example.com @192.0.2.53
# ウェブサーバー(ポート 80)
curl http://198.51.100.80/
# HTTPS サーバー(ポート 443)
curl https://203.0.113.443/ -k
Labee Dev Toolbox の DNS API でも、例示には TEST-NET アドレスと example.com を組み合わせて使っています。
curl "https://labee.dev/api/dns?domain=example.com&type=A"
{
"success": true,
"data": {
"domain": "example.com",
"records": {
"A": [
{ "address": "203.0.113.1", "ttl": 3600 }
]
}
},
"error": null,
"meta": { "responseTime": 45 }
}
example.com を自分のドメインに置き換えれば、実際のレコード値を外部視点で取得できます。
TEST-NET と予約ドメインの組み合わせ
example.com の A レコードを 203.0.113.1 と記載する方法は、IP アドレスとドメイン名の両方が RFC 準拠の例示になります。DNS のゾーンファイルやメール認証の設定例では、この組み合わせが最も安全です。
example.com. IN A 203.0.113.1
example.com. IN AAAA 2001:db8::1
example.com. IN MX 10 mail.example.com.
mail.example.com. IN A 198.51.100.25
やってはいけない例示パターン
避けるべきパターンを 3 つ挙げます。
8.8.8.8や1.1.1.1— 実在するパブリック DNS への不要なトラフィックを誘発します1.2.3.4や123.456.789.0— 前者は実在するアドレス、後者は不正な形式です。どちらも読者を混乱させます192.168.1.1や10.0.0.1— プライベート IP は「例示」ではなく「ローカル環境のアドレス」として解釈されます。内部ネットワークの例として意図的に使う場合を除き、ドキュメント用途には TEST-NET を選びます
関連する RFC の全体像
ドキュメント用アドレスに関連する RFC を整理します。
| RFC | タイトル | 内容 |
|---|---|---|
| RFC 2606 | Reserved Top Level DNS Names | 例示用ドメイン名の予約(1999 年) |
| RFC 3849 | IPv6 Address Prefix Reserved for Documentation | 2001:db8::/32 の予約(2004 年) |
| RFC 5737 | IPv4 Address Blocks Reserved for Documentation | TEST-NET-1/2/3 の予約(2010 年) |
| RFC 6890 | Special-Purpose IP Address Registries | 特殊用途アドレスの統合レジストリー(2013 年) |
| RFC 9637 | Expanding the IPv6 Documentation Space | 3fff::/20 の追加(2024 年) |
技術文書を書く際にこの表を手元に置いておくと、IP アドレス・ドメイン名の両方で迷わずに済みます。自分のドキュメントで TEST-NET を使えているか、まず直近のプロジェクトの設定例から確認してみてください。
IP アドレスから種別・逆引き・プライベート判定を読み解く方法はこちらで解説しています。
技術ノートIP アドレスから何がわかるか — dig と curl で種別・逆引き・プライベート判定を読み解くIP アドレスを調べると、IPv4/IPv6 の種別、PTR レコードによる逆引きホスト名(FCrDNS)、グローバル IP かプライベート IP かがわかります。dig -x と Labee IP API を使った確認手順を解説します。