- PVSM.RU - https://www.pvsm.ru -
Обычный подход к подключению виртуальной машины к сети Интернет схож с подключением к сети любого другого устройства и заключается в подключении виртуального или проброса реального сетевого интерфейса, a также в настройке и проверке сетевых подключений, служб, правил маршрутизации и фильтрации трафика и так далее.
В случае если виртуальная машина является сервером или является виртуальным десктопом и закреплена за конкретным пользователем такой подход вполне оправдан, но что делать если виртуальная машина является публичным виртуальным десктопом и любой желающий может к ней бесплатно подключится?
Необходимо сделать так чтобы интернет в виртуальную машину заводился не со стороны хоста, а со стороны клиента.
Подключение виртуальной машины к Интенет-каналу клиента позволит:
Самый простой способ завести Интернет со стороны клиента является проброс сетевого USB-адаптера или модема. Но данный способ очень требователен к качеству сети. Если виртуальная машина находится за рубежом велика вероятность того что будут возникать лаги и подвисания.
Альтернативой проброса USB-устройств может стать туннелирование портов между клиентом и виртуальной машиной через SPICE-канал по аналогии с туннелированием портов в SSH.
В виртуальных машинах QEMU есть канал передачи данных от клиента к виртуальной машине так называемый SPICE-канал. По этому каналу передаются данные устройств ввода, содержимое буфера обмена и многое другое.
Теоретически можно пробросить локальные порты клиента (IP-адрес 127.0.0.1) в виртуальную машину и оформить их как локальные.
Примерный алгоритм подключения к Интенет-каналу клиента через туннелирование портов:
Реализация
Все что осталось сделать, чтобы туннелирование портов стало реальностью — это подправить исходный код SPICE-клиента и гостевых дополнений SPICE, сформировать патчи и отправить разработчикам. Всё это возможно потому-что исходный код SPICE открыт.
Более того в ходе переговоров с разработчиками SPICE выяснилось что подобный функционал реализован в форке SPICE компании FlexVDI [2]. Исходный код форка частично опубликован в репозитории [https://github.com/flexvdi [3]] в нем, говорят, есть фрагмент отвечающий за тунелирование.
Запись переговоров доступна на канале рассылки "Spice-devel" тема "Feature suggestion: Port tunneling between VM & client over spice-channel [4]".
Область применения
Данная технология может получить широкое распространение в демонстрационных и публичных виртуальных машинах и в обычном VDI-хостинге.
Если кого-нибудь появилось желание помочь в реализации данного функционала, вы можете реализовать данный функционал и создать патчи если есть какие либо замечания и предложения, можете оставить комментарии.
Автор: b0r1s
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/virtualizatsiya/299824
Ссылки в тексте:
[1] хостинга: https://www.reg.ru/?rlink=reflink-717
[2] FlexVDI: https://flexvdi.com
[3] https://github.com/flexvdi: https://github.com/flexvdi
[4] Feature suggestion: Port tunneling between VM & client over spice-channel: https://www.mail-archive.com/spice-devel@lists.freedesktop.org/msg45650.html
[5] Источник: https://habr.com/post/430592/?utm_campaign=430592
Нажмите здесь для печати.