- blogs:
- cles::blog
2019/01/11

0.0.0.0/0 以外で IP 全てを表すには

ipset を使ったブラックリストに Deny ALL を設定しようと思って 0.0.0.0/0 を入力してみたら、ipset が受け付けてくれませんでした。
# ipset add BLACKLIST 0.0.0.0/0
ipset v6.38: The value of the CIDR parameter of the IP address is invalid
ネットワーク全てを 0.0.0.0/0 以外で表す方法がないかと思って調べてみると、以下の2行で設定できるということが分かりました。
ipset add BLACKLIST 0.0.0.0/1
ipset add BLACKLIST 128.0.0.1/1
† 0.0.0.0/1 + 128.0.0.1/1 = 0.0.0.0/0 になるわけ
直感的には変な感じがしますが、サブネットマスクと IP アドレスに関してきちんと理解していれば実用上はこれらが等価*1であることが分かります。
サブネットマスクが /0 の場合には、以下のように1行で表せます。
0.0.0.0/0 → 0.0.0.0 ~ 255.255.255.255
これと同じ範囲をサブネットマスク /1 で表そうとすると、以下の 2 行が必要になります。
つまりアドレスの範囲が真ん中で分断されているわけですね。
0.0.0.0/1 → 0.0.0.0 ~ 127.255.255.255
128.0.0.0/1 → 128.0.0.0 ~ 255.255.255.255
同様にサブネットマスクがが /2 だと以下の4行となります。
0.0.0.0/2 → 0.0.0.0 ~ 63.255.255.255
64.0.0.0/2 → 64.0.0.0 ~ 127.255.255.255
128.0.0.0/2 → 128.0.0.0 ~ 191.255.255.255
192.0.0.0/2 → 192.0.0.0 ~ 255.255.255.255
やろうと思えばサブネットマスクはいくつでも大丈夫なのですが、エントリ数はサブネットを /n とした場合に 2n 個必要になりますから、あまり大きくするのは現実的ではありません。
† 参考
- *1: 厳密にはサブネットが長い方が優先的にマッチするので、0.0.0.0/1 や 128.0.0.1/1 の方が優先度が高い
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/10695
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . Thunderbird のメッセージをスレッド化しないようにする(7075)
2 . Word で数式がグレーアウトされていて挿入できないときは(6752)
3 . Windows 10 で勝手にログアウトされないようにする(5159)
4 . Firefox でパスワードが保存されるページとされないページの違い(3909)
5 . awk で指定した n カラム目以降を出力する(3484)
2 . Word で数式がグレーアウトされていて挿入できないときは(6752)
3 . Windows 10 で勝手にログアウトされないようにする(5159)
4 . Firefox でパスワードが保存されるページとされないページの違い(3909)
5 . awk で指定した n カラム目以降を出力する(3484)
cles::blogについて
Referrers