![在centOS docker容器內執行wireshark](https://rvso.com/image/1555366/%E5%9C%A8centOS%20docker%E5%AE%B9%E5%99%A8%E5%85%A7%E5%9F%B7%E8%A1%8Cwireshark.png)
我使用yum
( RUN yum install -y wireshark wireshark-qt
) 安裝了wireshark,但當我透過 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
請嘗試。