🎓 レベル:発展 | 重要度:A(必須) 📎 前提:サブネット化とCIDR・VLSM
要点(BLUF)
- これまでの章を1つのシナリオで総動員します:サブネット設計 → VLAN → IP → ルーティング → SSH → 疎通確認。
- 設計はまず要件(必要ホスト数)からVLSMでアドレスを切るところから。手順を飛ばさず順に。
- 最後は層別の確認で疎通を保証します(
[[08-03_トラブルシューティングの体系]])。
シナリオ
1拠点、ルータ1台+スイッチ1台。割当ブロックは 192.168.20.0/24。
| セグメント | 必要ホスト | VLAN |
|---|---|---|
| 営業 | 50 | 10 |
| 開発 | 25 | 20 |
| 管理 | 10 | 99 |
ステップ1:サブネット設計(VLSM)
必要ホストの多い順に、ちょうど足りるブロックを割り当てます([[03-02_サブネット化とCIDR]] の手法)。
import ipaddress
base = ipaddress.ip_network("192.168.20.0/24")
needs = [("Sales(VLAN10)", 50), ("Dev(VLAN20)", 25), ("Mgmt(VLAN99)", 10)]
next_addr = int(base.network_address)
plan = []
for name, n in needs:
bits = 1
while (2 ** bits) - 2 < n:
bits += 1
prefix = 32 - bits
block = 2 ** bits
if next_addr % block != 0:
next_addr += block - (next_addr % block)
sub = ipaddress.ip_network((next_addr, prefix))
gw = list(sub.hosts())[0]
plan.append((name, sub, gw, block - 2))
next_addr += block
for name, sub, gw, usable in plan:
print(f"{name:14} {str(sub):18} gw={gw} usable={usable}")
実行結果:
Sales(VLAN10) 192.168.20.0/26 gw=192.168.20.1 usable=62
Dev(VLAN20) 192.168.20.64/27 gw=192.168.20.65 usable=30
Mgmt(VLAN99) 192.168.20.96/28 gw=192.168.20.97 usable=14
営業は /26(62台)、開発は /27(30台)、管理は /28(14台)。各サブネットの最初のホストをゲートウェイ(SVI)に使います。
ステップ2:スイッチ(VLANとトランク)
Switch(config)# vlan 10
Switch(config-vlan)# name Sales
Switch(config)# vlan 20
Switch(config-vlan)# name Dev
Switch(config)# vlan 99
Switch(config-vlan)# name Mgmt
! 端末ポート(例: 営業)
Switch(config)# interface range Gi0/2 - 10
Switch(config-if-range)# switchport mode access
Switch(config-if-range)# switchport access vlan 10
! ルータ向けトランク
Switch(config)# interface Gi0/1
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan 10,20,99
ステップ3:ルータ(Router-on-a-stick)
1本のトランクに、VLANごとのサブインターフェースを立ててVLAN間ルーティングを実現します。
Router(config)# interface Gi0/0.10
Router(config-subif)# encapsulation dot1Q 10
Router(config-subif)# ip address 192.168.20.1 255.255.255.192
Router(config)# interface Gi0/0.20
Router(config-subif)# encapsulation dot1Q 20
Router(config-subif)# ip address 192.168.20.65 255.255.255.224
Router(config)# interface Gi0/0.99
Router(config-subif)# encapsulation dot1Q 99
Router(config-subif)# ip address 192.168.20.97 255.255.255.240
Router(config)# interface Gi0/0
Router(config-if)# no shutdown
各サブインターフェースのIP/マスクが、ステップ1の設計(gw とプレフィックス)と一致していることを確認します。
ステップ4:管理アクセス(SSH)
[[08-02_初期設定]] の手順でSSHを有効化し、管理VLANから安全に運用できるようにします。
ステップ5:疎通確認(層別)
Router# show ip interface brief ! L1/L3: IFとIPがup
Switch# show vlan brief ! L2: VLAN割当
Switch# show interfaces trunk ! L2: トランクのVLAN
Router# show ip route ! L3: 直結3サブネットが載る
端末からの確認:
ping 192.168.20.1 # 自VLANのゲートウェイ(L3到達)
ping 192.168.20.65 # 別VLAN(VLAN間ルーティングが効く)
別VLANのゲートウェイへ ping が通れば、VLAN・トランク・サブインターフェース・サブネット設計がすべて噛み合っています。
設計トポロジ
graph TD R["ルータ(Gi0/0 サブIF: .10/.20/.99)"] SW["スイッチ(トランクGi0/1)"] V10["VLAN10 営業 192.168.20.0/26"] V20["VLAN20 開発 192.168.20.64/27"] V99["VLAN99 管理 192.168.20.96/28"] R ---|"802.1Qトランク"| SW SW --> V10 SW --> V20 SW --> V99
なぜ設計を先にやるのか(設計の直観)
アドレスを行き当たりばったりで割ると、後で足りなくなったり重複したりして、配線後の手戻りが膨大になります。先に要件→サブネット→ゲートウェイを紙(コード)で確定してから機器に入れれば、設定は設計の転記作業になり、ミスが激減します。実務でも「設計書→設定」の順は鉄則です。
⚠️ よくある誤解
- 「サブインターフェースのマスクは全部/24」ではない。VLSMで切ったなら、各VLANの**設計マスク(/26・/27・/28)**に合わせます。食い違うと疎通しません。
- 「トランクは黙って全VLANを通す」ではない。
allowed vlanに載せ忘れたVLANは通りません。 - 「VLAN間はスイッチだけで通る」ではない。L3(ルータのサブIF or L3スイッチのSVI)が無いとVLANをまたげません。
対応 lab
[[networking-study/labs/08-04_capstone_subnet.py]]— 総合演習のサブネット設計を再計算
関連
- 設計手法:
[[03-02_サブネット化とCIDR]]/VLAN:[[02-03_VLANとトランク]]/SSH:[[08-02_初期設定]] - 確認:
[[08-03_トラブルシューティングの体系]]/章ハブ:[[08-00_CCNA実技とトラブルシューティング_目次]]