この記事はフューチャーAdvent Calender 2021 3日目の記事です。
昨日は@shibukawaさんによる「趣味の勉強、技術ブログ、勉強会、OSS、ネタ選びをどうするか?」でした。
1. はじめに
こんにちは!フューチャー入社3年目の本田です。
業務でクラウドを触れる機会は多いですが、オンプレはクラウドとのVPN等限られた機会でしか触れてきませんでした。
オンプレ学習欲求はありますが、そのためにルーターやスイッチを買うかと言われると...という程度のモチベーションしかなく、AWSのようにアカウントさえ作れば気軽に自身のパソコン1つでハンズオンできるような環境を求めていました。
そこで、今回はCisco社の提供しているPacket Tracerというツールを用いてハンズオンを実施してみたという内容の記事を書きました。L2スイッチを用いて通信の仕組みの確認と可視化を試すことでPacket Tracerの凄さを少しでもお伝えしたいと思います。
2. 環境
- Cisco Packert Tracer 8.0.1
3. Packert Tracerとは
Cisco製のネットワーク機器のシミュレートが可能なツールです。
CCNA(Cisco Certified Network Associate)に代表されるようにCisco社は多くの認定資格を提供しており、同時にPacket Tracerを活用した学習教材なども提供しています。
自身のパソコン1つのみでネットワーク機器に関する実務に近い経験を積むことができるため、インフラやネットワーク初心者の方にもおすすめできるツールです。
以下の図のようににPCやネットワーク機器をケーブルで接続し、実際にルーターのコンフィグを設定したり、PCからpingを飛ばしたり、パケットキャプチャを行うことが可能です。
4. L2スイッチで遊んでみる
本記事では、以下の順に進めていきます。あくまでハンズオンが目的なので細かい説明はご容赦ください。
- L2スイッチで機器を接続する
- Snifferを利用してパケットをキャプチャする
- シミュレーションモードで通信の流れを可視化する
- VLANを設定する
利用機器一覧
Packet Tracerを起動すると左下にデバイス一覧が表示されます。今回利用するデバイスの場所を一覧で記しておきます。
Cisco Catalyst 2960 シリーズ スイッチ
Cisco社の提供するL2スイッチです。2019年10月31日でサポートが終了しているようですが、学習に利用する分には問題ないと思います。
Laptop
ノートパソコンです。モジュールを換装することで有線だけでなくwifiでルータと接続することもできました。
ストレートケーブル
近年クロスケーブルを使う必要性も減ってきていると思われるので本記事ではストレートケーブルで統一します。
Sniffer
ネットワークアナライザやパケットアナライザと呼ばれるものです。特定のポートに送られたパケットのキャプチャやフィルタリングが可能なソフトウェアを搭載したパソコンのようなイメージです。ネットワークのトラブルシューティングやユーザの行動調査などに用いられます。
4.1 L2スイッチで機器を接続する
デバイスをドラッグすることで任意のネットワークを構成することができます。
シンプルな構成として以下のようにデバイスを配置し、ケーブリングしてみます。
今回は以下のように接続しました。
- PC0:FastEthernet0 ⇔ Switch0:FastEthernet0/1
- Switch0:FastEthernet0/2 ⇔ PC1:FastEthernet0
Switch側の準備が整うとケーブル状に表示されていたオレンジ色の丸が全て緑になります。右図の状態になればOKです。
次にPC側のIPアドレスを設定していきます。
PCをダブルクリックし、デスクトップタブからIP Configurationを選択し、IPアドレスとサブネットマスクを設定します。
端末名 | IPアドレス | サブネットマスク |
---|---|---|
PC0 | 192.168.0.1 | 255.255.255.0 |
PC1 | 192.168.0.2 | 255.255.255.0 |
PC0のコマンドプロンプトを開きPC2にpingを打って疎通確認してみます。
以下のように表示されれば成功です。
C:\>ping 192.168.0.2
Pinging 192.168.0.2 with 32 bytes of data:
Reply from 192.168.0.2: bytes=32 time=1ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Ping statistics for 192.168.0.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
4.2 Snifferを利用してパケットをキャプチャする
4.1疎通ができたのでもう少し通信の細かくみてみたいと思います。
pingによって学習したARPテーブル等をリセットしたいので一旦ネットワークをリセットします。
SnifferをSwitch0:FastEthernet0/3に接続します。
Switchをダブルクリックしてcliを起動し、以下のコマンドを入力します。
FastEthernet0/1(PC0)を送信元とし、FastEthernet0/3(Sniffer)を宛先とすることでパケットが転送されるようになり、パケットの解析が可能となります。こうした機能をポートミラーリングと呼び、CiscoではSPAN(Switched Port Analyzer)と呼ばれているようです。
enable
config terminal
monitor session 1 source interface FastEthernet0/1
monitor session 1 destination interface FastEthernet0/3
end
パケットを見やすくするため、Snifferの設定からEdit Filtersを選択し、ARPとICMPのみ表示されるように設定し、Clearボタンを謳歌します。
この状態で、PC0からPC1にpingを実施します。
pingが成功したことを確認後、SnifferをダブルクリックしGUIタブを開くをARP実施後にICMPが4往復していることがわかります。
①Ethernet層のDESTが FFFF.FFFF.FFFF
となっているのでブロードキャストしていることがわかります。今回のネットワークでは、PC0からPC1およびSnifferにパケットが送られ、宛先(192.168.0.2)のMACアドレスを要求します。
②192.168.0.2と合致したPC1からARP応答が返ります。これにより、PC0はPC1(192.168.0.2)のMACアドレスを知ることができます。
コマンドプロンプトを開き、下記コマンドを実行することで学習済みのARPテーブルを確認することができます。
PC0のARPテーブル
C:\>arp -a
Internet Address Physical Address Type
192.168.0.2 00d0.bcd5.6ec0 dynamic
PC1のARPテーブル
arp -a
Internet Address Physical Address Type
192.168.0.1 0090.0c77.2938 dynamic
Switchも同様にMACアドレスを学習しており、MACアドレスとポートの組み合わせを記憶しています。ARPテーブルとは異なりIPアドレスは保持していません。これが第2層(データリンク層)と呼ばれる層の役割です。
Switch#show mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0090.0c77.2938 DYNAMIC Fa0/1
1 00d0.bcd5.6ec0 DYNAMIC Fa0/2
これらのテーブルにより、宛先が明確になりお互いの機器での通信が可能となります。
③PC0がPC1に対してICMPを送る
④PC1がPC0に対して応答する
このようにPacket Tracerでは、ただ機器を繋げて疎通をするだけでなく実戦に近い形でパケットの取得やトラブルシューティングをしてみるといったことも可能です。
4.3 シミュレーションモードで通信の流れを可視化する
4.2ではSnifferというデバイスを利用してパケットをキャプチャしましたが、Packet Tracerにはシミュレーションモードという便利な機能があり、正直Snifferを利用する必要はあまりないと思います。便利な機能なのでシミュレーションモードも利用してみます。
画面右下にRealtimeとSimulationというボタンが並んで配置されています。今回はSimulationモードに切り替えて4.2と同様にPC0からPC1にpingを実行してみます。
C:\>ping 192.168.0.2
Pinging 192.168.0.2 with 32 bytes of data:
pingの応答がなくなりました。疎通できなくなったわけではなく、時が止まっています。
画面右側のEvent Listを見るとPC0からICMPを送ろうとする過程でARP要求が発生していることが確認できます。この状態で再生ボタンを押すことで時間を進めることができます。
時間を進めるとEvent Listが追加されると共に、通信の流れを可視化することができます。
Event Listをクリックすることで、どのレイヤでどういった通信が行われているか確認することができるのでアニメーションで全体の流れを把握し、細かく中身をみたい部分はEvent Listから確認することでネットワークの学習にとても役立つ機能だと感じました。
4.4 VLANを設定する
最後にL2スイッチの機能としてVLANを簡単に試してみたいと思います。
VLANとは仮想的なLANを意味するもので同じスイッチ内でもポートごとにネットワークを分割することが出来る機能です。
今回はハンズオンが目的なので、細かい説明は抜きにしてとりあえず試してみます。
以下のような構成を用意しました。PC1とPC2が192.168.0.0/24、PC3とPC4が192.168.1.0/24のサブネットに属するように設定しています。
スイッチのcliからVLANのdefaultの状態を確認してみます。すると、以下の通り全てのポートがVLAN 1に属することが確認できました。
Switch#enable
Switch#show vlan
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/10, Fa0/11, Fa0/12
Fa0/13, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/20
Fa0/21, Fa0/22, Fa0/23, Fa0/24
Gig0/1, Gig0/2
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
この状態でPC1からPC2にpingを打つことでARP要求を発生させた場合、以下の図に示す通り全ての端末にARP要求が送られることがわかりました。4.2で説明した通り、L2スイッチはIPアドレスで経路の制御を行なっているわけではないので、サブネットを分割したとしても、L2スイッチからしたら一つのネットワークに過ぎないわけです。
そこで、L2スイッチ上で仮想的にネットワークを分割するためのVLANが必要となってきます。
ネットワークを分割するため、VLAN 2を作成します。名前は適当にtest_vlanにします。
Switch>enable
Switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#vlan 2
Switch(config-vlan)#name test_vlan
Switch(config-vlan)#end
作成したVLAN 2にPC3とPC4がつながっているポート(ここではFa0/3とFa0/4)を割り当てます。
Switch>enable
Switch#config terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface FastEthernet0/3
Switch(config-if)#switchport access vlan 2
Switch(config-if)#exit
Switch(config)#interface FastEthernet0/4
Switch(config-if)#switchport access vlan 2
Switch(config-if)#end
VLANの割り当てが完了したら、再度VLANの状態を確認してみます。Fa0/3, Fa0/4がVLAN 2に割り当てられていることが確認できました。
Switch#show vlan
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/5, Fa0/6
Fa0/7, Fa0/8, Fa0/9, Fa0/10
Fa0/11, Fa0/12, Fa0/13, Fa0/14
Fa0/15, Fa0/16, Fa0/17, Fa0/18
Fa0/19, Fa0/20, Fa0/21, Fa0/22
Fa0/23, Fa0/24, Gig0/1, Gig0/2
2 test_vlan active Fa0/3, Fa0/4
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
この状態でPC1からPC2にpingを打つことでARP要求を発生させた場合、以下の図に示す通りPC1からPC2へのみARP要求が発生していることが確認できました。仮想的にレイヤ2でネットワークを分割することができました。
VLANを設定しない場合だと、無駄なトラフィックが発生したり、PCのIPアドレスを変えることでサブネットの移動が可能な状態でした。VLANによってセキュリティやネットワークの効率が向上することを改めて確認することができました。
5. おわりに
当初の目的であったネットワーク機器を買わずにオンプレのハンズオンがしたいという願望を満たすことができたので個人的には満足しています。
今回はL2スイッチしか触れることができませんでしたが、他にもたくさんの機器が用意されているので、機会があればまた記事にしたいと思います。
明日は@RuyPKGさんです。