Подключите внешний IP к автономной виртуальной машине qemu
У меня очень специфическая проблема. Чтобы сообщить Вам, чем я занимаюсь, я опишу всю инфраструктуру моей системы.
У меня есть хост-машина Ubuntu, на которой я запускаю до 4 виртуальных машин Ubuntu. Они размещены на qemu (автономно, без внешних менеджеров). На одном из них мне нужно установить "агент", который написан на Java. Агент подключается к контроллеру машины, который находится где-то во внешней сети. Для каждой виртуальной машины у меня есть интерфейс TAP. Все они подключены к хосту для обеспечения связи между виртуальными машинами.
Теперь мне нужно как-то соединить внешний IP-адрес с виртуальной машиной с агентом на ней. Я могу запустить агент с адресом интерфейса NIC (например, 192.168.100.4) или на локальном хосте (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, но агент, похоже, просматривает интерфейсы при запуске и выкрикивает, что он не может видеть интерфейс с данным адресом.
Если у вас есть идеи, как это сделать, я буду очень признателен за любую помощь!:)