当前位置: 首页 > 知识库问答 >
问题:

如何将Linux容器分配到与主机相同的LAN?[副本]

伯茂才
2023-03-14

我的目标是让我的Linux容器与主机和其他设备生活在同一个局域网上。因为我需要经常使用nmap来扫描局域网上设备的mac地址。不幸的是,nmap扫描仅在这些机器都位于同一子网上时才有效。

我尝试了几种方法来实现它,但都失败了。虽然有很多关于如何做到这一点的说明,但似乎都是针对Docker for Linux的。

例如,stackoverflow中的一个非常详细的说明:CentOS上的Docker带有网桥到LAN网络,对我也不起作用。

我尝试过的事情:

似乎Docker for Windows 10不支持macvlan,因为我没有办法将Windows网络适配器作为父级。

它只在Linux系统上运行,但我使用的是视窗10…

我试过了,这会将docker0设置为静态IP,然后容器仍然无法在局域网上ping设备。我想这是因为容器放置在NAT上,并且更改docker0桥接ip将无法实现我的目标。

ifconfig显示:

docker0   Link encap:Ethernet  HWaddr 02:42:2d:b8:0b:7c
          inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
          inet6 addr: fe80::42:2dff:feb8:b7c/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:540 (540.0 B)

eth0      Link encap:Ethernet  HWaddr 02:50:00:00:00:01
          inet addr:192.168.65.3  Bcast:192.168.65.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:111 errors:0 dropped:0 overruns:0 frame:0
          TX packets:147 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:9701 (9.7 KB)  TX bytes:10384 (10.3 KB)

hvint0    Link encap:Ethernet  HWaddr 00:15:5d:0d:52:27
          inet addr:10.0.75.2  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::215:5dff:fe0d:5227/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:359819 errors:0 dropped:1303 overruns:0 frame:0
          TX packets:1157 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:54740692 (54.7 MB)  TX bytes:103676 (103.6 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:57 errors:0 dropped:0 overruns:0 frame:0
          TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:5732 (5.7 KB)  TX bytes:5732 (5.7 KB)

它能够ping我的子网上的所有内容,但IP仍然不是来自我的子网,而是192.168.65.3。

然后,我试图通过编辑/etc/网络/接口.d/eth0将eth0 ip更改为静态IP,重新启动网络服务后,eth0 ip从我的子网更改为静态IP,但网络不再工作。

请,如果这里的任何人知道如何将Windows 10的Linux容器放置在与主机相同的局域网上。

我的Docker版本

Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:12:48 2018
 OS/Arch:      windows/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:22:38 2018
  OS/Arch:      linux/amd64
  Experimental: false

共有2个答案

仇阳州
2023-03-14

我发布了另一个问题,这是这个问题的同一根本原因。因此,它们可以应用于相同的解决方案。

解决方案发布在DOCKER: Windows 10上的Linux容器上,如何使用nmap扫描设备的mac地址

韦高格
2023-03-14

我仍在研究这个问题,但你断言麦克弗兰在Windows 10上不起作用是不正确的。使用您链接的问题中的一些说明,我在Windows 10上设置了一个相当实用的macvlan网络。我仍在努力使我的网络上的主机能够pingmacvlan网络上的主机。

我是这么做的:

    < li >在管理powershell窗口中:< code > Set-NetIPInterface-ifindex

对我来说,这产生了一个Docker网络,通过该网络,连接的容器可以通过路由器与192.168.1.0 / 24的互联网主机成功通信。但是,我还没有弄清楚如何将Windows 10盒配置为192.168.2.0 /24的网关,以实际充当网关(并执行诸如将ICMP请求从1.0 / 24上的主机路由到其托管的docker网络2.0 / 24之类的事情)。

 类似资料:
  • 我现在很困惑。我尝试了很多我可以在网上找到的东西,但是,没有一个解决它。我使用WSL2安装了Win10和Docker desktop来托管Linux容器。我使用以下命令启动詹金斯网站。 这个很管用。我可以使用访问网站 谢谢你 编辑:只是想解释一下我做了什么来解决我的问题。创建network是我最初所做的,但由于我卷曲网页的方式错误,所以失败了。我做只是为了便于在上定位我的容器。但是,正如我的问题中

  • 我正在使用虚拟机虚拟盒。当我在 VM 中运行服务器代码,然后在主机中打开浏览器并键入“localhost”时,我无法获得 VM 中获取的页面。可能 VM 中的本地主机和主机中的本地主机是不同的。是否知道如何使 VM 的本地主机与主机的本地主机相同? dev@dev-VirtualBox:~$ifconfig eth0链接encap:以太网HWaddr 08:00:27:03:1a: e0 inet

  • 有两个相关的问题,但他们没有完全回答问题。但如果国防部认为这是复制品,请告诉我。 编辑:我在Linux上使用docker,并且非常希望不在主机模式下运行容器。

  • 问题内容: 不熟悉Unix网络,添加虚拟接口等,现在尝试学习。我们正在尝试对我们的应用程序进行docker化。 我的要求是:将ip分配给可从外部应用程序/浏览器访问的docker容器。 容器ip应该基本上可以从同一网络中的其他计算机ping通。我不想使用端口转发。 我想访问docker容器,就像我们使用ip地址访问VM。没有端口映射,-p标志。如果我在容器中运行任何服务器,例如Apache或Tom

  • 我试图创建一个家庭自动化系统,在白天我工作的时候监视我的狗。我这个项目的目标是学习一些关于DNS、文件服务和RaspberryPi的知识。 我的硬件设置如下: 1 RaspberryPi(已启用摄像头,并计划将其用作我的家庭路由器后面的web服务器) 我想用bubby.com作为域名。当我从我的数字海洋服务器查询时,这是有效的。但是,如果我尝试从我的笔记本电脑,我得到一个不同的IP。 来自数字海洋

  • 问题内容: 我们正在使用副本3的docker swarm模式在docker容器中部署风暴超级用户。现在,我们想通过浏览器访问超级用户登录。 我们公开了可以访问Storm UI的端口8080。一切正常。现在,storm也将其日志文件公开在端口8000上。由于我们只有一个nimbus和3个超级用户,因此通过端口8000访问nimbus日志非常容易。 我们在使用docker swarm服务部署的主管上遇