皆さんこんにちは!SB C&Sで Fortinet 製品のプリセールスを担当している長谷川です。
今回は、FortiGateでパケットキャプチャを利用する方法を紹介いたします。
FortiAnalyzer, FortiManager, FortiMail などの姉妹製品でも、パケットキャプチャを同様に実施することができますので、有効活用してください。
Verbose レベル3または、レベル6 で取得したパケットは、特殊な方法で Wireshark で閲覧できる形式に変換することも可能です。
必要な環境
FortiGate側での用意
- CLI画面を操作できるように、SSH/TELNET などの管理アクセスの許可
※コンソール接続でも実施可能ですが、転送速度(9600bps)の関係で、大量の表示には向いていません。
クライアント環境での用意
- ターミナルソフト(TeraTermなど)
- 変換ツール(Wiresharkで閲覧したい場合)
※入手方法は後述
パケット取得
パケット取得までの流れ
パケット取得例として、ICMPのPINGを利用しています。
FortiGateへ、SSH/TELNET等でログイン後、CLI操作にて、下記のコマンドを入力します。
# diagnose sniffer packet [インタフェース名] 'フィルタ' [Verboseのレベル指定] [取得回数]
インタフェース名:物理インタフェースや、仮想インタフェース名を指定します。また、すべてのインタフェースを指定する "any" といった入力も可能です。
入力例:
port1
internal
wan1
vlan10(vlanインタフェースを作成した場合)
ipsec(IPSecVPNのインタフェースを作成した場合)
ppp0(PPPoE接続を行っている場合)
any(すべてのインタフェース)
フィルタ:TCPdump のフィルタ入力に沿って行います。
入力例:
host 1.1.1.1
port 80
tcp
host 1.1.1.1 and port 80
host 1.1.1.1 or port 80
not host 1.1.1.1
not host 1.1.1.1 or not port 80
Verboseのレベル:1~6 までのレベルを指定します。未入力の場合 1 が適用されます。
レベル1 ヘッダ部の取得
レベル2 ヘッダ部とデータ部の取得
レベル3 ヘッダ部とデータ部および、イーサフレーム部の取得
レベル4 インタフェース名とヘッダ部の取得
レベル5 インタフェース名とヘッダ部とデータ部の取得
レベル6 インタフェース名とヘッダ部とデータ部および、イーサフレーム部の取得
取得回数:パケットの取得回数を指定します。未入力の場合、無制限に取得します。
パケットの取得での注意点
本機能は、構築中の通信障害の切り分けを目的としており、運用中の機器に対しての実施は、推奨しておりません。
これは、CPU処理が発生し、機器に負担がかかるためです。
運用中の機器に対して実施する際には、リソースに十分注意してください。
また、パケットの取得を行った際に、目的のパケットが取得できないことが発生します。
・実際にFortiGateまでパケットが届いていない可能性
・FortiASIC-NP による、高速化処理となっている可能性
※CPU処理されたパケットを取得するため
・パケット量が多く、パケットキャプチャデーモンが、パケットを取りこぼしてしまった可能性
パケットの取得操作
FortiGate側でコマンドを入力し、パケット取得状態にしたあと、実際にパケットを発生させます。
パケット取得後は、Ctrl + c でパケット取得状態を解除します。
- ケース1
# diagnose sniffer packet wan1 'host 192.168.1.98'
wan1インタフェースの、192.168.1.98 が含まれるパケットが取得できます。
- ケース2
# diagnose sniffer packet wan1 'host 192.168.1.98 and icmp'
wan1インタフェースの、192.168.1.98 かつ、ICMP が含まれるパケットが取得できます。
- ケース3
# diagnose sniffer packet wan1 'host 192.168.1.98' 4
wan1インタフェースの、192.168.1.98 が含まれるパケットと、取得したインタフェース名が取得できます。
- ケース4
# diagnose sniffer packet any 'host 192.168.1.98'
すべてのインタフェースで、192.168.1.98 が含まれるパケットが取得できます。
- ケース5
# diagnose sniffer packet any 'host 192.168.1.98' 4
すべてのインタフェースで、どのインタフェースからパケットが届いたか、どのインタフェースから出力したかといった情報と、192.168.1.98 が含まれるパケットが取得できます。
- ケース6
# diagnose sniffer packet wan1 'host 192.168.1.98' 3
wan1インタフェースの、192.168.1.98 が含まれるパケットで、イーサフレームを含めて取得できます。
Wiresharkで閲覧できる形式に変換
Verbose レベル3または、レベル6 で取得したパケットは、Fortinet社提供のツールを利用することで、Wireshark で閲覧できる形式に変換可能です。
取得したパケットを、テキストエディタ等で、テキストに貼り付けます。
メーカサイトより、変換ツールを入手します。
https://kb.fortinet.com/kb/documentLink.do?externalID=11186
サイトの最下部より、fgt2eth.exe を入手します。
コマンドプロンプトを利用し、事前に準備したパケットを、入手したプログラムで変換します。
>fgt2eth.exe -in [パケットを貼り付けたテキスト] -out [出力するファイル名]
※変換ツールや、テキストファイル等の所在(パス)に注意してください。
下記は、変換ツール、テキストファイルが、デスクトップに置いてある場合のコマンド例です。
変換に成功したあとは、Wiresharkで開くことができます。
------------------------------------------------------------
本サイトに掲載された情報により、発生したいかなる障害/損害に対しても当社は責任を負いません。
------------------------------------------------------------
以上、ご拝読ありがとうございました。
著者紹介
SB C&S株式会社
技術統括部 第2技術部 1課
長谷川 聡