main

Хорошо забытое старое

Как я уже писал применительно к libvirt'у - поддержкой сетевых настроек он отнюдь не блещет. Поэтому я в большинстве случаев наcтраиваю сеть руками (кроме простейших, вида "подцепить виртуалку к существующему бриджу").

Решение проблемы с доступом к немаршрутизируемым виртуалкам пришло с неожиданной стороны - а зачем нам, собственно пробрасывать все соединения, когда нужно-то одно-два заранее известных? И тут на сцене появляется rinetd - tcp-proxy.

Софтина проста как топор, в отличие от socks-proxy, она даже не спрашивает на какой адрес/порт соединяться. Настроено в конфиге - извольте, не настроено - ну а чего вы хотели?

 default ^   +-------------+
  gw     |   |  virt-host  |
[client] +-> +-----+ br0   |
         eth0|    / \      |
             |   /---\     |
             | [vm1][vm2]  |
             +-------------+

В схеме выше на интерфейсе br0 висят только 2 виртуалки. На одной из виртуалок периодически нужно подцепиться в mysql'ю.

Если делать всё "по-правилам", нужно:

  • включить маршутизацию на хосте.
  • опционально - (пере)настроить фаервол на хосте
  • прописать маршрут до виртуалки на клиенте
  • прописать дефолт/маршрут до клиента на самой виртуалке

Написание команд для всего потребного - вам в качестве самостоятельной работы.

В моём случае - прописать 2 строчки в конфиг и перезапустить сервис. Всё.

allow from <...>
192.168.1.1 3306 192.168.122.15 3306