- 用户 A 在主机 Ubuntu 机器上运行一个 http 服务器,其 IP 为“HostIP”,端口为 8081。
- 现在用户 A 创建了一个非特权 lxc 容器(container1)
- 用户 A 登录
lxc-attach -n container1
。 - 现在 container1 中的 root 用户进行了类似call 的
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 内运行。
总结一下你对我说的细节,以便我回答这个问题:
有了这些信息,您的答案是:可能。它完全取决于主机以及它是否足够聪明,不会首先通过 LAN 网络将流量从 LXC 网桥路由到 LAN 地址。(并非总是如此)
当您将主机的 IP 地址用于 LAN 时,您的计算机完全有可能是愚蠢的并且无法正确路由数据包,这意味着数据包以LAN地址(而不是LXC 网络的私有 IP 范围)可能会传输到 LAN 的其余部分。这并不少见,但绝对不是你所追求的。
当使用连接到主机的 LXC/LXD 来宾时,您应该使用来自来宾的网关 IP 地址(实际上是主机拥有的 LXC/LXD 网桥上的私有 IP 地址,以便它可以 NAT 将流量路由到其他正确的目的地)当打算流量直接从容器到主机时,反之亦然。这样,从您的客人到您的主机(反之亦然)的流量永远不会离开您的计算机,因为它知道通过该 NAT 链接分别到客人和主机的路由。
例如,如果您的网桥子网是 192.168.230.0/24,LXC 来宾的 IP 为 192.168.230.10,而您的主机具有 192.168.230.1,因此它充当来宾的路由器(这是典型的 NAT网桥设置,但具有不同的 IP 范围),那么您应该使用
192.168.230.1
代替主机系统的 LAN 地址,以避免数据泄漏到 LAN 网络。