На хосте доступен один внешний IP-адрес, поэтому я настроил своих гостей KVM с помощью NAT.
Как настроить переадресацию портов для пересылки некоторых запросов извне гостям?
Я не смог найти никакой документации по этому вопросу. Наиболее близким ответом, вероятно, является этот ответ , но также упоминается, что есть более простой способ сделать это в libvirt 0.8.3. Кто-нибудь знает более актуальный способ сделать это?
Ответы:
Вот лучший способ настроить переадресацию портов, используя скрипт подключения ( источник ).
В
/etc/libvirt/hooks/qemu
:Вы должны установить четыре переменные вверху, чтобы они соответствовали вашей настройке libvirt.
Вам нужно будет перезапустить libvirt-bin, что делается в Ubuntu:
тогда вам нужно будет перезагрузить гостя. В Ubuntu вам нужно будет выполнить настройку,
/etc/apparmor.d/usr.sbin.libvirtd
чтобы скрипт хука выполнялся:Следующий за
Append
Затем перезагрузите apparmor:
Вероятно, есть способ
$GUEST_IPADDR
автоматической настройки с помощью virsh / dumpxml / iface-dumpxml, но я его не нашел. Кроме того, IP-адрес может быть установлен статически в сети xml: документации .Насколько я могу судить, сетевые фильтры могут использоваться только для ограничения того, что происходит в виртуальной сети, и они бесполезны для переадресации портов.
источник
/etc/libvirt/hooks/** rmix,
в конфигурационном файле apparmor по умолчанию, и похоже, что он имеет тот же эффект. Я мог запустить скрипт без изменения конфигурации apparmor.Я в похожей ситуации. У меня есть Windows Server, работающий в KVM в частной сети с NAT, который подключен к хосту через интерфейс virbr0. Я хочу сделать доступ к виртуальной машине через удаленный рабочий стол. Поэтому я должен перенаправить трафик на порт 3389 (RDP) на порт виртуальной машины 3389. Я добился этого с помощью некоторых приемлемых правил.
Конечно, должны быть приняты HOST-IP, VM-IP и VM-NET. Однако связываться с iptables и libvirt сложно. Сейчас я ищу решение, чтобы получить доступ к Интернету на моей виртуальной машине, который я потерял из-за несоответствия правилам iptable :-(
источник
Я считаю, что ответ, на который вы ссылаетесь, все еще показывает соответствующие правила iptables. Однако теперь вы можете использовать обработчик сценариев для создания и уничтожения правил при запуске и остановке виртуальных машин. Как сказал Исаак в предыдущем ответе, в текущей libvirt есть также сетевые фильтры, но я не уверен, как или даже можно ли их использовать для открытия портов для гостей с NAT.
источник
как настроена гостевая сеть? если он соединен мостом, все, что вам нужно сделать, это перенаправить порты на IP-адреса гостей. Если ваши гости стоят за еще одним NAT, который настроил libvirt, то это усложняется
но в любом случае, здесь вы просто относитесь к виртуальным машинам как к физической машине
источник