|||||||||||||||||||||

なんぶ電子

- 更新: 

Debianでtcpdump

Debian

さくらのVPSでDebianサーバーを構築しました。VPSで重要な事はファイアウォールの設定なのですが、IPsecを使っていたりすると設定が複雑になりがちです。なぜ繋がらないのか、逆に繋がってしまうのか、確認するために疎通テストをしながら設定します。

その際、パケットキャプチャのツールとしてtcpdumpを使うと便利です。ここではその使い方を記しておきます。

インストール

インストールはaptで行います。特に設定ファイル等は不要です。

$ su -
...
# apt update
...
# apt install tcpdump
...

起動オプション

tcpdumpの主な起動オプションは次の通りです。

  • c

    指定した個数のパケットを受信した後に終了します

  • F <filename>

    フィルタの条件式が書かれたファイルを指定します

  • i

    インターフェース指定を指定します。省略時は最も「ip a」で表示される際の左側のインデックス番号のもっとも小さい番号で有効になっているものが選択されます。この時、lo(ループバックインターフェース)は対象となりません。

  • p

    プロミスキャスモードを利用しません。プロミスキャスモードは自分がつながっているネットワークに流れるデータをすべて取得するモードです。サーバーが通常稼働している際は自分宛のデータしか取得しないことで負荷を軽減させます。tcpdumpのようなパケットキャプチャにおいては自分宛ではないデータも取得したいことが多いためtcpdumpは通常プロミスキャスモードで動きます。それが不要な場合はpオプションを付けてプロミスキャスモードを外します。ただし、このプロミスキャスモードはインターフェスに対して指示するものなので、他のアプリからプロミスキャスがインターフェースに指定されている場合は効果がありません。

  • q

    簡易的な出力をします

  • w <filename>

    ファイルに結果を保存します

tcpdumpのフィルタ

tcpdumpには起動オプションとは別にフィルタという機能が備わっています。これは、オプションの後につなげて記述することで、指定した条件式に一致したものだけ抽出するものです。

フィルタの書式はいろいろありますので基本的なことだけ説明していきます。詳細はman tcp-filterを確認してください。

フィルターにはtype、dir、protoの要素が存在します。許容される組み合わなら複数の指定も可能です。

type要素にはhost、net、portがあります。hostではIPアドレス、netではネットワーク、portではポートを指定します。

dir要素は方向(direct)を指定します。src(送信元)とdst(宛先)があります。「src or dst」、「src and dst」という風な記述もできます。

たとえば、送信元が192.168ネットワークだけに限定したい場合は、先のtype要素と組み合わせて次のように使います。

# tcpdump src net 192.168

proto要素はプロトコルの制限です。ether、ip、ip6、icmp、icmp6、tcp、udp、arpあたりがよく使うものだと思います。

先ほどの条件に、tcpプロトコルであることを加えると次のようになります。

# tcpdump tcp src net 192.168

特殊な要素

フィルターを構成する要素には先述のほかに、gateway、broadcast、less、greaterという特別な要素もあります。

getewayはゲートウェイを指定します。たとえば「gateway 192.168.1.30」とすると192.168.1.30をゲートウェイとしている際に対象となります。

broadcastではブロードキャストを指定します。「ether broadcast」とするとブロードキャストのみ抽出します。

lessとgreaterはパケットの大きさを指定します。lessでは指定したサイズと同じがそれより小さいとき、greaterでは指定したサイズと同じかそれより大きい時に対象となります。

複雑な条件式

上記の要素で構成される条件式は、and、orで連結させることができます。またnotを使って条件を反転させることもできます。

複雑な条件式を利用する場合は、ファイルに記述し、Fオプションで利用すると毎回条件式を入力せずにすむので便利です。この時注意が必要なのは、Fオプションを指定した際はファイル内の記述以外に条件式が与えられていたとしてもその記述は無視されるという事です。

筆者紹介


自分の写真
がーふぁ、とか、ふぃんてっく、とか世の中すっかりハイテクになってしまいました。プログラムのコーディングに触れることもある筆者ですが、自分の作業は硯と筆で文字をかいているみたいな古臭いものだと思っています。 今やこんな風にブログを書くことすらAIにとって代わられそうなほど技術は進んでいます。 生活やビジネスでPCを活用しようとするとき、そんな第一線の技術と比べてしまうとやる気が失せてしまいがちですが、おいしいお惣菜をネットで注文できる時代でも、手作りの味はすたれていません。 提示されたもの(アプリ)に自分を合わせるのでなく、自分の活動にあったアプリを作る。それがPC活用の基本なんじゃなかと思います。 そんな意見に同調していただける方向けにLinuxのDebianOSをはじめとした基本無料のアプリの使い方を紹介できたらなと考えています。

広告