default 网络是什么
libvirt 安装后会自带一个名为 default 的 NAT 网络:宿主侧创建 virbr0 网桥,由 dnsmasq 提供 DHCP 与 DNS,虚机从 192.168.122.0/24 取地址,再通过宿主的地址转换访问外网。它适合本机实验与开发,不适合需要被外部网络直接访问、或需要与其他主机处在同一网段的场景。
基本信息
| 默认网段 | 192.168.122.0/24 |
|---|---|
| 宿主接口 | virbr0 |
| 服务 | dnsmasq 提供 DHCP 与 DNS |
| 管理命令 | virsh net-list --all / net-start / net-autostart |
| 外部访问 | 默认不可直连,需要端口转发或改用桥接网络 |
典型使用场景
- 本机快速拉起实验虚机,不关心外部访问
- 开发环境里虚机只需要出网下载依赖
- 临时验证 cloud-init、镜像启动流程
- 用端口转发把虚机内服务暴露到宿主端口供本机访问
- 生产或集群场景改用网桥(bridge)或 OVS 网络
启用并查看租约
启用并查看租约
sudo virsh net-list --all # inactive 表示网络未启动
sudo virsh net-start default # 启动 default 网络
sudo virsh net-autostart default # 宿主开机自动启动,避免重启后虚机断网
virsh net-dhcp-leases default # 查看已分配的租约与 MAC 对应关系
ip -br addr show virbr0 # 确认网桥地址是否为 192.168.122.1
virsh net-dumpxml default # 查看 DHCP 范围与转发模式的完整定义默认值速查
| 对象 | 默认值 | 说明 |
|---|---|---|
| 网段 | 192.168.122.0/24 | 与宿主物理网段重叠会导致路由混乱 |
| 宿主网桥 | virbr0 | 由 libvirt 自动创建与管理 |
| DHCP/DNS | dnsmasq | 由 libvirt 托管独立实例 |
| 转发模式 | NAT | 虚机可出网,外部无法主动连入 |
| 宿主网关 | 192.168.122.1 | 虚机的默认网关即此地址 |
default 网络的 DHCP 由 libvirt 管理的 dnsmasq 实例提供,宿主上再运行一套同网段的 dnsmasq 会与它冲突,表现为虚机拿到非预期地址或干脆拿不到地址。
修改网络定义建议用 virsh net-edit,改完执行 net-destroy 加 net-start 生效;直接编辑文件而不重载不会生效。
排错顺序
- 先确认网络是否 active:virsh net-list --all 看状态
- 再看虚机网卡是否绑定到该网络:virsh domiflist <vm>
- 然后在虚机内检查是否拿到 192.168.122.x 地址与网关
- 最后检查宿主转发与防火墙规则是否放行,宿主上 net.ipv4.ip_forward 必须为 1
NAT 模式下虚机出网依赖宿主的转发与伪装规则,libvirt 会自动写入相应规则;如果宿主上手工清空过 iptables/nftables 规则,重启 libvirtd 或重建网络可恢复默认规则。