Как сделать мой виртуальный KVM-гость доступным из внешней сети?

Вопрос или проблема

Я создаю настройку KVM для POC.

Диапазон IP-хостов KVM: 172.21.158.0/24
Диапазон VM-гостей KVM: 172.21.183.0/24
стандартная виртуальная сеть с NAT переадресацией: 192.168.100.0/24

Ниже приведены настройки NIC виртуальных машин:

введите описание изображения здесь

Теперь я хочу получить доступ к гостевой виртуальной машине KVM из внешней сети.

Какие изменения нужно внести, чтобы сделать гостевую виртуальную машину доступной?

Вы показываете две разные сети в первом блоке: 172.21.158.0/24 и 172.21.183.0/24, поэтому они не смогут общаться друг с другом без некоторых правил iptables.

Вероятно, вы хотите запустить гостевую систему с “пользовательской сетью“. Вы можете сделать это, просто запустив гостевую систему без сетевых опций (пользовательская сеть используется по умолчанию):

qemu-system-x86_64 -hda /path/to/hda.img

Ответ или решение

Чтобы сделать виртуальную машину (VM) на KVM доступной из внешней сети, необходимо учесть несколько ключевых моментов, связанных с настройкой сети и безопасностью.

Шаг 1: Конфигурация сети KVM

В вашем случае выделены три диапазона IP-адресов:

  • Диапазон хоста KVM: 172.21.158.0/24
  • Диапазон гостевой виртуальной машины KVM: 172.21.183.0/24
  • Виртуальная сеть с NAT: 192.168.100.0/24

Так как виртуальная машина находится в другом диапазоне (172.21.183.0/24), необходимо настроить сеть, чтобы пакеты могли перемещаться между этими подсетями.

Шаг 2: Настройка NAT и перенаправления портов

  1. Включение IP Forwarding: На хосте KVM разрешите пересылку пакетов между интерфейсами.

    echo 1 > /proc/sys/net/ipv4/ip_forward

    Добавьте эту строку в файл /etc/sysctl.conf для постоянного эффекта.

  2. Настройка iptables. Используйте команду для настройки правил iptables, которые позволят перенаправлять трафик на гостевую VM:

    # Пропишите команды iptables для перенаправления конкретных портов
    iptables -t nat -A PREROUTING -d [EXTERNAL_IP] -p tcp --dport [PORT] -j DNAT --to-destination [GUEST_VM_IP]:[PORT]
    iptables -A FORWARD -p tcp -d [GUEST_VM_IP] --dport [PORT] -j ACCEPT

    Убедитесь, что [EXTERNAL_IP] замещен IP-хоста KVM, а [GUEST_VM_IP] — IP вашей гостевой VM. [PORT] заменяется на номер порта, который вы хотите открыть.

Шаг 3: Настройка сети виртуальной машины

Проверьте, что правильно настроили сетевой интерфейс виртуальной машины. Убедитесь, что драйвер сетевого устройства совпадает с используемой моделью (например, virtio).

  1. User networking: Если вы хотите упростить начальную настройку, можно рассмотреть использование user networking (уже предложено в вашем сообщении).

    qemu-system-x86_64 -hda /path/to/hda.img
  2. Bridged Networking: Чтобы обеспечить более эффективное взаимодействие, можно использовать сетевой мост:

    virsh edit [VM-Name]

    Измените настройки интерфейса, чтобы использовать мост:

    <interface type='bridge'>
     <mac address='52:54:00:XX:YY:ZZ'/>
     <source bridge='br0'/>
     <model type='virtio'/>
    </interface>

    Убедитесь, что br0 правильно настроен на хосте для работы с физическим сетевым интерфейсом.

Шаг 4: Тестирование и Безопасность

  1. Проверка соединения: Убедитесь, что вы можете отслеживать пакеты до удаленных узлов, используя команды пинг и traceroute.
  2. Обеспечение безопасности: Закройте все неиспользуемые порты и убедитесь, что только необходимые порты открыты и защищены.

Создание надежной конфигурации сети для виртуальных машин требует соблюдения баланса между доступностью и безопасностью. Следуйте предложенным шагам, и вы сможете сделать свою виртуальную машину доступной извне с учетом всех правил безопасности.

Оцените материал
Добавить комментарий

Капча загружается...