Add a second NIC for a libvirt guest ==================================== Purpose: attach a new libvirt network to a live guest -- this takes effect immediately, and the NIC will be persistent on further reboots. (0) Before adding a NIC, enumerate the network interfaces for vm1: $ virsh domiflist vm1 Interface Type Source Model MAC ------------------------------------------------------- vnet0 network default virtio 52:54:00:cd:58:29 (1) Let's add a new NIC for the guest (the MAC address was chosen randomly): $ virsh attach-interface --domain vm1 --type network \ --source openstackvms --model virtio \ --mac 52:54:00:4b:73:5f --config --live Interface attached successfully (2) Now again, enumerate the network interfaces for vm1, invoke the below command on the host: $ virsh domiflist vm1 Interface Type Source Model MAC ------------------------------------------------------- vnet0 network default virtio 52:54:00:cd:58:29 vnet1 network openstackvms virtio 52:54:00:4b:73:5f (3) Inside the guest, you can see the second interface is now available: $ ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:cd:58:29 brd ff:ff:ff:ff:ff:ff inet 192.168.122.50/24 brd 192.168.122.255 scope global dynamic eth0 valid_lft 2397sec preferred_lft 2397sec inet6 fe80::5054:ff:fecd:5829/64 scope link valid_lft forever preferred_lft forever 3: eth1: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:4b:73:5f brd ff:ff:ff:ff:ff:ff inet 192.169.142.233/24 brd 192.169.142.255 scope global dynamic eth1 valid_lft 3226sec preferred_lft 3226sec inet6 fe80::5054:ff:fe4b:735f/64 scope link valid_lft forever preferred_lft forever To detach the NIC ----------------- (1) If you want to detach the network interface, this will take effect on next boot of the guest: $ virsh detach-interface --domain vm1 --type network \ --mac 52:53:00:4b:75:6f --config Interface detached successfully (2) Reboot the guest, and enumerate the network interfaces for vm1: $ virsh domiflist vm1 Interface Type Source Model MAC ------------------------------------------------------- vnet0 network default virtio 52:54:00:cd:58:29 (3) And, inside vm1, you can now see only see the interface for associated with the default network: $ ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:cd:58:29 brd ff:ff:ff:ff:ff:ff inet 192.168.122.50/24 brd 192.168.122.255 scope global dynamic eth0 valid_lft 3600sec preferred_lft 3600sec inet6 fe80::5054:ff:fecd:5829/64 scope link valid_lft forever preferred_lft forever NOTES: - While detaching, using the "--live" parameter is not recommended as it might affect any existing network activities on the NIC to be removed. - If detaching the NIC doesn't go as expected or it still shows up, to get the guest back to its previous networking state, edit the guest XML: $ virsh edit vm1 [. . .] and remove the network interface attribute: