是什么
libvirt 用一段网络描述定义宿主机上的虚拟网络:网段、地址范围、转发方式与地址分配规则都写在里面。管理命令覆盖注册、启用、设为开机自动启动与在线更新等操作。其中在线更新最有价值:往地址分配列表里加静态绑定不需要停机,也不必手工改文件再重启网络。
基本信息
| 列出网络 | virsh net-list --all,含未启用的定义 |
|---|---|
| 注册定义 | virsh net-define 网络描述文件 |
| 编辑 | virsh net-edit 直接修改描述并校验语法 |
| 启停 | virsh net-start 与 net-destroy,后者立即断开该网络上的虚机 |
| 自动启动 | virsh net-autostart 使宿主重启后网络自动恢复 |
| 在线更新 | virsh net-update 增删地址分配等配置片段 |
典型使用场景
- 新建隔离网络:给测试虚机一段独立网段,避免与办公网冲突
- 固定地址:把数据库等需要稳定地址的虚机按网卡地址绑定固定 IP
- 批量上线:用描述文件加自动启动设置,让宿主重启后网络自动恢复
- 排障:查看当前网络定义,确认地址范围是否与虚机实际地址匹配
- 迁移准备:把网络定义做成模板,在新宿主上快速复制出相同网络
添加一条静态地址绑定
添加一条静态地址绑定
virsh net-dumpxml default | head -20 # 先看当前定义
sudo virsh net-update default add ip-dhcp-host \
"<host mac='52:54:00:aa:bb:cc' name='vm1' ip='192.168.122.50'/>" \
--live --config # 同时生效并持久化
virsh net-dumpxml default | grep -A2 ip-dhcp-host
# 只加 --live 不写 --config,宿主重启后绑定会丢失命令与作用
| 命令 | 作用 | 风险提示 |
|---|---|---|
| net-list | 查看已有网络及状态 | 加 --all 才能看到未启用的定义 |
| net-define | 注册新的网络定义 | 只注册不启动,需再执行 net-start |
| net-destroy | 立即停用网络 | 该网络上全部虚机的通信立刻中断 |
| net-autostart | 设置宿主重启后自动启用 | 忘记设置会造成重启后虚机网络不可用 |
| net-update | 在线增删配置片段 | 必须同时加 --live 与 --config 才完整生效 |
地址绑定要用网卡地址而不是虚机名做匹配:名字在虚机内可以随便改,网卡地址由虚机定义决定,更稳定;同时注意虚机重建后网卡地址会变化。
停用网络会直接断开该网络上所有虚机的通信,包括管理通道;执行前确认自己在带外或不受该网络影响的路径上。