SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

【3分で分かるFortinet】【第3回】FortiGateでパケットキャプチャ

Fortinet
2019.07.11

皆さんこんにちは!SB C&Sで Fortinet 製品のプリセールスを担当している長谷川です。

今回は、FortiGateでパケットキャプチャを利用する方法を紹介いたします。

FortiAnalyzer, FortiManager, FortiMail などの姉妹製品でも、パケットキャプチャを同様に実施することができますので、有効活用してください。

Verbose レベル3または、レベル6 で取得したパケットは、特殊な方法で Wireshark で閲覧できる形式に変換することも可能です。

必要な環境

FortiGate側での用意

  • CLI画面を操作できるように、SSH/TELNET などの管理アクセスの許可
    ※コンソール接続でも実施可能ですが、転送速度(9600bps)の関係で、大量の表示には向いていません。

クライアント環境での用意

  • ターミナルソフト(TeraTermなど)
  • 変換ツール(Wiresharkで閲覧したい場合)
    ※入手方法は後述

パケット取得

パケット取得までの流れ

パケット取得例として、ICMPのPINGを利用しています。

Hasegawa_cap (1).png

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 が含まれるパケットが取得できます。

Hasegawa_cap (2).png

  • ケース2

# diagnose sniffer packet wan1 'host 192.168.1.98 and icmp'

wan1インタフェースの、192.168.1.98 かつ、ICMP が含まれるパケットが取得できます。

Hasegawa_cap (3).png

  • ケース3

# diagnose sniffer packet wan1 'host 192.168.1.98' 4

wan1インタフェースの、192.168.1.98 が含まれるパケットと、取得したインタフェース名が取得できます。

Hasegawa_cap (4).png

  • ケース4

# diagnose sniffer packet any 'host 192.168.1.98'

すべてのインタフェースで、192.168.1.98 が含まれるパケットが取得できます。

Hasegawa_cap (5).png

  • ケース5

# diagnose sniffer packet any 'host 192.168.1.98' 4

すべてのインタフェースで、どのインタフェースからパケットが届いたか、どのインタフェースから出力したかといった情報と、192.168.1.98 が含まれるパケットが取得できます。

Hasegawa_cap (6).png

  • ケース6

# diagnose sniffer packet wan1 'host 192.168.1.98' 3

wan1インタフェースの、192.168.1.98 が含まれるパケットで、イーサフレームを含めて取得できます。

Hasegawa_cap (7).png

Wiresharkで閲覧できる形式に変換

Verbose レベル3または、レベル6 で取得したパケットは、Fortinet社提供のツールを利用することで、Wireshark で閲覧できる形式に変換可能です。

取得したパケットを、テキストエディタ等で、テキストに貼り付けます。

Hasegawa_cap (8).png

Hasegawa_cap_icon_txt.png

メーカサイトより、変換ツールを入手します。

https://kb.fortinet.com/kb/documentLink.do?externalID=11186

サイトの最下部より、fgt2eth.exe を入手します。

Hasegawa_cap (9).png

hasegawa_cap_icon_fgt2eth.png

コマンドプロンプトを利用し、事前に準備したパケットを、入手したプログラムで変換します。

>fgt2eth.exe -in [パケットを貼り付けたテキスト] -out [出力するファイル名]

※変換ツールや、テキストファイル等の所在(パス)に注意してください。

下記は、変換ツール、テキストファイルが、デスクトップに置いてある場合のコマンド例です。

Hasegawa_cap (10).png

Hasegawa_cap_icon_cap.png

変換に成功したあとは、Wiresharkで開くことができます。

Hasegawa_cap (11).png

------------------------------------------------------------
本サイトに掲載された情報により、発生したいかなる障害/損害に対しても当社は責任を負いません。
------------------------------------------------------------

以上、ご拝読ありがとうございました。

著者紹介

SB C&S株式会社
技術統括部 第2技術部 2課
長谷川 聡