CML2(Cisco Modeling Lab version 2.0)でパケットキャプチャを取得する方法を説明します。CML2はGUIで簡易的なパケットキャプチャを取得する事は容易ですが、WireSharkを使って詳細な分析を行うのはかなり手間です。WireShark等の詳細分析をするためには、CML2内でミラーポートを実装し、さらにミラーポート先にLinuxサーバを構築してtcpdumpコマンド等を実行する必要があります。
簡易キャプチャ
ラボ作成
パケットキャプチャの動作確認を行うため、ルータ2台でOSPFの経路交換を行います。
パケットキャプチャしたいリンクを選び「Packet Capture」タブを開きます。キャプチャ条件を入力し、「Start」を押下します。
パケットキャプチャの結果は以下のように表示されます。
詳細キャプチャ
ラボ作成
パケットキャプチャを行うために、「ミラーポートを設定するIOSvL2」「パケットキャプチャを実施するLinux機」「パケットキャプチャした結果をホストOS側へと転送するためのExternal Connector」を設けたラボを作成します。
Linux機はいくつかのディストリビューションが候補にあがりますが、オススメは軽量なApline Linuxです。おそらくメモリ8G程度のCML2ではUbuntuの起動すら難しいでしょう。
ミラーポートの設定
IOSvL2にログインしミラーポートを設定します。設定例は以下の通りです。
monitor session 1 source interface Gi0/1 monitor session 1 destination interface Gi0/0
Alpine LinuxのIPアドレス設定
Alpine Linuxを操作するには、Linux機を選んだ状態で「VNC」タブを開きます。するとコンソールに接続する事ができます。
しばらく待つとログイン画面になっていると思いますので、ユーザ名「cisco」パスワード「cisco」でログインします。
ログイン後、rootユーザに権限昇格します。rootパスワードは「cisco」です。
alpine-base:~$ su - Password: alpine-base:~#
/etc/network/interfacesを編集し、Alpine LinuxにIPアドレスを付与します。設定例は以下の通りです。
# vi /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.9.40 netmask 255.255.255.0 gateway 192.168.9.2 hostname alpine-base auto eth1 iface eth1 inet static address 169.254.0.1 netmask 255.255.0.0
設定反映はnetworkingサービスの再起動です。
alpine-base:~# service networking restart * WARNING: you are stopping a boot service * Stopping networking ... * eth0 ... [ ok ] * lo ... [ ok ] * eth1 ... [ ok ] * Starting networking ... * lo ... [ ok ] * eth0 ... [ ok ] * eth1 ... [ ok ] alpine-base:~#
設定されたIPアドレスを確認します。
alpine-base:~# ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:18:90:fc brd ff:ff:ff:ff:ff:ff inet 192.168.9.40/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe18:90fc/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:01:fe:41 brd ff:ff:ff:ff:ff:ff inet 169.254.0.1/16 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe01:fe41/64 scope link valid_lft forever preferred_lft forever
CML2外部のホストからAlpine Linuxへログイン可能な事を確認します。
[root@localhost ~]# ssh 192.168.9.40 -l cisco cisco@192.168.9.40's password: Welcome to Alpine! The Alpine Wiki contains a large amount of how-to guides and general information about administrating Alpine systems. See <http://wiki.alpinelinux.org/>. You can setup the system with the command: setup-alpine You may change this message by editing /etc/motd. alpine-base:~$ su - Password: alpine-base:~#
パケットキャプチャの実施
tcpdumpコマンド等で適宜パケットキャプチャを実施します。
alpine-base:~# tcpdump -i eth1 ip proto 89 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 09:50:50.833298 IP 192.168.12.1 > ospf-all.mcast.net: OSPFv2, Hello, length 56 09:51:03.545173 IP 192.168.12.1 > ospf-all.mcast.net: OSPFv2, Hello, length 56 09:51:15.706797 IP 192.168.12.1 > ospf-all.mcast.net: OSPFv2, Hello, length 56 09:51:29.429479 IP 192.168.12.1 > ospf-all.mcast.net: OSPFv2, Hello, length 56 09:51:37.291184 IP 192.168.12.2 > ospf-all.mcast.net: OSPFv2, Hello, length 56 09:51:43.384779 IP 192.168.12.1 > ospf-all.mcast.net: OSPFv2, Hello, length 60 09:51:43.444646 IP 192.168.12.2 > 192.168.12.1: OSPFv2, Database Description, length 44 09:51:43.499127 IP 192.168.12.2 > 192.168.12.1: OSPFv2, Hello, length 60 09:51:43.554310 IP 192.168.12.1 > 192.168.12.2: OSPFv2, Database Description, length 44
もし、WireSharkなどのGUIツールで分析したい場合は、ファイルに書き出した後にCML2外部のホストへ転送すると良いでしょう。
alpine-base:~# tcpdump -i eth1 ip proto 89 -w /tmp/ospf.cap tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes ^C6 packets captured 6 packets received by filter 0 packets dropped by kernel alpine-base:~# alpine-base:~# alpine-base:~# scp /tmp/ospf.cap root@192.168.9.70:~/ The authenticity of host '192.168.9.70 (192.168.9.70)' can't be established. ECDSA key fingerprint is SHA256:MDvzCjl9vcaGEJ09aNDaokkAf7yCn9BppyQI8JvCSkE. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.9.70' (ECDSA) to the list of known hosts. root@192.168.9.70's password: ospf.cap 100% 684 47.2KB/s 00:00 alpine-base:~#