NAT 桥接的 LXC 非特权容器是否会通过 LAN 网络将 http 调用路由到主机 http 服务器?

NAT 桥接的 LXC 非特权容器是否会通过 LAN 网络将 http 调用路由到主机 http 服务器?
  1. 用户 A 在主机 Ubuntu 机器上运行一个 http 服务器,其 IP 为“HostIP”,端口为 8081。
  2. 现在用户A创建一个非特权的lxc容器(container1)
  3. 用户 A 登录lxc-attach -n container1
  4. 现在,container1 内的 root 用户进行如下http://HostIP:8081/api调用

我的问题是,此调用是直接路由到主机还是通过局域网路由到主机。基本上,如果 http 服务器托管在主机上,需要进行哪些配置更改才能避免局域网流量。

我们的LXC网络配置是:

lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:30:d2:42

所有容器都在主机 Ubuntu 内部运行。

答案1

总结一下您向我陈述的细节,以便我可以回答这个问题:

  • LXC 网桥设置为 NAT 连接
  • LXC网桥是不是直接连接到主机系统所在的 LAN 网络

有了这些信息,你的答案是:有可能。这完全取决于主机,以及它是否足够智能,不会首先通过 LAN 网络将流量从 LXC 桥路由到 LAN 地址。(情况并非总是如此)

当你使用主机的 IP 地址作为 LAN 时,你的计算机很可能会出错,无法正确路由数据包,这意味着发往 LAN 上主机的数据包局域网地址(和不是您的 IP 地址(LXC 网络的私有 IP 范围)可能会被传输到 LAN 的其余部分。这种情况并不罕见,但绝对不是您想要的。

当使用连接到主机的 LXC/LXD 客户机时,您应该使用来自访客的网关 IP 地址(实际上是 LXC/LXD 桥上的私有 IP 地址,主机具有,以便它能够正确地将流量通过 NAT 路由到其他目的地)当打算让流量直接从容器流向主机和反之亦然时。这样,从您的客户机流向主机(反之亦然)的流量永远不会离开您的计算机,因为它知道通过该 NAT 链接分别到客户机和主机的路由。

例如,如果您的桥接器子网是 192.168.230.0/24,且 LXC 客户机的 IP 是 192.168.230.10,而主机的 IP 是 192.168.230.1,因此它充当客户的路由器(这是典型的 NAT 桥接器设置,但 IP 范围不同),那么您应该使用它192.168.230.1来代替主机系统的 LAN 地址,以避免数据泄漏到 LAN 网络。

相关内容