CIDRにホスト部が残っていたらどうなる? ― Python ipaddressのstrict=True/Falseを比べる

ネットワーク・RFCカテゴリを表すパンダのイラスト ネットワーク・RFC

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Python公式ドキュメントのipaddress仕様を確認し、ホスト部が残ったCIDRをstrict=True/Falseで読み込んだときの違いをダミーアドレスだけで観察します。この記事作成時にはPython実行を行っていません。

検証ステータス:📘 Python公式仕様確認済み・実行未確認
情報確認日:2026年10月3日。外部通信やネットワーク設定変更は行いません。

192.168.1.10/24 のようにホスト部を含む表記を「ネットワーク」として受け取ったとき、入力ミスとして止めるのか、192.168.1.0/24 へ正規化するのかはツール設計で重要です。

strict=Trueで止める

import ipaddress

ipaddress.ip_network("192.168.1.10/24", strict=True)

ホスト部が設定されているため、network addressとして厳密には受け付けず ValueError になります。

strict=Falseならどうなるか

import ipaddress

net = ipaddress.ip_network("192.168.1.10/24", strict=False)
print(net)
print(net.network_address)
print(net.broadcast_address)

入力をnetworkへ正規化して扱えます。

flowchart TD
 A["192.168.1.10/24"] --> B{"strict?"}
 B -->|True| C["ValueError"]
 B -->|False| D["192.168.1.0/24へ正規化"]

1か所変える

192.168.1.0/24 を渡して、strict=Trueでも通ることを確認します。次に 10.0.0.1/30 へ変え、どのnetworkへ正規化されるか予想してから実行します。

仕事で使うなら

設定値の検証では「入力ミスを黙って直してよいか」を先に決めます。人が入力したnetwork定義を厳密に検査するならstrict=True、IPとprefixから所属networkを求める用途ならstrict=Falseが合う場合があります。

公式情報・一次情報

GitHubサンプル

文書情報

記事タイトル
CIDRにホスト部が残っていたらどうなる? ― Python ipaddressのstrict=True/Falseを比べる
作成日
更新日
Source URL
https://papanda925.com/?p=17498

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました