端口转发
Lima 支持从客户机到主机的 localhost 端口自动转发。
端口转发类型
Lima 支持两种端口转发器:SSH 和 GRPC。
默认端口转发器如下表所示。
| 版本 | 默认值 |
|---|---|
| v0.1.0 | SSH |
| v1.0.0 | GRPC |
| v1.0.1 | SSH |
| v1.1.0 | GRPC |
默认设置在 Lima v1.0 中曾经改为 GRPC,但由于稳定性原因在 v1.0.1 中回退到 SSH。 在 Lima v1.1 中默认设置再次改回 GRPC,因为稳定性问题已得到解决。
使用 SSH
基于 SSH 的端口转发以前是默认模式。
要显式使用 SSH 转发,请使用以下命令
LIMA_SSH_PORT_FORWARDER=true limactl start
优势
- 当 VSOCK 可用时,性能优于 GRPC
注意事项
- 不支持基于 UDP 的端口转发
- 在主机上生成子进程来运行 SSH 主服务器。
SSH over AF_VSOCK
| ⚡ 要求 | Lima >= 2.0 |
|---|
如果 VM 基于 VZ 且 systemd 是 v256 或更高版本(例如 Ubuntu 24.10+),Lima 使用 AF_VSOCK 进行主机和客户机之间的通信。 使用 AF_VSOCK 时,基于 SSH 的端口转发比基于传统虚拟网络的端口转发快得多。
要禁用此功能,请将 LIMA_SSH_OVER_VSOCK 设置为 false:
export LIMA_SSH_OVER_VSOCK=false
使用 GRPC
| ⚡ 要求 | Lima >= 1.0 |
|---|
在此模型中,lima 使用现有的 GRPC 通信(主机 <-> 客户机)来隧道传输端口转发请求。 对于每个端口转发请求,会创建一个 GRPC 隧道并用于传输数据
要启用此功能,请将 LIMA_SSH_PORT_FORWARDER 设置为 false:
LIMA_SSH_PORT_FORWARDER=false limactl start
优势
- 支持基于 TCP 和 UDP 的端口转发
- 当 VSOCK 不可用时,与基于 SSH 的转发相比,性能更快
- 无需额外的子进程进行端口转发
通过 IP 地址访问端口
要通过 IP 地址访问客户机的端口,请将客户机连接到 vzNAT 或 lima:shared 网络。
vzNAT 网络速度极快且易于使用,但是,vzNAT 仅适用于 VZ 客户机。
limactl start --network vzNAT
lima ip addr show lima0
更多信息请参见 配置 » 网络 » VMNet 网络。
基准测试
| 通过 localhost | SSH (无 VSOCK) | GRPC | SSH (有 VSOCK) |
|---|---|---|---|
| TCP | 4.06 Gbits/sec | 5.37 Gbits/sec | 6.32 Gbits/sec |
| TCP Reverse | 3.84 Gbits/sec | 7.11 Gbits/sec | 7.47 Gbits/sec |
| 通过 IP 地址 | lima:shared | vzNAT |
|---|---|---|
| TCP | 3.46 Gbits/sec | 59.2 Gbits/sec |
| TCP Reverse | 2.35 Gbits/sec | 130 Gbits/sec |
上述基准测试详情是使用以下命令获得的
Host -> limactl start vz
VZ Guest -> iperf3 -s
Host -> iperf3 -c 127.0.0.1 //TCP 基准测试("发送者"和"接收者"的平均值)
Host -> iperf3 -c 127.0.0.1 -R //TCP 反向基准测试(与上述相同)
基准测试结果,特别是 vzNAT 的吞吐量,高度依赖于硬件性能。
基准测试环境
- Lima 版本:2.0.0-alpha.2
- 客户机:Ubuntu 25.04
- OpenSSH 9.9p1
- iperf 3.18
- 主机:macOS 26.0.1
- OpenSSH 10.0p2
- iperf 3.19.1 (Homebrew)
- 硬件:MacBook Pro 2024 (M4 Max, 128 GiB)