1

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

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

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

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

4

1 回答 1

1

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

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

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

于 2019-12-07T18:23:02.713 回答