BIG-IPでパケットキャプチャを取得する

# はじめに

負荷分散装置 BIG-IP を経由する通信をキャプチャする方法を紹介します。

通信に問題が発生した際に、最初に疑われるのはネットワークになると思います。
ネットワーク上で問題が発生していないか確認する方法の最終手段はキャプチャー取得です。

今回は、BIG-IPを経由する通信のパケットキャプチャ(トレース)を取得する方法について整理します。


# パケットキャプチャ取得方法


| | 取得方法 | TLS復号 | 保管場所 | 説明         |
|-- |----------|------------- |-------------|-------------|
| 1| tcdpump | 不可       | 内部         |指定したインタフェースで取得したパケットを内部に保管|
| 2| tcpdump + ssldump | 可         | 内部       |BIG-IPのVirtual ServerでSSL終端した通信を復号|
| 3| tcpdump + db値変更 | 可(※)        | 内部       |BIG-IPのVirtual ServerでSSL終端した通信を復号|
| 4| clone pool  | 不可        | 外部転送         |BIG-IPのVirtual Server前後のパケットを転送(BIG-IP前後のいずれかがTLS暗号化されていなければ転送先機器で解析可)|
| 5| sslo  | 不可        | 外部転送         |SSLOライセンス必要|


※ トラブルシューティング用途でdb値変更によりTLS復号可


# 1.tcpdump


```console: 良く利用するコマンド例
tcpdump -ni 0.0:nnn -s 0 -w /var/tmp/20230629_xxxx01.pcap
```

| | オプション | 説明 |
|-- |---------- |-------------|
| 1| -ni | 0.0は全インターフェス、:nを付けてBIG-IP固有情報を末尾に付与       |
| 2| -s | 0はサイズが無制限(Defaultは96byte)       |
| 3| -w | ファイル名には日付_用途_管理番号を含める  |

上記コマンドで取得したキャプチャーファイルをssh(scp)で転送し、Wiresharkで解析する


```console: 50MB x 3ファイルでローテーションする例
tcpdump -ni 0.0:nnn -s 0 -w /var/tmp/20230629_xxxx01.pcap -C 500 -W 3
```
tcpdumpを取り続けたい場合に特定サイズ・ファイル数でローテーションする

| | オプション | 説明 |
|-- |---------- |-------------|
| 1| -C | 500MB毎にファイル切替(.pcap0,.pacap1,と作成していく)      |
| 2| -c | 50000パケット毎にファイル切替(.pcap0,.pacap1,と作成していく)       |
| 3| -W | 3ファイルでローテーション  |

tcpdump稼働によりCPU使用率は数%程度
(ただしBIG-IPの型番やリソース使用状況に依存する可能性があるため実機で要検証)

# 2.tcpdump + ssldump

ssldumpにより暗号化通信の復号を行う。
ただし、SSL ciphersにより復号できない場合は、SSL ciphersを変更したり、追加iRuleが必要となる。

K10209: Overview of packet tracing with the ssldump utility
https://my.f5.com/manage/s/article/K10209

# 3.tcpdump + db値変更

v15.0.0以降では、db値変更とtcpdumpへの--f5 sslオプションを設定することで、
通信を復号したキャプチャーを取得できるようになっています。

K31793632: Creating a decrypted tcpdump capture without using an iRule
https://my.f5.com/manage/s/article/K31793632

# 4.clone pool

clone pool は、Virtual Serverを経由する前後のトラフィックをIDSやキャプチャー機器へ転送する機能

K13392: Configuring the BIG-IP system to send traffic to an intrusion detection system
https://my.f5.com/manage/s/article/K13392

:::note warn
制約事項：MACアドレスを書き換えることでBIG-IPと同セグの機器に転送する
Clone pool traffic is sent from the BIG-IP system to the IDS system (clone pool member) using the IDS system's L2 MAC address. Other packet header information contained in the clone pool traffic, such as the L3 addressing, remains the same as in the original packet sent to the virtual server pool member.
:::

:::note warn
別セグメントの機器に転送する場合はカプセル化が必要です
:::

# 5.SSLO

BIG-IPでのSSL可視化ソリューションです。

SSL Orchestrator(SSLO)を利用するためには、負荷分散用モジュールのLTMとは別に、SSLO用のライセンスとモジュールの有効化が必要です。
BIG-IPのSSLOにより、BIG-IPで通信を復号し、キャプチャー機器(セキュリティ機器)へ転送、戻ってきた通信を再暗号化することが可能です。

K71174564: Overview of F5 SSL Orchestrator
https://my.f5.com/manage/s/article/K71174564


# 参考URL

BIG-IPでtcpdumpを使用する際のTips
https://qiita.com/tags/tcpdump

K411: Overview of packet tracing with the tcpdump utility
https://my.f5.com/manage/s/article/K411

K31793632: Creating a decrypted tcpdump capture without using an iRule
https://my.f5.com/manage/s/article/K31793632

K71174564: Overview of F5 SSL Orchestrator
https://my.f5.com/manage/s/article/K71174564