У меня есть очень конкретный вопрос. Для сообщения, что я готов я опишу целую инфраструктуру своей системы.
У меня есть хост-машина Ubuntu, на которой я дохожу до 4 виртуальных машин Ubuntu. Они размещаются qemu (автономный, никакие внешние менеджеры). На одном из них я должен установить 'агент', который записан в Java. Агент соединяется с машиной контроллера, которая находится где-нибудь во внешней сети. Для каждой виртуальной машины у меня есть интерфейс TAP. Все они соединяются мостом на хосте для включения коммуникации между виртуальными машинами.
Теперь то, что я должен сделать, должно так или иначе соединить внешний IP-адрес мостом к виртуальной машине с агентом на нем. Я могу запустить агент с адресом интерфейса NIC (напр. 192.168.100.4) или на localhost (127.0.0.1). Это видно контроллеру, но мне нужен он, чтобы быть замеченным с моим хостом внешний IP-адрес, не локальный.
|---------| |---------| |---------| |---------|
| VM 1 | | VM 2 | | VM 3 | | VM 4 |
| eth0 | | eth0 | | eth0 | | eth0 |
|---------| |---------| |---------| |---------|
\ \ / /
\ \---| |----/ /
\ |-------------------------| /
\------| tap1 tap2 tap3 tap4 |-------/
| \ | | / |
| \--vmnet1---/ |
| |
| HOST | |---------|
| em1 |------------| network |
|-------------------------| |---------|
Я пытался просто передать внешний адрес агентам, конфигурируют и делают некоторую маршрутизацию на хосте с iptables, но агент, кажется, смотрит на интерфейсы при запуске, и это вопит, что это не видит интерфейс с данным адресом.
Если у Вас есть какие-либо идеи, как сделать это, я был бы очень признателен за любую справку!:)