我正在尝试设置 docker,它可以使用 nmap 成功扫描子网设备的 mac 地址。我花了三天的时间来弄清楚如何做到这一点,但仍然失败。
例如:
- 主机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 从虚拟机 (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
请问谁可以提供帮助或提示如何操作?
对于那些仍在为这个问题苦苦挣扎的人,我已经弄清楚了如何在 Windows 10 上做到这一点。
解决方案是让容器与本地主机运行在同一个局域网中,这样nmap就可以成功扫描局域网设备。以下是让 docker 容器在主机 LAN 上运行的方法。
Windows 10 家庭版
更改虚拟框设置
- 首先由管理员停止虚拟机
docker-machine stop default
- 打开虚拟盒子
- 选择默认虚拟机并单击设置
- 转到网络页面,并在适配器 3 上启用新的网络适配器
(请勿更换适配器 1 和 2)
- 将适配器 3 连接到具有物理网络的桥接适配器,然后单击“确定”
- 由管理员启动虚拟机
docker-machine start default
- 打开 Docker Quickstart Terminal 来运行容器,新容器现在应该在局域网上运行了。
Windows 10 专业版/企业版
使用物理网络适配器创建 vSwitch
- 打开 Hyper-V 管理器
- 操作列表->打开虚拟交换机管理器
- 创建新的虚拟交换机 -> 选择类型:外部
- 将物理网络适配器分配给 vSwitch
- 选中“允许管理操作系统共享此网络适配器”并应用更改
- 转至控制面板\所有控制面板项目\网络连接。
- 检查您刚刚创建的 vEthernet,并确保 IPV4 设置正确。 (有时dhcp设置会为空,需要在这里再次重置)
- 返回Hyper-V管理器,进入MobyLinuxVM的设置页面(确保其已关闭,如果没有关闭,请退出Docker)
- 添加硬件 > 网络适配器,选择您刚刚创建的 vSwitch 并应用更改
修改Docker源码
- 找到MobyLinux创建文件:MobyLinux.ps1
(通常它位于:X:\Program Files\Docker\Docker\resources)
- 编辑文件,找到函数:function New-MobyLinuxVM
- 在函数中找到以下行:
$vmNetAdapter = $vm | Hyper-V\Get-VMNetworkAdapter
- 将其更新为:
$vmNetAdapter = $vm | Hyper-V\Get-VMNetworkAdapter | Select-Object -First 1
- 由管理员保存文件
- 重新启动 Docker,容器现在应该在 LAN 上运行了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)