默认用户模式网络

默认情况下,Lima 仅启用用户模式网络,即 “slirp”。

子网硬编码为 192.168.5.0/24。 使用 user-v2 网络来自定义子网。

客户机 IP(192.168.5.15)

客户机 IP 地址设置为 192.168.5.15

此 IP 地址在设计上无法从主机访问。

使用 VMNet 允许从主机和其他客户机访问客户机 IP。

主机 IP(192.168.5.2)

主机的环回地址是 192.168.5.2,可以从客户机以 host.lima.internal 的形式访问。

DNS (192.168.5.3)

如果 lima.yaml 中的 hostResolver.enabled 为 true,那么 hostagent 将在 tcp 和 udp 上运行 DNS 服务器 - 每个都在单独随机选择的空闲端口上。此服务器使用原生主机解析器进行本地查找,因此它可以正确处理 VPN 配置和拆分 DNS 设置,以及 mDNS、本地 /etc/hosts 等。为此,hostagent 必须使用 CGO_ENABLED=1 编译,因为默认的 Go 解析器是有问题的

然后这些 tcp 和 udp 端口通过 iptables 规则转发到 192.168.5.3:53,覆盖 QEMU 通过 slirp 提供的 DNS。

目前支持以下请求类型:

  • A
  • AAAA
  • CNAME
  • TXT
  • NS
  • MX
  • SRV

对于所有其他查询,hostagent 将把查询重定向到 /etc/resolv.conf 中指定的名称服务器(或者,如果失败 - 到 8.8.8.81.1.1.1)。

基于 tcp 的 DNS 很少使用。通常只有在用户明确要求时,或者当请求 + 响应无法放入单个 UDP 数据包时(最可能是 DNSSEC 的情况),或者在某些管理操作(如域传输)的情况下才使用。DNSSEC 和管理操作目前都不被 hostagent 支持,但如果响应可能包含异常长的记录列表 - hostagent 也会监听 tcp 流量。

在初始 cloud-init 引导期间,iptables 可能尚未安装。在这种情况下,使用 slirp DNS 确定仓库服务器。安装 iptables 后,应用转发规则,切换到 hostagent DNS。

如果 hostResolver.enabled 为 false,那么可以通过 dns 设置在 lima.yaml 中手动配置 DNS 服务器。如果该列表为空,那么 Lima 将使用 slirp DNS(在 Linux 上),或者使用服务顺序中第一个具有分配的 IPv4 地址的主机接口的名称服务器(在 macOS 上)。