CentOS Dockerコンテナ内でWiresharkを実行する

CentOS Dockerコンテナ内でWiresharkを実行する

yum( )を使用して Wireshark をインストールしましたRUN yum install -y wireshark wireshark-qtが、コンテナーに SSH で接続しても実行できません。

# tshark
tshark: Couldn't run /usr/sbin/dumpcap in child process: Operation not permitted
Are you a member of the 'wireshark' group? Try running
'usermod -a -G wireshark _your_username_' as root.

実行してみましたusermod -a -G wireshark root(マシンに ssh で接続するときは、root として実行します)。これは役に立ちません。

試みてもsu -c '/usr/sbin/tshark'失敗しました。

どうすればいいですか?

答え1

dumpcap必要NET_RAW(RAWおよびPACKETソケットを使用) NET_ADMIN(ネットワーク関連の操作を実行) 機能

$ getcap $(which dumpcap)
/usr/sbin/dumpcap = cap_net_admin,cap_net_raw+ep

権限のないコンテナにはデフォルトで付与されないため、--cap-add=NET_RAW --cap-add=NET_ADMINコンテナを起動するときに明示的に追加する必要があります。

$ docker build -t tshark - <<EOF 
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y tshark && rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["tshark"]
EOF

$ docker run --rm -it \
    --net=[container:<name|id> | host] \
    --cap-add=NET_RAW --cap-add=NET_ADMIN tshark


答え2

このコマンドを使用して実行しました:

usermod -a -G wireshark _your_username_  

newgrp wireshark

sudo chgrp wireshark /usr/sbin/dumpcap

tshark -i eth0 -w outfile

してみてください。

関連情報