To forward port from KVM Guest to KVM Host (Node), for example, you want Port 22 of KVN Guest accessible as Port 2222 on KVM Hosts public IP address.
First, shutdown VM
virsh shutdown VM-NAME
Now edit VM config.
virsh edit VM-NAME
Add following before before closing
<qemu:commandline> <qemu:arg value='-redir'/> <qemu:arg value='tcp:2222::22'/> </qemu:commandline>
Find
<domain type='kvm'>
Replace With
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
Find
<interface type='network'>
Replace With
<interface type='user'>
Save and exit editor. Now, start VM.
virsh start VM-NAME
Sample config for VM with name ubuntu14
[[email protected] ~]# virsh shutdown ubuntu14 Domain ubuntu14 is being shutdown [[email protected] ~]# virsh edit ubuntu14 Domain ubuntu14 XML configuration edited. [[email protected] ~]# virsh start ubuntu14 Domain ubuntu14 started [[email protected] ~]# netstat -an | grep 2222 tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN [[email protected] ~]# virsh dumpxml ubuntu14 <domain type='kvm' id='7' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <name>ubuntu14</name> <uuid>9d2851db-1194-7051-834a-ca16fc372e49</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os> <type arch='x86_64' machine='rhel6.6.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/var/lib/libvirt/images/ubuntu14.img'/> <target dev='vda' bus='virtio'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <disk type='block' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hdc' bus='ide'/> <readonly/> <alias name='ide0-1-0'/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <controller type='usb' index='0'> <alias name='usb0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> <alias name='ide0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='user'> <mac address='52:54:00:a6:bd:a3'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/3'/> <target port='0'/> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/3'> <source path='/dev/pts/3'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'> <listen type='address' address='127.0.0.1'/> </graphics> <video> <model type='cirrus' vram='9216' heads='1'/> <alias name='video0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </memballoon> </devices> <qemu:commandline> <qemu:arg value='-redir'/> <qemu:arg value='tcp:2222::22'/> </qemu:commandline> </domain> [[email protected] ~]#