ルーティングの検証などで複雑な論理構成のネットワークを組みたいとき、ルータの物理インタフェースが足りなくなることがあります。そんなときは、各ルータの物理インタフェースを1つだけ L2 スイッチにつなぎ、その中に IEEE 802.1Q(VLAN タグ)で論理ネットワークを作るのが簡単です。配線を変えずに、コマンドだけでセグメントを増やせます。
- ルータ1ポート+L2スイッチで、802.1Q の論理セグメントを作る方法
- VLAN 番号・IP アドレスをルータ番号と結びつける決め方
- ループバックと MAC アドレスを、見ただけでルータがわかる値にする工夫
802.1Q を使った論理ネットワーク
例として、ルータを3台、L2 スイッチを1台用意し、各ルータの FastEthernet0/0(Fa0/0)をスイッチにつなぎます。物理的な配線はこれだけです。
ルータ側では、物理インタフェースの下にサブインタフェースを作り、それぞれに VLAN 番号と IP アドレスを割り当てます。スイッチは VLAN ごとにフレームを分けて転送するので、同じ VLAN のサブインタフェース同士が、1本のケーブルでつながっているのと同じ状態になります。1本の物理リンクに、VLAN タグの付いた複数のセグメントのフレームが流れるイメージです。
L2 スイッチの設定
L2 スイッチは、ルータを接続したポートをすべて 802.1Q のトランクにします。Cisco Catalyst なら、ポートで switchport mode trunk を設定します(機種によっては、先に switchport trunk encapsulation dot1q が必要です)。
あわせて、使う VLAN(ここでは 12 と 23)をスイッチに作っておきます(vlan 12、vlan 23)。トランクは既定ですべての VLAN を通しますが、スイッチ上に存在しない VLAN のフレームは転送されません。
VLAN 番号と IP アドレスの決め方
IP アドレスは自由に決めてかまいませんが、ルールを決めておくと構成を追いやすくなります。私は次のように決めています。
| 項目 | 決め方 | 例(R1–R2 間) |
|---|---|---|
| VLAN 番号 | つなぐ2台のルータ番号を並べる | 12 |
| 第1・第2オクテット | 任意(私は 192.168 をよく使う) | 192.168 |
| 第3オクテット | VLAN 番号と同じ | 192.168.12.0/24 |
| 第4オクテット | ルータ番号 | R1 は .1、R2 は .2 |
こうしておくと、セグメントを見ればどのルータ間のものか、IP アドレスを見ればどのルータに設定されたものかが、すぐにわかります。
R1–R2 間のセグメントを作る
R1 と R2 の間なので、VLAN 番号は 12 です。両方のルータに、サブインタフェース Fa0/0.12 を作ります。
R1
R1(config)#interface fastEthernet 0/0.12 R1(config-subif)#encapsulation dot1Q 12 R1(config-subif)#ip address 192.168.12.1 255.255.255.0
R2
R2(config)#interface fastEthernet 0/0.12 R2(config-subif)#encapsulation dot1Q 12 R2(config-subif)#ip add 192.168.12.2 255.255.255.0
| コマンド | 意味 |
|---|---|
| interface fastEthernet 0/0.12 | Fa0/0 の下にサブインタフェース 12 を作る。ドットの後ろの番号は自由ですが、VLAN 番号とそろえると見やすくなります |
| encapsulation dot1Q 12 | このサブインタフェースの送受信に、VLAN 12 の 802.1Q タグを使う |
| ip address 192.168.12.1 255.255.255.0 | サブインタフェースに IP アドレスを設定する(ip add は ip address の省略形) |
サブインタフェースは、親の物理インタフェースが up していないと使えません。物理インタフェース(Fa0/0)に no shutdown を入れておきます。サブインタフェース側には IP アドレスを設定し、物理インタフェースには IP アドレスを付けなくてかまいません。
R1 から R2 に ping します。
R1
R1#ping 192.168.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 16/22/28 ms
! は応答があったこと、. は応答を待つ間にタイムアウトしたことを表します。最初の1回だけ . になるのは、多くの場合、相手の MAC アドレスをまだ ARP で調べている最中に1発目を送ろうとしたためです。2回目以降が届いていれば、セグメントはつながっています。
これで、R1–R2 間の論理セグメントができました。
R2–R3 間のセグメントを作る
同じ要領で、R2 と R3 の間に VLAN 23 のセグメントを追加します。R2 には、同じ Fa0/0 の下に2つ目のサブインタフェースを作ります。
R2
R2(config)#interface fastEthernet 0/0.23 R2(config-subif)#encapsulation dot1Q 23 R2(config-subif)#ip address 192.168.23.2 255.255.255.0
R3
R3(config)#interface fastEthernet 0/0.23 R3(config-subif)#encapsulation dot1Q 23 R3(config-subif)#ip address 192.168.23.3 255.255.255.0
R2 から R3 に ping します。
R2
R2#ping 192.168.23.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/14/24 ms
これで、R2–R3 間の論理セグメントもできました。R2 は物理インタフェース1つで、2つのセグメントにつながっています。
ループバックアドレスの設定
ネットワークの情報を他のルータにアドバタイズしたいときや、疎通テストの宛先として、ループバックアドレスを設定しておくと便利です。ループバックは物理インタフェースの状態に左右されず、常に up しています。私は、4つのオクテットすべてをルータ番号にしたアドレスを /32(255.255.255.255)で設定します。
R1
R1(config)#interface Loopback0
R1(config-if)# ip address 1.1.1.1 255.255.255.255
R2
R2(config)#interface Loopback0
R2(config-if)# ip address 2.2.2.2 255.255.255.255
R3
R3(config)#interface Loopback0
R3(config-if)# ip address 3.3.3.3 255.255.255.255
R1 にループバックを追加したい場合は、たとえば 11.11.11.11 のように、アドレスを見てルータ番号がわかる値にします。
1.1.1.1 などは、インターネット上で実際に使われているグローバルアドレスです(1.1.1.1 は公開 DNS サービスのアドレスとして知られています)。インターネットにつながらない閉じた検証環境だけで使い、外部と通信する環境では使わないようにします。
MAC アドレスの変更
Wireshark などでパケットキャプチャを見るときや、ARP テーブルを確認するときのために、ルータの MAC アドレスを変えておくと便利です。MAC アドレスを見てルータ番号がわかると、どのルータのパケットか迷わずに済みます。
R1
R1(config)#interface FastEthernet0/0
R1(config-if)# mac-address 0000.0000.1111
R2
R2(config)#interface FastEthernet0/0
R2(config-if)# mac-address 0000.0000.2222
R3
R3(config)#interface FastEthernet0/0
R3(config-if)# mac-address 0000.0000.3333
MAC アドレスは物理インタフェース(Fa0/0)に設定します。その下のサブインタフェースも、同じ MAC アドレスを使います。
show ip arp:R2 の ARP テーブル
R2
R2#show ip arp Protocol Address Age (min) Hardware Addr Type Interface Internet 192.168.12.1 1 0000.0000.1111 ARPA FastEthernet0/0.12 Internet 192.168.12.2 - 0000.0000.2222 ARPA FastEthernet0/0.12 Internet 192.168.23.2 - 0000.0000.2222 ARPA FastEthernet0/0.23 Internet 192.168.23.3 0 0000.0000.3333 ARPA FastEthernet0/0.23
| 表示 | 意味 |
|---|---|
| 192.168.12.1 / 0000.0000.1111 | R1 のアドレス。MAC アドレスの末尾で R1 だとわかる |
| 192.168.23.3 / 0000.0000.3333 | R3 のアドレス |
| Age (min) が – | R2 自身のアドレス。.12.2 と .23.2 のどちらも 0000.0000.2222 で、サブインタフェースが物理インタフェースの MAC アドレスを使っていることがわかる |
| Interface | そのアドレスがあるサブインタフェース(Fa0/0.12、Fa0/0.23) |
MAC アドレスは、本来は機器ごとに一意に割り当てられる値です。手で決めた値は、検証環境の中で重複しないように管理し、本番のネットワークには持ち込まないようにします。
私の検証ネットワーク構成
私はよく、次の構成でネットワークの検証をしています。物理的には6台のルータを L2 スイッチにつないでいるだけで、セグメントはすべてサブインタフェースで作っています。
| セグメント | VLAN | つなぐルータ |
|---|---|---|
| 192.168.12.0/24 | 12 | R1(.1)– R2(.2) |
| 192.168.23.0/24 | 23 | R2(.2)– R3(.3) |
| 192.168.25.0/24 | 25 | R2(.2)– R5(.5) |
| 192.168.26.0/24 | 26 | R2(.2)– R6(.6) |
| 192.168.34.0/24 | 34 | R3(.3)– R4(.4) |
| 192.168.35.0/24 | 35 | R3(.3)– R5(.5) |
| 192.168.36.0/24 | 36 | R3(.3)– R6(.6) |
ネットワークアドレスや IP アドレスを見れば、ルータ間のつながりがすぐにわかります。この構成のよいところは、R1 から R4 へ通信するとき、R2 から R3 へ向かう経路が、直接・R5 経由・R6 経由の3つあることです。経路の切り替えなど、いろいろなパターンを確認できます。
このブログの検証も、基本はこの構成で行っています。
うまくつながらないとき
| 状態 | よくある原因 | 確認すること |
|---|---|---|
| どのセグメントにも ping が通らない | 物理インタフェースが shutdown のまま | ルータで show ip interface brief を見て、Fa0/0 とサブインタフェースが up か確かめる |
| 特定の VLAN だけ通らない | スイッチにその VLAN がない、またはトランクで許可されていない | スイッチで show vlan brief と show interfaces trunk を見る |
| 相手のアドレスが ARP テーブルに出ない | 両側の encapsulation dot1Q の VLAN 番号が違う | 両方のルータでサブインタフェースの設定を見比べる |
| ARP は解決するが ping が通らない | IP アドレスやサブネットマスクの間違い | セグメントのアドレスが表の決め方どおりか確かめる |
まとめ
ネットワークの構成を把握するのにストレスを感じないよう、できるだけ単純にして、検証したい機能の動作確認に集中しましょう。この記事で決めたルールをまとめます。
| 項目 | 決め方 | 例 |
|---|---|---|
| 物理配線 | 各ルータの物理インタフェース1つを L2 スイッチのトランクポートにつなぐ | Fa0/0 |
| VLAN 番号 | つなぐ2台のルータ番号を並べる | R2–R3 間は 23 |
| サブインタフェース | VLAN 番号と同じ番号にする | Fa0/0.23 |
| IP アドレス | 第3オクテットは VLAN 番号、第4オクテットはルータ番号 | R3 は 192.168.23.3 |
| ループバック | 4つのオクテットすべてをルータ番号にする(/32) | R3 は 3.3.3.3 |
| MAC アドレス | 末尾をルータ番号にする | R3 は 0000.0000.3333 |
コメント