docker - 将 Docker 容器连接到家庭网络

标签 docker routing containers macvlan

我在 Windows 10 的 Virtual Box 上运行的“Ubuntu Docker 主机”上运行一些 frr(自由范围路由)和 ceos(Arista)容器。

我创建了一个 macvlan 网络(net3)并将其绑定(bind)到 Ubuntu 的 enp 接口(interface)并将我的容器连接到它。但是,我无法使用连接到 macvlan 网络的接口(interface)访问我的容器。
我阅读了有关主机和容器之间网络空间的一些限制,并将 macvlan 网络类型视为克服这些限制的解决方案。然而它没有用。

由于我的容器是一个具有多个接口(interface)的路由器,我希望我可以将我的新 net3 网络连接到我的容器。它会显示为一个新接口(interface)(确实如此),当我将家庭网络中的 IP 地址分配给该接口(interface)时,我的路由器将能够使用该接口(interface)的 IP 地址直接与外部通信并绕过任何类型的防火墙、NAT等

我知道我们可以使用连接到默认 docker0 网络的桥接网络,然后如果我们发布端口等,它将对来自容器的传出连接进行 NAT 并接受传入连接。但是我想要一个具有 2 个接口(interface)的容器,其中一个接口(interface)是在 docker0 网桥中,另一个使用来自家庭网络的 IP 地址连接到家庭网络,这将像物理机或我的案卷主机 Ubuntu VM 一样将其完全暴露给外部。

最佳答案

我想我找到了一种方法来完成这项工作。

  • 添加了一个新的桥接网络
  • 添加了一个 iptables 规则,允许流量在“Forward Chain”处发往这个新的桥接网络。

  • 我现在不明白的是,虽然在主机上禁用了路由,但这个“转发”规则对流量有影响,它实际上是在工作的。我也不需要为返回流量添加规则流量。 Docker 在创建容器期间添加的默认规则似乎照顾了这个方向。

    关于docker - 将 Docker 容器连接到家庭网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58373487/

    相关文章:

    mysql - Azure 多容器 Web 应用程序明显无缘无故地停止了该站点

    php - Laravel: php artisan make:auth 不创建路由

    node.js - 使用 Yarn 依赖项为 Node 应用程序构建 Docker 镜像

    git - 在 github 分支上构建的 Docker 找不到指定的文件

    c# - 如何使用 ASP.Net MVC 路由来路由图像?

    使用对作为键的 C++ 映射

    c++ - 具有多个键/值的无序容器

    azure - 有没有什么方法可以限制其他用户不要在 Azure 数据湖第 2 代中查看我的容器

    docker - docker ps显示的端口与nmap不同

    api - 制作 REST API : How do I route a filepath using express for node