如何使用docker容器查看主机上的ARP流量(第2层)

如何使用docker容器查看主机上的ARP流量(第2层),docker,Docker,我正在使用以下信息构建Kali Linux docker容器: # Dockerfile FROM kalilinux/kali-rolling LABEL version="1.0" \ author="XYZ" \ description="Custom Kali Linux Image" RUN echo "deb http://http.kali.org/kali kali-rolling

我正在使用以下信息构建Kali Linux docker容器:

# Dockerfile
FROM kalilinux/kali-rolling

LABEL version="1.0" \
      author="XYZ" \
      description="Custom Kali Linux Image"

RUN echo "deb http://http.kali.org/kali kali-rolling main contrib non-free" > /etc/apt/sources.list && \
    echo "deb-src http://http.kali.org/kali kali-rolling main contrib non-free" >> /etc/apt/sources.list && \
    echo "kali-docker" > /etc/hostname && \
    set -x && \
    apt-get -yqq update && \
    apt-get -yqq dist-upgrade && \
    apt-get clean && \
    apt-get install -yqq vim telnet nmap metasploit-framework sqlmap wpscan netcat

WORKDIR /root

我想做的是运行tcpdump之类的命令来查看主机可以看到的第2层流量,但我不太确定如何做到这一点。我对docker比较陌生,认为将网络设置为主机可以做到这一点,但实际上它似乎只是将docker接口与主机连接起来,而不是与网络连接起来,类似于VM的桥接模式在本地LAN上的工作方式

因此,如果我的虚拟机在eth0上的IP地址是192.168.1.25/24,它在我的本地网络上桥接,我如何让虚拟机中的docker容器也桥接,或者与容器共享eth0适配器,或者甚至桥接它,使其为192.168.1.26(假设DHCP分配了该地址)


我怎样才能做到这一点?我最终希望容器使用与主机相同的接口/IP信息,例如,可以接受监听端口而不做任何修改,可以看到arp流量,几乎就像容器和主机完全相同一样,但我不太确定如何实现这一点或这是否可能。

Docker是一种隔离工具,它的一个关键目标是为每个容器提供一个独立的网络环境。您应该直接在主机上运行这样的网络诊断工具。这不能通过MacVLAN实现吗?Docker是一个隔离工具,其关键目标之一是为每个容器提供一个独立的网络环境。您应该直接在主机上运行这样的网络诊断工具。这不能通过MacVLAN实现吗?
# docker-compose.yml

version: "3.4"

services:
  kali:
    build:
      network: host
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./kali-root:/root
    tty: true
    privileged: true