gpt4 book ai didi

Docker 网络和 VLAN

转载 作者:行者123 更新时间:2023-12-01 15:48:08 30 4
gpt4 key购买 nike

我有一个关于通过(主机)VLAN 接口(interface)的 docker 网络的问题。

我尝试通过 VLAN 网络从 docker 容器 ssh 到服务器,但无法建立连接(超时)。

设置:

我有两台机器(我们称它们为服务器和笔记本电脑)通过

连接
  • 使用 vlan 的网络(我们称之为“私有(private)”)
  • “正常”网络(我们称之为“公共(public)”)

我尝试使用专用网络通过 SSH 从笔记本电脑上的容器连接到服务器

诊断步骤:

  • “本地”SSH 连接工作正常,同时使用私有(private)公共(public) 网络。
  • 可以使用公共(public)网络从笔记本电脑上的容器内到服务器的 SSH 连接。
  • wireshark(监听笔记本电脑的 vlan 接口(interface))告诉我发送了一个 [SRV] 包,服务器用 [SRV, ACK] 响应。然而,容器似乎没有收到这个,这导致了服务器的 [SRV, ACK] 重新传输以及来自容器的新 [SRV] 包。

  • 我启动了一个 nginx 容器监听 0.0.0.0(在所有接口(interface)上)- 它可以从 公共(public) 网络访问,但不是来自私有(private)网络

  • 我在笔记本电脑上本地安装了 nginx,再次监听所有接口(interface)。它可以通过两个网络访问,私有(private)公共(public)

因此问题似乎与“docker 和 vLAN”有关:wireshark 还表明“传出”是可能的,但“传入”不是。

有什么想法吗?

最佳答案

目前最好的选择是使用(当前)实验性功能“Ipvlan Network”。

The Linux implementations are extremely lightweight because rather than using the traditional Linux bridge for isolation, they are simply associated to a Linux Ethernet interface or sub-interface to enforce separation between networks and connectivity to the physical network.

documentation非常大,不能在这里复制,但是,一旦安装了实验版本,要创建 ipvlan 网络并运行一个附加到它的容器,你应该运行:

Ipvlan

docker network  create -d ipvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o ipvlan_mode=l2 \
-o parent=eth0 db_net

Start a container on the db_net network

docker  run --net=db_net -it --rm alpine /bin/sh

在那个页面上还有很多东西要读。

一些注意事项:

  1. -o ipvlan_mode= 如果不指定则默认为L2模式

  2. 容器无法 ping 底层主机接口(interface),因为它们被 Linux 有意过滤以进行额外隔离。

  3. 实验性意味着它被认为尚未准备好投入生产并且可能存在一些错误。该文档指出它“用于在您的沙箱环境中进行测试和评估。”

关于Docker 网络和 VLAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38869129/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com