正在将 Docker 个容器连接到家庭网络

Connecting Docker Container to Home Network

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

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

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

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

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

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

我现在不明白的是,虽然在主机上禁用了路由,但是这个"forward"规则对流量有影响,而且它确实在起作用。我也不需要为 return 流量添加规则流量。 Docker 在创建容器期间添加的默认规则似乎负责这个方向。