【问题标题】:DOCKER: Linux Container on Windows 10, how to use nmap to scan device's mac addressDOCKER:Windows 10 上的 Linux Container,如何使用 nmap 扫描设备的 mac 地址
【发布时间】:2021-01-29 16:26:44
【问题描述】:

我正在尝试设置 docker,它可以使用 nmap 成功扫描子网设备的 mac 地址。而且我花了 3 天时间弄清楚如何去做,但仍然失败。

例如:

  • 主机IP:10.19.201.123
  • 设备IP:10.19.201.101

我已经设置了 docker 容器,它可以成功地 ping 10.19.201.123 和 10.19.201.101。但是当我使用 nmap 从 docker 容器中扫描 mac 地址时,我得到了以下信息:

~$sudo nmap -sP 10.19.201.101
 Starting Nmap 7.01 ( https://nmap.org ) at 2018-05-29 08:57 UTC
 Nmap scan report for 10.19.201.101
 Host is up (0.00088s latency).
 Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds

但是,如果我使用 nmap 从 VM (10.19.201.100) 扫描 mac 地址,我得到:

~$sudo nmap -sP 10.19.201.101
 Starting Nmap 7.01 ( https://nmap.org ) at 2018-05-29 17:16 CST
 Nmap scan report for 10.19.201.101
 Host is up (0.00020s latency).
 MAC Address: 0F:01:H5:W3:0G:J5(ICP Electronics)
 Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds

请问,谁能提供帮助或提示如何操作?

【问题讨论】:

    标签: docker nmap docker-networking


    【解决方案1】:

    对于仍在为这个问题苦苦挣扎的人,我已经想出了如何在 Windows 10 上解决问题。 解决办法是让容器和你的本地主机在同一个局域网上运行,这样nmap就可以成功扫描局域网设备。以下是让您的 docker 容器在主机 LAN 上运行的方法。

    Windows 10 主页

    更改虚拟框设置

    1. 管理员先停止虚拟机docker-machine stop default
    2. 打开虚拟盒子
    3. 选择默认虚拟机并点击设置
    4. 进入网络页面,在适配器 3 上启用新的网络适配器 (请勿更改适配器 1 和 2)
    5. 将适配器 3 连接到物理网络的桥接适配器,然后单击确定
    6. 管理员启动虚拟机docker-machine start default
    7. 打开 Docker Quickstart Terminal 运行容器,新容器现在应该在局域网上运行了。

    Windows 10 专业版/企业版

    使用物理网络适配器创建 vSwitch

    1. 打开 Hyper-V 管理器
    2. 操作列表-> 打开虚拟交换机管理器
    3. 创建新的虚拟交换机 -> 选择类型:外部
    4. 将您的物理网络适配器分配给 vSwitch
    5. 选中“允许管理操作系统共享此网络适配器”并应用更改
    6. 转到控制面板\所有控制面板项\网络连接。
    7. 检查您刚刚创建的 vEthernet,并确保 IPV4 设置正确。 (有时dhcp设置为空,需要在这里重新设置)
    8. 返回 Hyper-V Manager,进入 MobyLinuxVM 的设置页面(确保已关闭,如果未关闭,请退出 Docker)
    9. 添加硬件 > 网络适配器,选择刚刚创建的 vSwitch 并应用更改

    修改 Docker 源代码

    1. 找到 MobyLinux 创建文件:MobyLinux.ps1 (通常位于:X:\Program Files\Docker\Docker\resources)
    2. 编辑文件,找到函数:function New-MobyLinuxVM
    3. 在函数中找到以下行: $vmNetAdapter = $vm | Hyper-V\Get-VMNetworkAdapter
    4. 将其更新为: $vmNetAdapter = $vm | Hyper-V\Get-VMNetworkAdapter | Select-Object -First 1
    5. 管理员保存文件
    6. 重启 Docker,容器现在应该可以在局域网上运行了。

    【讨论】:

    • 更新详细操作步骤。投反对票的人可以再看看它是否适合你。
    猜你喜欢
    • 2015-02-14
    • 2023-01-17
    • 1970-01-01
    • 2018-06-20
    • 2016-04-13
    • 2022-11-10
    • 2022-11-23
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多