Sunday, April 29, 2018

004- Using 'virt-manager' to create Windows VM

I will create the second KVM Host "kvm-host2' same way I created 'kvm-host1' in the first bost.

'kvm-host2' will take '192.168.75.171' IP address



Create snapshots fro your two KVM Hosts:

virsh # snapshot-create-as  KVM-Host 03_before_Windows_VM --description "Before creating Windows VM on KVM-Host-2"
Domain snapshot 03_before_Windows_VM created
virsh # snapshot-create-as  KVM-Host-2 03_before_Windows_VM --description "Before creating Windows VM on KVM-Host-2"
Domain snapshot 03_before_Windows_VM created


Deploy Windows 10 VM (linuxcbkvmwin1):


Username/Password: Abdurrahman/Redhat13!
IP:192.168.75.76/24

Deploy Windows Server 2016 (linuxcbtkvmwin2) Same Way as (linuxcbtkvmwin1):

Username/Password: Administrator/Redhat13!
IP:192.168.75.77/24

Friday, April 27, 2018

003- Using 'virt-manager' to create Linux VMs

Create new Ubuntu 16.04 VM:




Check network for the new VM, it should be in 192.168.75.0/24 network:

root@linuxcbtkvmubu1:~# hostname
linuxcbtkvmubu1
root@linuxcbtkvmubu1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:8d:e0:a1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.42/24 brd 192.168.75.255 scope global dynamic ens3
       valid_lft 2904sec preferred_lft 2904sec
    inet6 fe80::5054:ff:fe8d:e0a1/64 scope link 
       valid_lft forever preferred_lft forever
root@linuxcbtkvmubu1:~# ping -c 1 google.com
PING google.com (172.217.13.238) 56(84) bytes of data.
64 bytes from iad23s61-in-f14.1e100.net (172.217.13.238): icmp_seq=1 ttl=53 time=14.3 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.385/14.385/14.385/0.000 ms
root@linuxcbtkvmubu1:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.1    0.0.0.0         UG    0      0        0 ens3
192.168.75.0    0.0.0.0         255.255.255.0   U     0      0        0 ens3


Change IP configuration to be Static one:

root@linuxcbtkvmubu1:~# cp -av /etc/network/interfaces /root/orig_files/
'/etc/network/interfaces' -> '/root/orig_files/interfaces'
root@linuxcbtkvmubu1:~# cat  /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto ens3
#iface ens3 inet dhcp
auto ens3
iface ens3 inet static
  address 192.168.75.172
  netmask 255.255.255.0
  gateway 192.168.75.1
  dns-nameservers 192.168.75.1
root@linuxcbtkvmubu1:~# reboot 
ab@linuxcbtkvmubu1:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:38:c5:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.172/24 brd 192.168.75.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe38:c556/64 scope link 
       valid_lft forever preferred_lft forever


Do the same steps with Debian 9.4 VM (linuxcbtkvmdeb1):

root@linuxcbtkvmdeb1:~# hostname
linuxcbtkvmdeb1
root@linuxcbtkvmdeb1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:8f:cd:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.43/24 brd 192.168.75.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe8f:cdfd/64 scope link 
       valid_lft forever preferred_lft forever
root@linuxcbtkvmdeb1:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.1    0.0.0.0         UG    0      0        0 ens3
192.168.75.0    0.0.0.0         255.255.255.0   U     0      0        0 ens3
root@linuxcbtkvmdeb1:~# mkdir /root/orig_files
root@linuxcbtkvmdeb1:~# cp -av /etc/network/interfaces /root/orig_files/
'/etc/network/interfaces' -> '/root/orig_files/interfaces'
root@linuxcbtkvmdeb1:~# cat  /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug ens3
#iface ens3 inet dhcp
allow-hotplug ens3
iface ens3 inet static
  address 192.168.75.173
  netmask 255.255.255.0
  gateway 192.168.75.1
  dns-nameservers 192.168.75.1
root@linuxcbtkvmdeb1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:8f:cd:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.173/24 brd 192.168.75.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe8f:cdfd/64 scope link 
       valid_lft forever preferred_lft forever


Install RHEL 7.5, same way but just using HTTP protocol (linuxcbtkvmrh1):

Prepare the APACHE server on the KVM HOST:
Reference:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-making-media-additional-sources
root@kvm-host1:~# ls /var/www/html/os/rhel/
root@kvm-host1:~# mount -o loop,ro -t iso9660 /var/lib/libvirt/images/rhel-server-7.5-x86_64-dvd.iso /mnt/dvd/
root@kvm-host1:~# cp -r /mnt/dvd/ /var/www/html/os/rhel/7.5
root@kvm-host1:~# systemctl restart apache2

RAM SIZE MUST BE AT LEAST 2 GB for the installation Purpose, then you can adjust it later



[root@linuxcbtkvmrh1 ~]# hostname
linuxcbtkvmrh1.linuxcbt.com
[root@linuxcbtkvmrh1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:fb:51:46 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.39/24 brd 192.168.75.255 scope global noprefixroute dynamic eth0
       valid_lft 3139sec preferred_lft 3139sec
    inet6 fe80::5054:ff:fefb:5146/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@linuxcbtkvmrh1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.1    0.0.0.0         UG    100    0        0 eth0
192.168.75.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@linuxcbtkvmrh1 ~]# mkdir /root/orig_files 
[root@linuxcbtkvmrh1 ~]# cp -av /etc/sysconfig/network-scripts/ifcfg-eth0 /root/orig_files/
‘/etc/sysconfig/network-scripts/ifcfg-eth0’ -> ‘/root/orig_files/ifcfg-eth0’
[root@linuxcbtkvmrh1 ~]# nmtui
[root@linuxcbtkvmrh1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
# Generated by dracut initrd
NAME=eth0
HWADDR=52:54:00:FB:51:46
ONBOOT=yes
NETBOOT=yes
UUID=87dbb6f3-22e1-4d43-a32c-f8176f770299
IPV6INIT=yes
BOOTPROTO=none
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
IPADDR=192.168.75.174
PREFIX=24
GATEWAY=192.168.75.1
DNS1=192.168.75.1
DOMAIN=linuxcbt.com
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
[root@linuxcbtkvmrh1 ~]# reboot 
[root@linuxcbtkvmrh1 ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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:fb:51:46 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.174/24 brd 192.168.75.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fefb:5146/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@linuxcbtkvmrh1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.1    0.0.0.0         UG    100    0        0 eth0
192.168.75.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0


Install CentOS 7.4, same way exactly as RHEL 7.5 using HTTP protocol (linuxcbtkvmcent1):

root@kvm-host1:~# ls /var/www/html/os/centos/
root@kvm-host1:~# mount -o loop,ro -t iso9660 /var/lib/libvirt/images/CentOS-7-x86_64-DVD-1708.iso /mnt/dvd/
root@kvm-host1:~# cp -r /mnt/dvd/ /var/www/html/os/centos/7.4
root@kvm-host1:~# systemctl restart apache2

Set static IP address
[root@linuxcbtkvmcent1 ~]# hostname
linuxcbtkvmcent1.linuxcbt.com
[root@linuxcbtkvmcent1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:57:55:a4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.50/24 brd 192.168.75.255 scope global dynamic eth0
       valid_lft 3487sec preferred_lft 3487sec
    inet6 fe80::5054:ff:fe57:55a4/64 scope link 
       valid_lft forever preferred_lft forever
[root@linuxcbtkvmcent1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.1    0.0.0.0         UG    100    0        0 eth0
192.168.75.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@linuxcbtkvmcent1 ~]# mkdir /root/orif_files
[root@linuxcbtkvmcent1 ~]# cp -av /etc/sysconfig/network-scripts/ifcfg-eth0 /root/orif_files/
‘/etc/sysconfig/network-scripts/ifcfg-eth0’ -> ‘/root/orif_files/ifcfg-eth0’
[root@linuxcbtkvmcent1 ~]# nmtui
[root@linuxcbtkvmcent1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
# Generated by dracut initrd
NAME=eth0
HWADDR=52:54:00:57:55:A4
ONBOOT=yes
NETBOOT=yes
UUID=7145791d-6624-4870-8a11-aebe961ac66d
IPV6INIT=yes
BOOTPROTO=none
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
IPADDR=192.168.75.175
PREFIX=24
GATEWAY=192.168.75.1
DNS1=192.168.75.1
DOMAIN=linuxcbt.com
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
[root@linuxcbtkvmcent1 ~]# reboot 
[root@linuxcbtkvmcent1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:57:55:a4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.175/24 brd 192.168.75.175 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe57:55a4/64 scope link 
       valid_lft forever preferred_lft forever
[root@linuxcbtkvmcent1 ~]# !route
route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.1    0.0.0.0         UG    100    0        0 eth0
192.168.75.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0




Create Snapshot:

[root@base ~]# hostname
base.lab
[root@base ~]# virsh snapshot-create-as KVM-Host 02_KVM_edition-7 --description "Fully created ubuntu 16.04, debian 9.4, RHEL 7.5 and CentOS 7.4 VMs"
Domain snapshot 02_KVM_edition-7 created


Install 'virt-top'

root@kvm-host1:~# apt-get install virt-top
root@kvm-host1:~# virt-top
virt-top 09:08:02 - x86_64 4/4CPU 3700MHz 12019MB
4 domains, 4 active, 4 running, 0 sleeping, 0 paused, 0 inactive D:0 O:0 X:0
CPU: 14.9%  Mem: 4096 MB (4096 MB by guests)

   ID S RDRQ WRRQ RXBY TXBY %CPU %MEM    TIME   NAME                           
    3 R  824    6  174    0 10.5  8.0   0:16.39 linuxcbtkvmcent1
    4 R  296    0  174    0  4.0  8.0   0:18.10 linuxcbtkvmrh1
    2 R    0    2  146  112  0.2  8.0   0:16.03 linuxcbtkvmdeb1
    1 R    0    0  174    0  0.2  8.0   0:17.94 linuxcbtkvmubu1
>

002 - Configuration files

Configurations files directory:

root@kvm-host1:~# ls -lh /etc/libvirt/
total 92K
drwxr-xr-x 2 root root 4.0K Mar 12 19:11 hooks
-rw-r--r-- 1 root root  547 Mar 12 19:11 libvirt.conf
-rw-r--r-- 1 root root  16K Mar 12 19:11 libvirtd.conf
-rw-r--r-- 1 root root 1.9K Mar 12 19:11 libxl.conf
-rw-r--r-- 1 root root 2.2K Mar 12 19:11 libxl-lockd.conf
-rw-r--r-- 1 root root 1.2K Mar 12 19:11 lxc.conf
drwxr-xr-x 2 root root 4.0K Apr 27 19:23 nwfilter
drwxr-xr-x 3 root root 4.0K Apr 27 19:22 qemu
-rw------- 1 root root  25K Mar 12 19:11 qemu.conf
-rw-r--r-- 1 root root 2.2K Mar 12 19:11 qemu-lockd.conf
-rw-r--r-- 1 root root 2.5K Mar 12 19:11 qemu-sanlock.conf
-rw-r--r-- 1 root root 2.1K Mar 12 19:11 virtlockd.conf
-rw-r--r-- 1 root root 2.0K Mar 12 19:11 virtlogd.conf
-rw-r--r-- 1 root root 1.9K Mar 12 19:11 virt-login-shell.conf


libvirt configuration file:

root@kvm-host1:~# cat /etc/libvirt/libvirt.conf 
#
# This can be used to setup URI aliases for frequently
# used connection URIs. Aliases may contain only the
# characters  a-Z, 0-9, _, -.
#
# Following the '=' may be any valid libvirt connection
# URI, including arbitrary parameters

#uri_aliases = [
#  "hail=qemu+ssh://root@hail.cloud.example.com/system",
#  "sleet=qemu+ssh://root@sleet.cloud.example.com/system",
#]

#
# These can be used in cases when no URI is supplied by the application
# (@uri_default also prevents probing of the hypervisor driver).
#
#uri_default = "qemu:///system"


qemu configuration file:

root@kvm-host1:~# head -n5 /etc/libvirt/qemu
qemu/              qemu.conf          qemu-lockd.conf    qemu-sanlock.conf
root@kvm-host1:~# head -n5 /etc/libvirt/qemu.conf 
# Master configuration file for the QEMU driver.
# All settings described here are optional - if omitted, sensible
# defaults are used.

# Use of TLS requires that x509 certificates be issued. The default is


VMs related files directory:

root@kvm-host1:~# ls -lh /var/lib/libvirt/
total 16K
drwx--x--x 2 root         root         4.0K Mar 12 19:11 boot
drwx--x--x 2 root         root         4.0K Mar 12 19:11 images
drwxr-x--- 7 libvirt-qemu libvirt-qemu 4.0K Apr 27 19:23 qemu
drwx------ 2 root         root         4.0K Mar 12 19:11 sanlock


Networks XML files:

root@kvm-host1:~# cat  /etc/libvirt/qemu/networks/default.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh net-edit default
or other application using the libvirt API.
-->

<network>
  <name>default</name>
  <uuid>ed591bbd-b708-479d-80cf-7675ec082d86</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:eb:57:95'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

001 - KVM-host1 - Installation

Basic Info:

root@kvm-host1:~# hostname 
kvm-host1.ab.lab
root@kvm-host1:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.4 (stretch)
Release: 9.4
Codename: stretch
root@kvm-host1:~# cat /etc/resolv.conf 
nameserver 192.168.75.1
search ab.lab
root@kvm-host1:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.1    0.0.0.0         UG    0      0        0 ens3
192.168.75.0    0.0.0.0         255.255.255.0   U     0      0        0 ens3
root@kvm-host1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:94:05:d7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.170/24 brd 192.168.75.155 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe94:5d7/64 scope link 
       valid_lft forever preferred_lft forever
root@kvm-host1:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

#
allow-hotplug ens3
iface ens3 inet static
  address 192.168.75.170
  network 192.168.75.0
  netmask 255.255.255.0
  broadcast 192.168.75.155
  gateway 192.168.75.1
  dns-nameservers 192.168.75.1


Check required CPU Flags ('vmx' for Intel or 'svm' for AMD):

root@kvm-host1:~# grep -e vmx -e svm /proc/cpuinfo 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms xsaveopt
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms xsaveopt
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms xsaveopt
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms xsaveopt


Install KVM:

root@kvm-host1:~# apt-get install qemu-kvm


Install 'bridge-utils' package:

root@kvm-host1:~# apt-get install bridge-utils


Check the installed packages:

root@kvm-host1:~# dpkg -l | grep qemu
ii  ipxe-qemu                             1.0.0+git-20161027.b991c67-1                all          PXE boot firmware - ROM images for qemu
ii  qemu-kvm                              1:2.8+dfsg-6+deb9u3                         amd64        QEMU Full virtualization on x86 hardware
ii  qemu-system-common                    1:2.8+dfsg-6+deb9u3                         amd64        QEMU full system emulation binaries (common files)
ii  qemu-system-x86                       1:2.8+dfsg-6+deb9u3                         amd64        QEMU full system emulation binaries (x86)
ii  qemu-utils                            1:2.8+dfsg-6+deb9u3                         amd64        QEMU utilities
root@kvm-host1:~# dpkg -l | grep kvm
ii  qemu-kvm                              1:2.8+dfsg-6+deb9u3                         amd64        QEMU Full virtualization on x86 hardware
root@kvm-host1:~# dpkg -l | grep  bridge-utils
ii  bridge-utils                          1.5-13+deb9u1                               amd64        Utilities for configuring the Linux Ethernet bridge


Basic info about some main packages:

root@kvm-host1:~# dpkg -L qemu-system-common  
root@kvm-host1:~# dpkg -L qemu-utils
root@kvm-host1:~# dpkg -L bridge-utils


Check if KVM module is loaded:

root@kvm-host1:~# lsmod | grep kvm
kvm_intel             192512  0
kvm                   593920  1 kvm_intel
irqbypass              16384  1 kvm


Create Bridge

Network before
root@kvm-host1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:94:05:d7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.170/24 brd 192.168.75.155 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe94:5d7/64 scope link 
       valid_lft forever preferred_lft forever
root@kvm-host1:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

#
allow-hotplug ens3
iface ens3 inet static
  address 192.168.75.170
  network 192.168.75.0
  netmask 255.255.255.0
  broadcast 192.168.75.155
  gateway 192.168.75.1
  dns-nameservers 192.168.75.1
root@kvm-host1:~# cp -av  /etc/network/interfaces /root/orig_files/interfaces_before_bridge
'/etc/network/interfaces' -> '/root/orig_files/interfaces_before_bridge'

After Bridge:
root@kvm-host1:~# cat   /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# Static network configuration
#allow-hotplug ens3
#iface ens3 inet static
#  address 192.168.75.170
#  network 192.168.75.0
#  netmask 255.255.255.0
#  broadcast 192.168.75.155
#  gateway 192.168.75.1
#  dns-nameservers 192.168.75.1

# br0 will be using ens3
allow-hotplug ens3
iface ens3 inet static

auto br0
iface br0 inet static
  address 192.168.75.170
  network 192.168.75.0
  netmask 255.255.255.0
  broadcast 192.168.75.155
  gateway 192.168.75.1
  dns-nameservers 192.168.75.1
  #Bridge configuration
  bridge_ports ens3
  bridge_stp off
  bridge_maxwait 0
  bridge_fd 0

Reboot and check results:
root@kvm-host1:~# reboot
root@kvm-host1:~# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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: ens3:  mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 52:54:00:94:05:d7 brd ff:ff:ff:ff:ff:ff
3: br0:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:94:05:d7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.170/24 brd 192.168.75.155 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe94:5d7/64 scope link 
       valid_lft forever preferred_lft forever
root@kvm-host1:~#  route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.75.1    0.0.0.0         UG    0      0        0 br0
192.168.75.0    0.0.0.0         255.255.255.0   U     0      0        0 br0
root@kvm-host1:~# brctl show
bridge name bridge id  STP enabled interfaces
br0  8000.5254009405d7 no  ens3


Install required packages to manage VMs from GUI and CLI:

root@kvm-host1:~# apt-get install virt-manager
root@kvm-host1:~# apt-get install virtinst
root@kvm-host1:~# dpkg -L virt-manager | grep bin
/usr/bin
/usr/bin/virt-manager
root@kvm-host1:~# dpkg -L virtinst | grep bin
/usr/bin
/usr/bin/virt-clone
/usr/bin/virt-convert
/usr/bin/virt-install
/usr/bin/virt-xml