Mímisbrunnr知恵の泉

← コンピュータネットワーク 一覧

🎓 レベル:発展 | 重要度:A(必須) 📎 前提:サブネット化とCIDR・VLSM

要点(BLUF)

シナリオ

1拠点、ルータ1台+スイッチ1台。割当ブロックは 192.168.20.0/24

セグメント必要ホストVLAN
営業5010
開発2520
管理1099

ステップ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

なぜ設計を先にやるのか(設計の直観)

アドレスを行き当たりばったりで割ると、後で足りなくなったり重複したりして、配線後の手戻りが膨大になります。先に要件→サブネット→ゲートウェイを紙(コード)で確定してから機器に入れれば、設定は設計の転記作業になり、ミスが激減します。実務でも「設計書→設定」の順は鉄則です。

⚠️ よくある誤解

対応 lab

関連