Sunday, January 30, 2022

Steps to "fix" the dynamic ip of KVM

 https://www.cyberciti.biz/faq/linux-kvm-libvirt-dnsmasq-dhcp-static-ip-address-configuration-for-guest-os/
"KVM libvirt assign static guest IP addresses using DHCP on the virtual machine"







  - in this blog-post :

I'm connecting to a running KVM via dynamic iP ;

I’m changing DHCP for default Virtual Network to grant “fixed” iPs based on KVM’s mac Hwaddress .

Eventually I'm connecting to same KVM via a “fixed” iP that won’t change after KVM restarts ;




====================================================================

- List all KVMs :

--------------------------------------------------------


root@ubuntu2004:~# virsh list --all

Id Name State

---------------------------

1 centos82a running



====================================================================

- Check mac of running KVM - "centos82a" :

--------------------------------------------------------


root@ubuntu2004:~# virsh dumpxml centos82a | grep -i '<mac'

<mac address='52:54:00:a1:16:27'/>

root@ubuntu2004:~#

root@ubuntu2004:~#



====================================================================

- Check the list of virtual networks :

--------------------------------------------------------


root@ubuntu2004:~# virsh net-list

Name State Autostart Persistent

--------------------------------------------

default active yes yes



====================================================================

We need dynamic iPs that can be assigned to virtual machines on default network ;

- Check dhcp range of default network bridge :

--------------------------------------------------------


root@ubuntu2004:~# virsh net-dumpxml default

<network>

<name>default</name>

<uuid>37775fce-316b-4e75-9bac-b18f65b5655e</uuid>

<forward mode='nat'>

<nat>

<port start='1024' end='65535'/>

</nat>

</forward>

<bridge name='virbr0' stp='on' delay='0'/>

<mac address='52:54:00:5b:c7:83'/>

<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>



====================================================================

Check iP of host OS :

--------------------------------------------------------


root@ubuntu2004:~#

root@ubuntu2004:~# ip a | grep glo

inet 172.20.124.107/20 brd 172.20.127.255 scope global dynamic eth0

inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0



====================================================================

- Check iP of guest KVM :

--------------------------------------------------------


root@ubuntu2004:~#

root@ubuntu2004:~# arp -n

Address HWtype HWaddress Flags Mask Iface

172.20.112.1 ether 00:15:5d:bf:f7:ba C eth0

192.168.122.223 ether 52:54:00:a1:16:27 C virbr0

root@ubuntu2004:~#

root@ubuntu2004:~#



====================================================================

- We can enter into KVM via dynamic iP that can change after shutdown / start :

--------------------------------------------------------


root@ubuntu2004:~# sshpass -p"toor" ssh root@192.168.122.223

Last login: Thu Jan 27 13:53:45 2022 from 192.168.122.1

[root@localhost ~]#

[root@localhost ~]# ip a | grep glo

inet 192.168.122.223/24 brd 192.168.122.255 scope global dynamic noprefixroute ens2

[root@localhost ~]#

[root@localhost ~]# logout

Connection to 192.168.122.223 closed.

root@ubuntu2004:~#

root@ubuntu2004:~#

root@ubuntu2004:~# virsh net-edit default


Select an editor. To change later, run 'select-editor'.

1. /usr/bin/vim.nox

2. /bin/nano <---- easiest

3. /usr/bin/vim.basic

4. /usr/bin/mcedit

5. /usr/bin/vim.tiny

6. /bin/ed


Choose 1-6 [2]: 3


Network default XML configuration not changed.


root@ubuntu2004:~#

root@ubuntu2004:~# select-editor


Select an editor. To change later, run 'select-editor'.

1. /usr/bin/vim.nox

2. /bin/nano <---- easiest

3. /usr/bin/vim.basic

4. /usr/bin/mcedit

5. /usr/bin/vim.tiny

6. /bin/ed


Choose 1-6 [2]: 4

root@ubuntu2004:~#

root@ubuntu2004:~#

root@ubuntu2004:~# virsh dumpxml centos82a | grep -i '<mac'

<mac address='52:54:00:a1:16:27'/>

root@ubuntu2004:~#

root@ubuntu2004:~#

root@ubuntu2004:~# virsh net-dumpxml default

<network>

<name>default</name>

<uuid>37775fce-316b-4e75-9bac-b18f65b5655e</uuid>

<forward mode='nat'>

<nat>

<port start='1024' end='65535'/>

</nat>

</forward>

<bridge name='virbr0' stp='on' delay='0'/>

<mac address='52:54:00:5b:c7:83'/>

<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>


root@ubuntu2004:~#




====================================================================

On "default" VirtuaL Network , we add this line at <dhcp> :

<host mac='52:54:00:a1:16:27' name='centos82a' ip='192.168.122.111'/>

After change : net-destroy + net-start on "default"

--------------------------------------------------------


root@ubuntu2004:~#

root@ubuntu2004:~# virsh net-edit default

Network default XML configuration edited.


root@ubuntu2004:~#

root@ubuntu2004:~# virsh net-destroy default

Network default destroyed


root@ubuntu2004:~# virsh net-start default

Network default started


root@ubuntu2004:~#

root@ubuntu2004:~# virsh net-dumpxml default

<network>

<name>default</name>

<uuid>37775fce-316b-4e75-9bac-b18f65b5655e</uuid>

<forward mode='nat'>

<nat>

<port start='1024' end='65535'/>

</nat>

</forward>

<bridge name='virbr0' stp='on' delay='0'/>

<mac address='52:54:00:5b:c7:83'/>

<ip address='192.168.122.1' netmask='255.255.255.0'>

<dhcp>

<range start='192.168.122.2' end='192.168.122.254'/>

<host mac='52:54:00:a1:16:27' name='centos82a' ip='192.168.122.111'/>

</dhcp>

</ip>

</network>


root@ubuntu2004:~#

root@ubuntu2004:~# virsh dumpxml centos82a | grep -i '<mac'

<mac address='52:54:00:a1:16:27'/>

root@ubuntu2004:~#

root@ubuntu2004:~# sshpass -p"toor" ssh root@192.168.122.223

ssh: connect to host 192.168.122.223 port 22: No route to host

root@ubuntu2004:~#

root@ubuntu2004:~#

root@ubuntu2004:~# arp -n

Address HWtype HWaddress Flags Mask Iface

192.168.122.111 (incomplete) virbr0

192.168.122.223 (incomplete) virbr0

172.20.112.1 ether 00:15:5d:bf:f7:ba C eth0

root@ubuntu2004:~#

root@ubuntu2004:~#

root@ubuntu2004:~#




====================================================================

Shutdown / start KVM "centos82a" :

--------------------------------------------------------


root@ubuntu2004:~# virsh shutdown centos82a

Domain centos82a is being shutdown


root@ubuntu2004:~#


root@ubuntu2004:~#

root@ubuntu2004:~# virsh list --all

Id Name State

----------------------------

- centos82a shut off


root@ubuntu2004:~#



root@ubuntu2004:~#

root@ubuntu2004:~# virsh start centos82a

Domain centos82a started


root@ubuntu2004:~#

root@ubuntu2004:~#

root@ubuntu2004:~# virsh list --all

Id Name State

---------------------------

2 centos82a running


root@ubuntu2004:~#

root@ubuntu2004:~#

root@ubuntu2004:~#

root@ubuntu2004:~# arp -n

Address HWtype HWaddress Flags Mask Iface

192.168.122.111 (incomplete) virbr0

192.168.122.223 (incomplete) virbr0

172.20.112.1 ether 00:15:5d:bf:f7:ba C eth0

root@ubuntu2004:~#

root@ubuntu2004:~#

root@ubuntu2004:~#



root@ubuntu2004:~#

root@ubuntu2004:~# arp -n

Address HWtype HWaddress Flags Mask Iface

192.168.122.111 ether 52:54:00:a1:16:27 C virbr0

192.168.122.223 (incomplete) virbr0

172.20.112.1 ether 00:15:5d:bf:f7:ba C eth0

root@ubuntu2004:~#

root@ubuntu2004:~#





====================================================================

- Now We can enter into KVM via dynamic iP that won't change after shutdown / start :

it's fixed by mac address

the new iP "192.168.122.111" it's fixed by mac (HWadress) "52:54:00:a1:16:27"

--------------------------------------------------------


root@ubuntu2004:~#

root@ubuntu2004:~# sshpass -p"toor" ssh root@192.168.122.111

Last login: Sun Jan 30 05:45:54 2022 from 192.168.122.1

[root@centos82a ~]#

[root@centos82a ~]# cat /etc/*rele* | grep -i linux | sort -u

CentOS Linux release 8.2.2004 (Core)

Derived from Red Hat Enterprise Linux 8.2 (Source)

NAME="CentOS Linux"

PRETTY_NAME="CentOS Linux 8 (Core)"

[root@centos82a ~]#

[root@centos82a ~]# ip a | grep glo

inet 192.168.122.111/24 brd 192.168.122.255 scope global dynamic noprefixroute ens2

[root@centos82a ~]#


[root@centos82a ~]# 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: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

link/ether 52:54:00:a1:16:27 brd ff:ff:ff:ff:ff:ff

inet 192.168.122.111/24 brd 192.168.122.255 scope global dynamic noprefixroute ens2

valid_lft 2955sec preferred_lft 2955sec

inet6 fe80::f55f:7b40:d40c:3062/64 scope link noprefixroute

valid_lft forever preferred_lft forever

[root@centos82a ~]#


[root@centos82a ~]# logout

Connection to 192.168.122.111 closed.

root@ubuntu2004:~#

root@ubuntu2004:~#


root@ubuntu2004:~#

root@ubuntu2004:~# virsh net-dhcp-leases default

Expiry Time MAC address Protocol IP address Hostname Client ID or DUID

-------------------------------------------------------------------------------------------------------------

2022-01-30 17:09:45 52:54:00:a1:16:27 ipv4 192.168.122.111/24 centos82a 01:52:54:00:a1:16:27


root@ubuntu2004:~#


root@ubuntu2004:~# cat /etc/*rele* | grep -i version

VERSION="20.04.3 LTS (Focal Fossa)"

VERSION_ID="20.04"

VERSION_CODENAME=focal

root@ubuntu2004:~#




9 comments:

  1. An Android developer online course supports learning from anywhere. It emphasizes practical coding and project development. This android developer online course prepares learners for job roles. It is effective.

    ReplyDelete
  2. "Enhance your career with power bi training online classes , designed for beginners and professionals to master Salesforce administration. Gain hands-on experience, learn best practices, and become a certified Salesforce Administrator."

    ReplyDelete
  3. "Join the best tableau training to master data visualization and analytics with hands-on projects. Enhance your career by learning from industry experts and gaining real-world skills."

    ReplyDelete
  4. "Enhance your skills with salesforce developer classes and become proficient in building custom solutions on the Salesforce platform."

    ReplyDelete
  5. "Enhance your career with sfdc admin training mastering Salesforce administration and automation skills."

    ReplyDelete
  6. "Enhance your data visualization skills with tableau training designed for beginners and professionals alike. Learn to create interactive dashboards, analyze data effectively, and make data-driven decisions with confidence."

    ReplyDelete
  7. "Enhance your skills with salesforce developer course designed for beginners and professionals alike. Learn to build, customize, and manage Salesforce applications effectively for career growth."

    ReplyDelete
  8. “Insightful post! Our Java course offers practical coding experience through real-time projects.” java training online

    ReplyDelete
  9. “Good content! Our UI/UX program focuses on practical design skills for modern products.” ui design course online

    ReplyDelete