Cisco ASA でパケットキャプチャー

最近続いている Cisco ASA/PIX の話です。ファイアーウォールの設定は完璧にしたはずなのに、「うまく動かない…」ということがたまにあります。その性質上何か問題が起こるとまず真っ先に「ファイアーウォールで止めてんじゃないの?」と疑われてしまう立場にあります。

ルールの書き間違いならばログを見れば大体わかりますが、ログを見てもわからない場合 ASA/PIX ではパケットをキャプチャーすることができます。

まず、キャプチャーしたいパケットを選別するための access-list (ACL) を作ります。これは問題判別に使うためのパケットを引っ掛けるためだけにファイアーウォールのルールとは独立した ACL を作れば良いです。

例えば、192.168.1.2 宛の通信がおかしければこんな風にします。

fw(config)# access-list mylist extended permit ip host 192.168.1.2 10.0.0.0 255.0.0.0
fw(config)# access-list mylist extended permit ip 10.0.0.0 255.0.0.0 host 192.168.1.2

そしてこの ACL とインターフェイスを指定してキャプチャーを開始します。

fw# capture mycap access-list mylist interface inside

ACL に適合するパケットがインターフェイスを通過すればキャプチャーされます。

fw# show capture
capture mycap type raw-data access-list mylist interface inside[Capturing - 1008 bytes]

キャプチャーできたのであれば詳細を見てみましょう。

fw# show capture mycap
12 packets captured
1: 15:53:16.278839 802.1Q vlan#128 P0 192.168.1.2 > 10.1.2.3: icmp: echo request
2: 15:53:16.279282 802.1Q vlan#128 P0 10.1.2.3 > 192.168.1.2: icmp: echo reply
3: (...略) 

キャプチャーを終了するには次のコマンドです。

fw# no capture mycap

私の経験ではこうして調べて見ると実はファイアーウォール以外に問題があった、ということもよくあります。これらのコマンドを覚えておくといざという時手際よく問題判別ができると思います。