默认用户模式网络
默认情况下,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.8
和 1.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 上)。