リンドくんたなべ先生、「サブネット」って言葉をよく聞くんですけど、何のことかよくわからなくて...
たなべ確かに最初は難しく感じるよね。でも実は、大きなネットワークを小さく区切るっていう、シンプルな考え方なんだよ。
マンションの部屋割りみたいなものかな。
サブネットとは何か?なぜ必要なのか
ネットワークを学び始めると必ず出会う「サブネット」という概念。
ITエンジニアやネットワーク管理者にとって必須の知識ですが、初心者の方には理解しづらい部分も多いのではないでしょうか?
この記事では、サブネット計算の基礎から、より効率的なネットワーク設計を可能にするVLSM(可変長サブネットマスク)まで、初心者の方でも理解できるよう、できるだけわかりやすく解説していきます。
サブネットの基本概念を理解しよう
リンドくんそもそも、なんでネットワークを分割する必要があるんですか?
たなべ理由はいくつかあるんだけど、一番大きいのはセキュリティと効率性なんだ。全部屋が繋がった大きな家より、部屋が分かれている方が管理しやすいよね?
サブネットとは
サブネット(Subnet)とは、Subnetwork(サブネットワーク)の略で、大きなネットワークを小さく分割したものを指します。
例えば、会社全体で使うネットワークを、部署ごとに分けて管理する。これがサブネット化の基本的な考え方です。
なぜサブネット化が必要なのか
サブネット化には以下のような重要なメリットがあります。
- ネットワークの効率化 → ブロードキャストドメインを分割することで、不要なトラフィックを削減できます
- セキュリティの向上 → 部門ごとにネットワークを分離し、アクセス制御を強化できます
- 管理のしやすさ → 問題が発生した際に、影響範囲を特定のサブネットに限定できます
- IPアドレスの効率的な利用 → 必要な規模に応じてアドレス空間を配分できます
IPアドレスとサブネットマスクの関係
IPアドレスは、ネットワーク上のデバイスを識別するための番号です。
そしてサブネットマスクは、そのIPアドレスのどの部分が「ネットワーク部」で、どの部分が「ホスト部」なのかを決定する役割を持っています。
例えば、以下のような表記があります。
IPアドレス: 192.168.1.10
サブネットマスク: 255.255.255.0
これをCIDR表記(後述)で書くと以下のようになります。
192.168.1.10/24
この「/24」という数字は、サブネットマスクの左から24ビットがネットワーク部であることを示しています。
サブネット計算の基礎を身につけよう
リンドくん計算って聞くと難しそうですね...数学苦手なんですけど大丈夫ですか?
たなべ心配しないで!基本は2進数の理解だけなんだ。それさえ分かれば、あとはパターンを覚えるだけだよ。
IPアドレスの構造
IPアドレス(IPv4)は32ビットの数値で、通常は4つの数字(オクテット)で表現されます。
192.168.1.10
これを2進数で表すと:
11000000.10101000.00000001.00001010
各オクテットは8ビット(0〜255の範囲)で構成されています。
サブネットマスクの役割
サブネットマスクは、IPアドレスを「ネットワーク部」と「ホスト部」に分ける境界線を決めます。
よく使われるサブネットマスク
| CIDR表記 | サブネットマスク | ホスト数 | 用途例 |
|---|---|---|---|
| /24 | 255.255.255.0 | 254 | 小規模オフィス |
| /25 | 255.255.255.128 | 126 | 部署単位 |
| /26 | 255.255.255.192 | 62 | チーム単位 |
| /27 | 255.255.255.224 | 30 | 小グループ |
| /28 | 255.255.255.240 | 14 | 会議室など |
| /30 | 255.255.255.252 | 2 | ルーター間接続 |
実践的なサブネット計算の手順
例として、192.168.1.0/24のネットワークを4つのサブネットに分割してみましょう。
ステップ① 必要なビット数を計算
- 4つのサブネット = 2² なので、2ビット必要
ステップ② 新しいサブネットマスクを決定
- 元々 /24 だったので、2ビット追加して /26
ステップ③ 各サブネットの範囲を計算
サブネット① 192.168.1.0/26
- ネットワークアドレス: 192.168.1.0
- 使用可能範囲: 192.168.1.1 〜 192.168.1.62
- ブロードキャストアドレス: 192.168.1.63
サブネット② 192.168.1.64/26
- ネットワークアドレス: 192.168.1.64
- 使用可能範囲: 192.168.1.65 〜 192.168.1.126
- ブロードキャストアドレス: 192.168.1.127
サブネット③ 192.168.1.128/26
- ネットワークアドレス: 192.168.1.128
- 使用可能範囲: 192.168.1.129 〜 192.168.1.190
- ブロードキャストアドレス: 192.168.1.191
サブネット④ 192.168.1.192/26
- ネットワークアドレス: 192.168.1.192
- 使用可能範囲: 192.168.1.193 〜 192.168.1.254
- ブロードキャストアドレス: 192.168.1.255
便利な計算ツール
実務では、以下のようなツールを使って計算を簡単にすることができます。
Pythonでの簡単な計算例
import ipaddress
# ネットワークの定義
network = ipaddress.ip_network('192.168.1.0/24')
# 4つのサブネットに分割
subnets = list(network.subnets(prefixlen_diff=2))
for i, subnet in enumerate(subnets, 1):
print(f"サブネット{i}: {subnet}")
print(f" ネットワークアドレス: {subnet.network_address}")
print(f" ブロードキャストアドレス: {subnet.broadcast_address}")
print(f" 使用可能ホスト数: {subnet.num_addresses - 2}")
print()このように、プログラミングを活用することで、複雑な計算も簡単に行えます。
VLSM(可変長サブネットマスク)とは
リンドくん先生、VLSMって何ですか?普通のサブネット化とは違うんですか?
たなべそうだね、VLSMは必要な規模に応じて異なるサイズのサブネットを作れるんだ。
マンションで例えると、ワンルームから3LDKまで、色々なサイズの部屋を効率的に配置できるようなものだね。
VLSMの基本概念
VLSM(Variable Length Subnet Mask:可変長サブネットマスク)は、1つのネットワーク内で異なるサイズのサブネットを使用できる技術です。
従来の固定長サブネットマスク(FLSM)では、すべてのサブネットが同じサイズである必要がありましたが、VLSMではそれぞれのサブネットに必要なホスト数に応じて、最適なサイズのサブネットを割り当てることができます。
VLSMのメリット
- IPアドレスの効率的な利用 → 必要最小限のアドレス空間を各サブネットに割り当てられます
- 柔軟なネットワーク設計 → 部署や用途に応じて適切なサイズのサブネットを作成できます
- アドレスの無駄を削減 → 小規模なネットワークに大きなアドレス空間を割り当てる必要がありません
VLSM設計の実践例
例として、以下のような要件があるとします。
会社全体: 192.168.10.0/24
- 営業部: 60台のPC
- 開発部: 28台のPC
- 総務部: 12台のPC
- ルーター間接続: 2つのリンク(各2台)
ステップ① 必要なホスト数を多い順に並べる
- 営業部: 60台 → /26が必要(62ホスト)
- 開発部: 28台 → /27が必要(30ホスト)
- 総務部: 12台 → /28が必要(14ホスト)
- ルーター間接続1: 2台 → /30が必要(2ホスト)
- ルーター間接続2: 2台 → /30が必要(2ホスト)
ステップ② 大きいサブネットから順に割り当て
営業部: 192.168.10.0/26
- 範囲: 192.168.10.0 〜 192.168.10.63
開発部: 192.168.10.64/27
- 範囲: 192.168.10.64 〜 192.168.10.95
総務部: 192.168.10.96/28
- 範囲: 192.168.10.96 〜 192.168.10.111
ルーター間接続1: 192.168.10.112/30
- 範囲: 192.168.10.112 〜 192.168.10.115
ルーター間接続2: 192.168.10.116/30
- 範囲: 192.168.10.116 〜 192.168.10.119
このように、VLSMを使うことで、192.168.10.0/24のアドレス空間を効率的に活用できました。
VLSM設計のポイント
VLSM設計を成功させるには、以下のポイントに注意しましょう。
- 必要なホスト数を正確に把握する → 将来の拡張も考慮に入れる
- 大きいサブネットから順に割り当てる → アドレス空間の断片化を防ぐ
- 成長を見込んだ設計 → 余裕を持ったサイズ選択も重要
- ドキュメント化 → 設計内容を必ず記録する
サブネット計算を効率化するテクニック
リンドくん計算は理解できたんですけど、毎回計算するのは大変そうですね...
たなべそこで便利なのが計算ツールや覚えておくべきパターンなんだ。実務では効率が大事だからね。
覚えておくべき重要な数値
サブネット計算で頻繁に使う数値を覚えておくと、計算が格段に速くなります。
2のべき乗表
2¹ = 2
2² = 4
2³ = 8
2⁴ = 16
2⁵ = 32
2⁶ = 64
2⁷ = 128
2⁸ = 256
サブネットマスクの対応表
| プレフィックス | サブネットマスク | ブロックサイズ | ホスト数 |
|---|---|---|---|
| /30 | 255.255.255.252 | 4 | 2 |
| /29 | 255.255.255.248 | 8 | 6 |
| /28 | 255.255.255.240 | 16 | 14 |
| /27 | 255.255.255.224 | 32 | 30 |
| /26 | 255.255.255.192 | 64 | 62 |
| /25 | 255.255.255.128 | 128 | 126 |
| /24 | 255.255.255.0 | 256 | 254 |
オンライン計算ツール
実務では、以下のようなオンラインツールを活用するのも効果的です。
- ipcalc → コマンドラインツール
- Subnet Calculator → Webベースの計算ツール
- 各種ネットワークシミュレータ → Cisco Packet Tracerなど
Pythonスクリプトで自動化
実務では、以下のようなスクリプトを用意しておくと便利です。
import ipaddress
def vlsm_calculator(base_network, requirements):
"""
VLSM設計を自動計算する関数
Args:
base_network: ベースとなるネットワーク (例: '192.168.1.0/24')
requirements: 各サブネットの要件 [(名前, ホスト数), ...]
"""
network = ipaddress.ip_network(base_network)
available = [network]
allocations = []
# ホスト数の多い順にソート
requirements.sort(key=lambda x: x[1], reverse=True)
for name, hosts in requirements:
# 必要なプレフィックス長を計算
required_prefix = 32 - (hosts + 2).bit_length()
# 使用可能なネットワークから割り当て
for i, net in enumerate(available):
if net.prefixlen <= required_prefix:
# サブネットを作成
subnets = list(net.subnets(new_prefix=required_prefix))
allocated = subnets[0]
allocations.append((name, allocated))
# 残りを更新
available.pop(i)
available.extend(subnets[1:])
break
return allocations
# 使用例
base = '192.168.10.0/24'
requirements = [
('営業部', 60),
('開発部', 28),
('総務部', 12),
('ルーター1', 2),
('ルーター2', 2)
]
result = vlsm_calculator(base, requirements)
for name, subnet in result:
print(f"{name}: {subnet}")
print(f" 使用可能範囲: {list(subnet.hosts())[0]} 〜 {list(subnet.hosts())[-1]}")
print()このようなツールを活用することで、複雑なVLSM設計も効率的に行えます。
まとめ
リンドくん最初は難しそうだと思ったんですけど、基本を押さえれば意外と理解できそうですね!
たなべその通り!基礎をしっかり理解することが一番大事なんだ。あとは実践を重ねることで、自然と身についていくよ。ぜひ実際に計算してみたり、ツールを使って設計してみてね!
この記事では、サブネット計算とVLSMの基礎から実践的な応用まで解説してきました。
重要なポイントをおさらいしましょう。
- サブネット化の目的 → ネットワークの効率化、セキュリティ向上、管理のしやすさ
- 基本的な計算手順 → IPアドレスとサブネットマスクの関係を理解し、2進数で考える
- VLSMの活用 → 必要なホスト数に応じて柔軟にサブネットサイズを調整
サブネット設計は、ネットワークエンジニアにとって必須のスキルです。
最初は複雑に感じるかもしれませんが、基礎をしっかり理解し、実際に手を動かして計算してみることで、確実に身につけることができます。
今後、クラウドサービスやIoTデバイスがさらに普及する中で、効率的なネットワーク設計の重要性はますます高まっていくでしょう。
ぜひこの記事で学んだ知識を活かして、実際のネットワーク設計に挑戦してみてください。





