网络
三种网络模式、端口转发,以及哪种需要 Apple 的 entitlement。
Modes
| Mode | What it gives the guest |
|---|---|
nat | An address on a private network, sharing your Mac's connection. The default, and what you want almost always. |
host-only | A network with the Mac and nothing else. No outbound internet. |
bridged:en0 | An address on your real LAN, as though the guest were another machine on it. |
1vm create dev --network nat
1vm set dev network.mode host-only
1vm set dev network.mode bridged:en0
NAT
1VM 引擎自带 first-party 用户态 NAT 栈——DHCP、DNS 和 TCP/UDP 转换—— 而不是委托外部网络守护进程。guest 自动获得地址,出站连接可用。
1vm ip <vm> 打印地址,1vm list 与状态一并显示。已启动但尚未完成
DHCP 的机器会报告为等待中,而不是假装有地址。
Port forwarding
从 Mac 访问 guest 中的服务:
1vm set dev portForwards.add tcp:2222:22
1vm set dev portForwards.add tcp:8080:80
1vm set dev portForwards.remove tcp:8080:80
格式为 protocol:hostPort:guestPort。1VM 引擎上的转发仅绑定 loopback——
只能从 Mac 访问,不能从网络其他机器访问。若需 guest 被其他机器访问,请
使用桥接网络。
桥接受 entitlement 限制
桥接网络需要 com.apple.vm.networking entitlement,Apple 按申请授予。
没有时,界面会显示不可用并给出原因,而不是隐藏或在启动时失败。这是
有意设计:消失的选项不会告诉你原因。
SSH
SSH 是一等路径,无需手动配置:
1vm ssh enable dev
1vm ssh config --install # adds an Include line to ~/.ssh/config
ssh dev # plain ssh now resolves the machine name
1vm ssh trust dev 固定 guest 主机密钥,--relearn 在重建后重新固定。
若克隆体将与父机同时运行,使用 1vm clone dev test --rekey-ssh,避免
两台机器呈现相同主机密钥。