среда, 30 июля 2014 г.

Проброс портов из хоста в гостевую систему (KVM)

Например в гостевой системе открыт ssh порт 22. Чтобы к нему пробиться из внешней сети изменяем конфигурацию виртуальной машины:

virsh edit vm_name
вначале меняем первую строку:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
Затем находим строку , описывающую сетевую карту 
<interface type='network'>

и меняем на следующее: 
<interface type='user'>
И добавляем аргументы перед закрывающим тегом </domain>:
<qemu:commandline>
  <qemu:arg value='-redir'/>
  <qemu:arg value='tcp:2122::22'/>
</qemu:commandline>
 
Теперь обращаясь по адресу  хоста и указывая порт 2122, пакеты будут перенаправляться 
на порт 22 гостевой машины.
 
И на хосте, конечно, необходимо прописать что делать с поступающими пакетами:
 iptables -I FORWARD 1 -i eth0 -o virbr0 -d ip_vm -p tcp -m tcp --dport 2122 -j ACCEPT
 iptables -t nat -A POSTROUTING --dst ip_vm -p tcp --dport 2122 -j SNAT --to-source internal_ip_host