- 用户 A 在主机 Ubuntu 机器上运行一个 http 服务器,其 IP 为“HostIP”,端口为 8081。
- 现在用户A创建一个非特权的lxc容器(container1)
- 用户 A 登录
lxc-attach -n container1
。 - 现在,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 网络。