GNS3 2.0からはKVM間のパケットキャプチャも取れるようになるぞい

Posted on 2017/01/04(Wed) 11:05 in technical

はじめに

GNS3 1.5までは、KVMを用いた場合は仮想ノード間の直結リンクをパケットキャプチャすることはできませんでした。

GNS3 2.0系からは、KVMを用いた場合でも、仮想ノード間の直結リンクをパケットキャプチャすることができるようになると言われています。

事実であれば個人的には非常に嬉しいので、現在開発中の 2.0 beta 1 を使って確認しておきたいと思います。

警告

GNS3 1.5以前でも、(GNS3の)SWを挟めばパケットキャプチャすることは可能です。

また、一般には使用されませんが、GNS3のKVM仮想ノード間リンクはUDPトンネルによって実現されているため、loopbackをキャプチャして自力でデカプセルすることで、ノード間の通信内容を確認することができます。

インストール

インストール方法は https://gns3.com/discussions/gns3-2-0-beta-1-released に従いたいところですが、ppaで入れた1.5系の環境も残しておきたいのでvirtualenvを使います。

つまりこうです。

$ virtualenv gns3_2.0b1
$ source gns3_2.0b1/bin/activate
(gns3_2.0b1) $ pip3 install gns3-gui==2.0.0b1
(gns3_2.0b1) $ pip3 install gns3-server==2.0.0b1

ただし、そのままではsipおよびPyQt5が不足するため、エラーに従って対処します。

(gns3_2.0b1) $ gns3
Fail update installation: No module named 'sip'
Can't import Qt modules: Qt and/or PyQt is probably not installed correctly...
(gns3_2.0b1) $ pip install sip
(gns3_2.0b1) $ gns3
Fail update installation: No module named 'PyQt5'
Can't import Qt modules: Qt and/or PyQt is probably not installed correctly...
(gns3_2.0b1) $ pip install PyQt5

警告

初めて導入する人向け。

  • GNS3のキャプチャ機能が使用するWiresharkは事前に導入しておいてください。
  • Ubuntu 16.04の場合、ユーザー権限でキャプチャを実行する場合は、実行ユーザーをwiresharkグループに追加するか、 sudo chmod 755 /usr/bin/dumpcap のように実行権限を与えておく必要があります。

で、起動します。

(gns3_2.0b1) $ gns3

構成

KVMの仮想ノード2台を適当に構成します。今回はvSRXを2台直結しました。

0104_gns3_2.0beta_kvm_capture_001.png

vSRXにはこんな感じの設定が入っています。(図中 e1/0 が ge-0/0/0 にあたります)

root> show configuration | display set
set version 15.1X49-D50.3
set system root-authentication encrypted-password "$5$P1eVC.km$p5ML/j5ifpwkViPEhToKeuo.6zDNdTi8prC1ngUGs15"
set system services ssh
set system services web-management http interface fxp0.0
set system syslog user * any emergency
set system syslog file messages any any
set system syslog file messages authorization info
set system syslog file interactive-commands interactive-commands any
set system license autoupdate url https://ae1.juniper.net/junos/key_retrieval
set security forwarding-options family mpls mode packet-based
set interfaces ge-0/0/0 unit 0 family inet address 192.168.10.1/24
set interfaces ge-0/0/0 unit 0 family inet6 address 2001:db8::1/64 preferred
set interfaces fxp0 unit 0 family inet address 192.168.201.1/24

とりあえずping投げっぱなしにしておきます。

root> ping 192.168.10.2
PING 192.168.10.2 (192.168.10.2): 56 data bytes
64 bytes from 192.168.10.2: icmp_seq=0 ttl=64 time=18.091 ms
64 bytes from 192.168.10.2: icmp_seq=1 ttl=64 time=8.008 ms
64 bytes from 192.168.10.2: icmp_seq=2 ttl=64 time=11.331 ms

キャプチャ

直結リンクの上で右クリックして "Start Capture" を選択します。

0104_gns3_2.0beta_kvm_capture_002.png

リンクタイプとファイル名を決定できるので、適当に決めます。大抵の場合デフォルトで問題ありません。

0104_gns3_2.0beta_kvm_capture_003.png

Wiresharkが立ち上がり、パケットキャプチャが開始されます。

0104_gns3_2.0beta_kvm_capture_004.png

素晴らしい。

しかも、キャプチャしているリンクの上には、なんと虫眼鏡アイコンが描かれるようになったんだぞ!(どうでもいい追加情報)

警告

ちなみにblog用に画像取得しようと思って、上記の手順でパケットキャプチャ開始したらqemuごと落ちたことがあるんだけど、そうなってもみんな怒らないでくれ。頼む。原因は知らん。

当然VLANもキャプチャできるので、何がとは言いませんが大丈夫です。

0104_gns3_2.0beta_kvm_capture_005.png

おしまい

GNS3 2.0以降ならKVMの仮想ノード直結リンクもパケットキャプチャが取得できそうなので、2.0リリースが待ち遠しい。

今すぐ使いたい人は2.0 betaをどうぞ。

というわけです。