Edited at

Alpine Linuxコンテナでtcpdumpしてパケットキャプチャする


背景

下記の記事を参考にDockerコンテナでtcpdumpしようと思ったのですが、Raspberry piでやろうと思ったのでなるべく軽いAlpine Linuxをベースに変えてみました。

A Docker Container To Capture All Traffic From Host.


Dockerfile

元記事のFROMとapt-getを変更するだけです。

FROM alpine

RUN apk update && apk add tcpdump
RUN mkdir /pcap
RUN cd /pcap
WORKDIR /pcap
CMD tcpdump -G 900 -w '%Y-%m-%d_%H:%M:%S.pcap' -W 96

buildしたところ。115MBだったものが6MBと物凄く軽くなりました。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

alpine-tcpdump latest f454eac0b1be 8 minutes ago 5.97MB
tcpdump latest 3687337e2f4a 24 minutes ago 115MB


ビルドと実行

メモ程度にビルドと実行についても記載しておきます。

ポイントは「--net=host」で、これによってホスト側のネットワークインターフェースをdockerにアタッチしています。

sudo docker build -t alpine-tcpdump .

sudo docker run -v ~/pcap:/pcap --net=host -d alpine-tcpdump

上記で実行するとホスト側の~/pcapに日付付きで.pcapファイルが保存されていきます。