Kvm программа для компьютеров
В первую очередь надо сказать, что этот продукт уже фигурировал на ресурсах ТМ в этой статье от 2008 года. Однако по прошествии примерно 7 лет картинки потерялись и материал кажется несколько устаревшим.
Этой же публикацией я постараюсь обновить краткий мануал, раскрыть некоторые моменты, оставшиеся «за кадром», да и просто популяризовать отличное решение, которое незаслуженно страдает от недостатка внимания.
Я не случайно сказал, что проект мог бы быть известен куда более широко, вся история его развития напоминает лоскутное одеяло и кажется заслужвающей краткого изложения:
В 1996 году инженеры Cosmo Software Ричард Ли и Адам Федер решают проблему одновременной работы со станциями Irix и Windows, но руководство отказывается выделять внутреннюю разработку в отдельный продукт. Такая недальновидность оказалась симптоматичной и через некоторое время компания закрылась.
Но удачное решение продолжило свою жизнь, хотя к 2006 году оказалось в замороженном состоянии. С целью устранения багов и дальнейшего развития, в 2009 году Сорин Сбарнэ форкнул проект в Synergy+, куда позже влился Ник Болтон, который провел слияние Synergy+ с материнской веткой и в данный момент является CEO Synergy Si, занимаясь проектом уже на постоянной основе.
Что это такое?
Итак, Synergy — это программный KVM (network-based), который позволяет объединить управление двумя и более ПК в одном комплекте мышь-клавиатура. Предельно просто принцип работы отражен на заглавной картинке офицального сайта:
Пользователь просто передвигает мышь к краю экрана (либо углу, либо жмет на заданную комбинацию клавиш) и курсор чудесным образом появляется на другом мониторе, подключенном к совершенно другому ПК. Курсор можно не только перемещать, но еще и перетягивать файлы с одного ПК на другой. Круто, да?
Естественно, это требует от ПО определенного уровня отзывчивости и совместимости, поэтому для разработки используется C/C++.
Есть версии для Windows, Linux, Mac OS X, на GitHub есть даже порты для Android, Haiku и иных ОС.
Где взять?
Повторюсь, ПО готово к использованию в любой распространенной ОС, я же буду продолжать знакомство в контексте использования debian-like дистрибутива. Итак, сегодня в репозиториях Debian находится несколько устаревшая версия 1.4.16, которую не удастся использовать с актуальными на сегодняшний день 1.7.x / 1.8.x из-за смены протокола, потому воспользуемся одним из вариантов:
Для ознакомления удобней всего взять одну из ночных сборок ветки «stable». Шаг установки позволю себе пропустить, так как никаких подводных камней здесь нет.
Как пользоваться
Все достаточно просто, окно приветствия при первом запуске сразу предложит нам выбрать роль текущего ПК — сервер (с клавиатурой и мышью) или клиент (без оных):
Далее предложено будет настроить шифрование и пароль, но для домашней сети я отключил его.
И, наконец, определяем расположение ПК друг относительно друга в пространстве, например:
Все готово! Теперь остается только нажать «Start» и сервер войдет в режим ожидания подключений:
Для клиента, скорее всего, никаких настроек производить не потребуется, достаточно будет в таком же окне указать IP сервера и нажать на «Start».
А еще для настройки можно воспользоваться утилитой QuickSynergy, которая предельно проста и вполне достаточна для начальной настройки.
Хорошо, как это будет выглядеть?
Вот наиболее наглядная демонстрация использования Synergy, что мне довелось наблюдать:
… но и оно несколько неполное, ведь есть еще drag-n-drop перемещение файлов!
Надо ли платить?
Не обязательно. Продукт выпускается под GPL второй редакции, так что пользоваться им «как есть» вы можете совершенно бесплатно, а для желающих помочь разработке или получить некоторый дополнительный сервис предусмотрены следующие варианты лицензирования:
— Базовая лицензия (10$ на момент написания статьи) подразумевает поддержку со стороны разработчиков, если речь идет о каком-то сильно индивидуальном баге.
— Профессиональная лицензия (29$ на момент написания статьи) включает в себя SSL и прямую телефонную поддержку от разработчиков.
Есть еще Enterprise-версия, которая включает в себя работу разработчиков над фичами, которые запросит именно Ваша компания, она начинается для тех, кто разворачивает Synergy на парке из 100 и более машин.
Личные впечатления
— Воткнув мышь и клавиатуру в Raspberry Pi 2, работающий круглосуточно, я полностью отказался от них на основном ПК и медиа-приставке. А это 1 комплект устройств ввода вместо 3, что очень экономит место.
— Удивительная отзывчивость! Играть на ПК-клиенте в заведомо требовательные к скорости реакции игры (CS, Dota) вполне комфортно, какую-либо задержку ввода мне уловить не удалось.
— Возможность использовать на любой ОС «большой тройки». Лично мне не довелось испробовать Synergy на Mac, но связка Linux — Windows в любом порядке работала без нареканий.
И в заключение хочу добавить, что результатом запуска Synergy для «посмотреть, что это такое» стала полная реорганизация подхода к работе с ПК внутри квартиры и горячее желание помочь разработчикам, что и вылилось в эту статью. Наверное, это лучшая оценка, которую может озвучить пользователь.
С обычными KVM-переключателями, полагаю, сталкивались многие. Аббревиатура "KVM" расшифровывается как "Keyboard Video Mouse". KVM-устройство позволяет, имея только один комплект клавиатура+монитор+мышь (К.М.М.), управлять несколькими компьютерами (системными блоками). Другими словами, берем N системных блоков, подключаем их выходы от К.М.М. в KVM-устройство, а уже к самому устройству подключаем реальный монитор, клавиатуру и манипулятор-мышь. Переключаясь с помощью KVM между компьютерами, мы можем видеть происходящее на экране выбранного компьютера, а так же управлять им, как будто мы подключены к нему напрямую.
Это удобно, если для работы нам нужно несколько машин, но доступ к ним одновременно не обязателен. К тому же, сильно экономится место — мониторы, даже жидкокристаллические, занимают довольно большой объем места на столе. Да и стоят не мало. А в куче клавиатур и мышек на столе можно быстро запутаться…
Для примера, рассмотрим несколько характерных KVM-переключателей на примере устройств, выпускаемых компанией ATEN.
KVM-переключатель ATEN CS-1734 поддерживает до 4-х управляемых с одной консоли компьютеров и до 2-х USB 1.1 устройств, имеет способность к независимому (асинхронному) переключению KVM и периферийных USB портов, обладает двойным интерфейсом (поддержка PC/2 или USB клавиатур и мышей). CS-1734 работает с разрешениями видео вплоть до 2048 × 1536, DDC2B. Переключение между управляемыми компьютерами возможно кнопками на лицевой панели или с клавиатуры. Кроме того, устройство поддерживает обновление прошивки.
ATEN CN-1758 поддерживает уже до 8 управляемых с одной консоли компьютеров при непосредственном подключении и до 512 — при трехуровневом каскадном подключении. Устройство так же обладает двойным интерфейсом (USB 1.1 и PS/2), умеет переключаться между компьютерами переключателями на передней панели, через экранное меню системы OSD или горячих клавиш. Кроме того, CN-1758 поддерживает обновление своей прошивки.
Переключатель ATEN ACS-1216L обеспечивает управление работой шестнадцати компьютеров с одной консоли, а вместе с каскадно подсоединенным к нему тридцать одним дополнительным переключателем ACS-1216, переключатель ACS-1216L может контролировать до 512 компьютеров с одной встроенной консоли. Устройство имеет возможность подключения в "горячем" режиме: компьютеры могут добавляться к установке и изыматься из нее без обесточивания переключателя.
Функция автоопроса обеспечивает распознавание местоположения каждого компьютера в каскадной цепи и избавляет от необходимости произведения ручных установок DIP-переключателей, а светодиодный индикатор на передней панели указывает местоположение компьютера.
При изменении последовательности расположения станций в установке производится автоматическое переконфигурирование имен станций (компьютеров) на экранном меню.
Двухуровневая защита с помощью паролей обеспечивает допуск к наблюдению за работой компьютеров и к управлению ими только авторизованных пользователей (до четырех человек) и администратора, санкционированный допуск производится по индивидуальным параметрам каждого. Так же имеется двухуровневая регистрация выхода из системы — ручная и с контролем времени.
Эмуляция мыши и клавиатуры PS/2 позволяет производить начальную загрузку компьютеров, даже если консоль управления занята в данный момент выполнением других задач. ACS-1216L поддерживает разрешения видео вплоть до 1920×1440, а так же имеет возможность крепления в стандартную 19-дюймовую монтажную стойку с посадочной высотой 1U (1×4,44 см).
Разумеется, рынок KVM-переключателей не ограничивается компанией ATEN. Такие устройства производятся массой других компаний.
Подводя предварительный итог, можно сказать, что у KVM-переключателей есть несколько существенных преимуществ: их работоспособность не зависит от того, работает ли у вас сеть и установлена ли на компьютере операционная система. Но есть и недостатки: длина кабелей от К.М.М.-разъемов системных блоков до KVM-устройства ограничена и составляет не более нескольких метров. Возникает вопрос — а что делать, если расстояние до системных блоков больше этих несчастных десятка метров?
Тогда можно воспользоваться KVM-устройством ATEN CN-6000, о котором и пойдет речь в этой статье.
CN-6000 представляет из себя KVM переключатель, к которому можно подключаться удаленно, т.е. через любую TCP/IP сеть. Таким образом, компьютеры могут стоять в одном здании, а системный администратор, которому требуется с ними поработать — в другом… или даже в другом городе.
Устройство собранно в металлическом корпусе серебристого цвета. На его передней панели расположены три индикатора: питания, подключения к сети и наличие подключения пользователя, а так же кнопка Reset.
Разъем питания (устройство оснащено внешним блоком питания) расположен на боковой стенке корпуса.
- KVM-порт для подключения контролируемого компьютера;
- три порта (монитор, клавиатура, мышь) для подключения к контролируемому компьютеру напрямую (таким образом, ATEN-6000 превращается в обычный KVM-переключатель, у которого присутствует только один порт — для возможности, без перетыкания проводов, подключится к администрированной машины локально);
- RJ-45 порт для подключения устройства к Ethernet-сети;
- RS-232 порт для подключения "Power over the NET remote power management module"
В обычной работе ATEN-6000 задействуется первый порт (KVM), к которому можно подключить контролируемый компьютер (таким образом, мы можем удаленно управлять только одной машиной), или же, к этому порту можно подключить обычный многопортовый KVM-переключатель. Подойдет любой из тех, что рассматривались в начале статьи (компания ATEN рекомендует использовать родное оборудование), но во время тестирования у нас был лишь 8ми портовый KVM D-Link DKVM-8E (он поддерживает переключение между своими портами не только кнопкой на корпусе, но и напрямую с клавиатуры) и этот KVM от D-Link замечательно работал. Т.е. к ATEN-6000 посредством дополнительного KVM-переключателя можно подключить более 8ми компьютеров и управлять ими попеременно.
Под "Power over the NET remote power management module" скрывается устройство с кодовым индексом CP0108, которое на момент выхода CN-6000 с конвейера еще было только анонсировано как опытный заводской образец, и не поступило в продажу. Это устройство предназначено для удаленного физического включения-выключения рабочих станций и серверов по Сети.
В комплект CN-6000 входит блок питания к нему, KVM-кабель, металлическая планка (rack mount kit) для возможности крепления устройства на стойку, печатная документация на английском и компакт-диск с pdf-версией документации и утилитами (о них позже).
Схемотехника
Внутри корпуса расположена единственная системная плата, плотно "заселенная" микросхемами с обоих сторон.
схемотехника AU1000
Устройство собрано на процессоре AMD Alchemy AU1000, базирующемся на архитектуре MIPS32. Это 32-битный процессор с частотой 500Mhz имеет 16Kb кеш инструкций и 16Kb кеш данных. В процессор встроено два 10/100Mbit Ethernet-контроллера, контроллер USB (device & host), а также 100/125Mhz SDRAM и SRAM/Flash EPROM контроллеры доступа к памяти. Процессор, работая на частоте 500Mhz потребляет всего 900mW.
блок-схема AD9888
Видеозахват осуществляет микросхема AD9888 от Analog Devices. Он представляет собой 8ми битный аналоговый интерфейс со скоростью кодирования 204Msps и поддерживает захват видеосигнала вплоть до разрешений 1600×1200×75Hz.
А на обратной стороне печатной платы расположена микросхема XC2S200E, которая является матрицей программируемой логики из семейства Spartan-IIE компании Xilinx.
Спецификации устройства
CN-6000 поддерживает разделение полномочий между пользователями и позволяет завести до 64 административных или пользовательских аккаунтов, из них одновременно работать с устройством могут до 16 аккаунтов. Устройство имеет встроенный WEB-интерфейс администрирования, а его небольшие размеры позволяют разместить его на столе или смонтировать (с помощью спец.планки, идущей в комплекте) его на боковой ферме стойки (0U rack mountable). CN-6000 поддерживает обновление прошивки через Ethernet-соединение (с веб-интерфейса или родной утилитой). Максимальное разрешение видео, которое поддерживает устройство, составляет 1600x1200 точек.
Сводная таблица спецификаций:
Требование к оборудованию (удаленный клиент) | Pentium III 1Ghz | ||
Интерфейсы | Локальная консоль | Клавиатура | 1 × Mini-DIN-6 F(Purple) |
Видео | 1 × HDB-15 F(Blue) | ||
Мышь | 1 × HDB-15 F(green) | ||
Системный (KVM) | 1 × SPHD-15 F(Yellow) | ||
LAN-порт | 1 × RJ-45(F) | ||
Power on the net (reserved) | 1 × DB9(M) | ||
Интерфейс питания | 1 | ||
Кнопки/переключатели | KVM Reset | 1 × полускрытый,спереди | |
Индикаторы | питания | 1 × orange | |
подключение удаленного пользователя | 1 × green | ||
LAN 10/100 Mbps | 1 × green / orange | ||
Поддерживаемые протоколы | 10baseT Ethernet and 100baseTX Fast Ethernet. TCP/IP | ||
Разрешения видео | Up to 1600×1200 60Hz | ||
Корпус | металлический | ||
Размеры (длина × ширина × высота) | 200 × 80 × 25mm |
Переходим к тестам.
- CN6000 Client — программа-клиент под Windows, с помощью которой можно подключится к удаленному компьютеру
- аналогичная программа-клиент, написанная на Java (в формате jar)
- CN6000 Admin Tool — менеджер конфигурирования устройства (под Windows)
- лог-сервер — программа, которую можно настроить на получение и хранение лог файлов с CN-6000
Кроме того, в KVM-переключатель встроен WEB-сервер, поэтому к устройству можно обратиться через WEB-браузер. Но к веб-интерфейсу вернемся чуть позже, сначала рассмотрим отдельные утилиты.
Конфигурирование CN-6000 через утилиту Admin Tool.
Программа предназначена для конфигурирования устройства, установки паролей доступа, безопасности и т.д.
При ее запуске не обошлось без курьеза:
При первом запуске всех утилит с прилагаемого диска, требуется ввести серийный номер. В документации (даже последней версии, что лежит на сайте производителя) сказано, что серийник напечатан в нижней части корпуса CN-6000. И там действительно напечатан какой-то серийный номер, только он намного короче, чем требуется программам. В общем, немного помучавшись, вводя найденный серийник так и эдак, прибавляя к нему нули или пробелы и не достигнув ничего более, чем окошка "Invalid Serial Number", я уже хотел было закончить в тот день тестирование устройства. Достав компакт диск из CD-ROM-а (его я вставил в CD-привод в первую очередь — надо же было инсталлировать ПО), я обнаружил странную наклейку на диске — это и оказался заветный серийник.
Конечно, теоретически, человек может обратить внимание на то, что написано или наклеено на компакт-диске, когда вставляет его в дисковод. Но многие ли сразу обращают на это внимание? :) И, спрашивается, зачем было писать в документации заведомо ложную информацию? Повторюсь — на сайте лежит более новая версия документации и там эта "опечатка" не исправлена. Отмечу, что это не последняя неточность, которая проскакивает в документации, поэтому иногда приходится действовать согласно поговорке "не верь глазам своим".
Утилита администрирования CN-6000 полезна тем, что позволяет найти устройство в сети, даже если его IP-адрес не принадлежит той подсети, в которой мы находимся, достаточно лишь, что бы мы (компьютер, с которого мы пытаемся получить доступ к CN-6000) находились в том же сегменте локальной сети, что и KVM-переключатель.
После ввода логина пользователя и пароля мы попадаем в меню конфигурирования устройства:
Компания ATEN неплохо подошла к вопросу безопасности устройства. При первом входе в конфигурацию устройства, нас предупреждают о том, что стандартный логин и пароль неплохо бы и поменять…
В разделе Network настраивается IP адресация устройства, задаются порты для удаленного доступа к управляемым посредством CN-6000 компьютерам. А так же тут можно указать MAC-адрес машины, на котором расположена программа "Log Server", которая хранит лог файлы (события), отсылаемые с KVM-переключателя (если ее не задать, логи будут хранится на самом KVM и посмотреть их можно будет с веб-интерфейса). Этой машиной (для Log-сервера) может являться любой компьютер, на котором стоит Windows и запущена обсуждаемая программа. Проблема лишь в том, что компьютер должен находится в том же сетевом сегменте (грубо говоря , подключен к тому же коммутатору), что и сам KVM CN-6000, поэтому полезность данной "фичи" вызывает сомнение.
В закладке Security настраиваются фильтры (по MAC и/или IP адресам) доступа к удаленному экрану администрируемых компьютеров, а так же фильтр на администрирование самого CN-6000.
В следующей закладке задаются имена и пароли пользователей, а так же их права. Что примечательно, можно ограничить логины на конфигурирование CN-6000 и использования JAVA-клиента. Минимальная длина пароля, которую принимает утилита конфигурации, равен восьми символам. Жаль конечно, что пароль не проверяется на "простоту", но даже проверка длины пароля говорит о том, что безопасности ATEN уделяет внимание.
Последняя закладка позволяет обновить прошивку устройства, включить возможность одновременного коннекта к удаленному компьютеру нескольким людям (правда мышка и клавиатура все равно одна, с точки зрения управляемого компьютера, поэтому один управляет, остальные — смотрят… или мешают друг другу, перетягивая мышь в разные стороны). Тут же настраивается реакция на неправильный процесс аутентификации, а так же включение различных режимов "скрытия" CN-6000 (отсутствие реации на ping и запрет на показ себя при автоматическом поиске устройств в локальной сети через клиентскую утилиту или утилиту администрирования).
В этой же закладке есть еще один пункт — Reset on Exit. Я бы предположил, что это сброс настроек на умолчательные, но в данном случае это подразумевает перезагрузку устройства при выходе из утилиты конфигурирования. В противном случае (если его не перезагрузить), новые настройки хоть и запомнятся, но применяться не будут (до перезагрузки).
На этом рассмотрение утилиты конфигурирование можно считать законченным (еще один аспект будет рассмотрен в разделе про Java-client).
Переходим к веб-интерфейсу.
Конфигурирование через WEB-интерфейс
Для того, что бы попасть в веб-интерфейс устройства, достаточно в любом браузере набрать IP-адрес, который установлен на CN-6000.
После ввода логина и пароля, становятся активными (на них можно нажать) иконки слева и вверху веб-интерфейса.
Верхние иконки открывают разделы, связанные с конфигурированием CN-6000. По большей части, все опции там повторяют опции интерфейса Windows-утилиты Admin Tool, но есть некоторые отличия. К примеру, в данном окне (конфигурирование сетевых адресов) мы можем задать только IP-адрес устройства, но не можем указать маску подсети и шлюз. К тому же, задание IP-адреса работает как то криво — мне так и не удалось сменить IP-адрес устройства с веб-интерфейса (с помощью утилиты Admin Tools он менялся без проблем).
Вот что можно наблюдать в утилите Admin Tool при попытке смены адреса через веб-интерфейс с 10.0.0.9 на 192.168.0.1. Маска подсети почему то сменилась со стандартной 255.255.255.0 на 10.0.0.9, а устройство (после перезагрузки) секунд 5 отвечает по адресу 192.168.0.1, а потом начинает отвечать по 10.0.0.9 (про 192.168.0.1 забывает напрочь). Возможно, это баг текущей версии прошивки (1.5.141), но эта версия, на момент тестирования, являлось самой новой из тех, что можно было найти на веб-сайте компании.
Больше багов, связанных с веб-интерфейсом, в процессе тестирования обнаружено не было.
Раздел Security повторяет аналогичный раздел в утилите Admin Tool.
Аналогичная ситуация с разделом User Manager …
… и разделом Customization.
Иконка Log, расположенная в левой части веб-интерфейса, позволяет посмотреть события, происходившие при работе устройства. В данном случае скриншот отражает логи, которые появились в момент тестирования устройства программой Nessus.
Как уже было сказано выше, логи можно сбрасывать на внешний лог-сервер (но с определенными ограничениями по расположению оного).
Как и было обещано в предыдущей статье, сегодня мы поговорим о базовой настройке хост-машины для работы KVM.
Для начала необходимо узнать, есть ли у нашего процессора необходимые инструкции для поддержки виртуализации.
$ egrep '(vmx|svm)' /proc/cpuinfo
Если есть — это замечательно.
Подготовка операционной системы
Установку Debian Squeeze я, пожалуй, описывать не буду: если уж вы добрались до KVM, то установка системы — плёвое дело.
Устанавливать нужно будет 64-битную OS, поскольку необходимые пакеты есть только для этой архитектуры.
В Debian Squeeze «свежесть» пакетов с KVM и сопутствующих программами нас совсем не устраивает, поскольку очень много всяких фиксов и фич попросту пройдут мимо нас. Поэтому мы добавим репозитории Debian Sid и experimental:
Указываем, что у нас базовый дистрибутив stable, а не то, что подумала система:
Оттуда нам понадобятся пакеты:
Из стабильного репозитория нам будут нужны:
На вашем рабочем десктопе вы можете поставить virt-manager (GUI-утилита), который позволит удобно создавать нужные конфигурации виртуальных машин.
Ядро чем «свежее» — тем лучше (в известных пределах конечно: из git, например, я бы ставить не рекомендовал). Хорошим вариантом будет 2.6.39, вышедшее недавно.
Следует отметить, что в стандартном ядре отсутствует модуль для поддержки записи в UFS2, и если планируется запускать гостевую FreeBSD, потребуется собрать ядро с этим модулем. Ну и, конечно, в Debian-овском ядре отсутствуют свежие версии cgroups.
Что должно быть включено в ядре для использования максимального объема требуемого функционала:
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_NS=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
CONFIG_CGROUP_SCHED=y
CONFIG_BLK_CGROUP=y
CONFIG_NET_CLS_CGROUP=y
Затем идём по ссылке и устанавливаем все deb-пакеты оттуда, копируем insmod.static в /sbin/insmod.static (это нужно, поскольку в работе libguestfs использует статически скомпилированную версию insmod, а в Debian и Ubuntu такого файла просто нет, однако в последней версиии febootstrap эту проблему устранили, insmod.static более не нужно загружать на сервер). libguestfs позволяет нам получать доступ к диску VDS через API libguestfs(C, Perl, Python, PHP) или через утилиту guestfish.
Первый блин
Сейчас мы установили все, необходимое для запуска VDS, их доступа в сеть и установки самой виртуальной машины.
Давайте попробуем что-нибудь поставить, например, тот же самый Debian. Пока без настройки сети, просто, по умолчанию.
Скачиваем установщик netinstall:
Редактируем /etc/libvirt/qemu.conf, чтобы виртуальные машины работали у нас от непривилегированного пользователя:
user = "username"
group = "libvirt"
Поскольку у нас будут использоваться tun-устройства, нужно выставить capability CAP_NET_ADMIN, сделать это можно как для отдельного исполняемого файла, так и для пользователя в целом, или настроить чтобы libvirt не сбрасывал нужные права для qemu/kvm.
Выставляем для отдельного файла:
sudo setcap cap_net_admin=ei /usr/bin/kvm
Или выставляем для пользователя в целом в файле /etc/security/capability.conf:
Или выставляем соответствующую настройку в /etc/libvirt/qemu.conf:
Добавим пользователя в группу libvirt и kvm:
Запустим установку виртуальной машины:
$ virt-install --connect qemu:///system -n debian_guest -r 512 --arch=i686 --vcpus=1 --os-type=linux --os-variant=debiansqueeze --disk debian-6.0.1a-i386-netinst.iso,device=cdrom --disk debian_guest.img,bus=virtio,size=2,sparse=false,format=raw --network=default,model=virtio --hvm --accelerate --vnc
Подробно разберём параметры, которые мы указали:
- --connect qemu:///system URL, по которому мы подключаемся к KVM. Подключаться можно через ssh.
- -n debian_guest Имя гостевой системы.
- -r 512 Выделяемый объём оперативной памяти в мегабайтах.
- --arch=i686 Архитектура гостевой операционной системы.
- --vcpus=1 Количество виртуальных процессоров, доступных гостю.
- --os-type=linux --os-variant=debianlenny Специфичные для данной операционной системы параметры.
- --disk debian-6.0.1a-i386-netinst.iso,device=cdrom Загружаемся с диска, образ которого указали.
- --disk debian_guest.img,bus=virtio,size=2,sparse=false,format=raw Создаём образ системы размером 2Гб, который сразу помещаем на диск (можно создать образ нулевого размера, но тогда возможна фрагментация, что получается несколько медленнее). Формат простой, можно сделать с dd файл. Драйвер диска virtio, использовать лучше virtio, чем ide: производительность их отличается если не на порядок, то в разы.
- --network=default,model=virtio Сетевые настройки по умолчанию. В этом случае libvirt создаст мост, сделает dhcp сервер и выдаст через него адрес для доступа виртуальной машины.
- --hvm Полная виртуализация — то есть, можно использовать собственные ядра.
- --accelerate Работа через /dev/kvm.
- --vnc Запускаем VNC, чтобы подключаться к текстовой консоли.
Утилиты настройки и управления
Для управления установкой и для клонирования виртуальных машин у нас есть две замечательные утилиты — графическая и консольная: virt-manager и virsh, соответственно. Конечно, консольная версия намного богаче по возможностям, но ничто не сравнится с видом графиков, от которых сердце сисадмина млеет.
Думаю с virt-manager вы и сами разберётесь, давайте попробуем покопаться в консольных внутренностях virsh. Вот несколько команд которые стоит выполнить и посмотреть что из этого получится:
$ virsh --connect qemu:///system list --all
$ virsh --connect qemu:///system dominfo debian_guest
$ virsh --connect qemu:///system stop debian_guest
Чтобы тысячу раз не писать --connect qemu:///system, добавьте:
export VIRSH_DEFAULT_CONNECT_URI= qemu:///system
В .bashrc или просто выполните эту команду в терминале.
Подготовка сети
В официальной документации предлагается использовать несколько вариантов организации сети: NAT, bridged и прямое использование сетевых карт. И, к сожалению, в различных примерах, которые я нашел в сети и на официальном сайте, рассматриваются только NAT и bridged сети.
В моей конфигурации используются TUN/TAP устройства, на которые с eth0 маршрутизируется трафик. Коротко опишу, почему выбран именно такой способ маршрутизации:
NAT нам не подходит, поскольку каждая VDS должна быть доступна из сети напрямую.
Схема с мостами не очень надёжная, поскольку теоретически есть возможность «захвата» IP адреса чужой виртуальной машины.
Итак:
Данный участок конфигурации нужно указывать непосредственно в конфигурационном файле гостя, расположенного по адресу /etc/libvirt/qemu/debian_guest.xml. Редактировать лучше всего через:
$ virsh edit debian_guest
Тогда конфигурация обновится на лету, при условии, что машина не запущена. В противном случае нужно будет подождать, пока она остановится, и запустить ее снова.
Создадим необходимое нам виртуальное устройство.
Для начала нам нужно дать нашему пользователю возможность беспарольного обращения к системным командам. Для этого добавим в sudoers:
Cmnd_Alias QEMU = /sbin/ifconfig, /sbin/modprobe, /usr/sbin/brctl, /usr/sbin/tunctl, /sbin/sysctl, /bin/ip, /usr/bin/cgcreate, /usr/bin/cgdelete, /sbin/tc
username ALL=(ALL:ALL) NOPASSWD: QEMU
Включим возможность форвардинга и проксирования arp-запросов:
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo sysctl net.ipv4.conf.all.proxy_arp=1
Также можно добавить эти параметры в /etc/sysctl.conf и применить их:
Создадим виртуальную сетевую карту и поднимем устройство:
sudo tunctl -b -u username -t debian_guest
sudo ifconfig debian_guest 0.0.0.0 up
Создадим маршрут на нужное нам устройство с нужного IP-адреса:
sudo ip route add 10.10.10.100 dev debian_guest
Теперь можно запустить VDS:
$ virsh start debian_guest
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR=="xx:xx:xx:xx:xx:xx", ATTR=="0x0", ATTR=="1", KERNEL=="eth*", NAME="eth1"
Нужно удалить этот файл и перезагрузить VDS — после этого сетевая карта определится корректно.
Пропишем новые сетевые настройки в гостевой системе:
10.10.10.10 — это IP-адрес хост-системы. Теперь мы сможем попинговать другие машины.
Добавим DNS-серверы в /etc/resolv.conf, и будет совсем замечательно:
К слову, замечу, что оказалось очень удобно называть сетевые устройства, принадлежащие VDS, также, как и сами VDS — отпадает необходимость искать, кому принадлежит устройство tap0 или vnet0, или как там ещё можно их обозвать.
Если понадобится выдать виртуальной машине ещё один IP-адрес, достаточно будет просто на хост-машине прописать ещё один маршрут:
А в гостевой системе создать алиас для сетевого устройства:
В следующей части
В следующей статье я расскажу о том, как создать образ VDS, что вообще меняется от системы к системе, и как эти параметры можно удобно менять.
Традиционные переключатели KVM (клавиатура, монитор, мышка) делают возможным подключение KVM консоли к целой группе компьютеров, избегая таким образом необходимости присоединения клавиатуры, монитора и мышки к каждому отдельно взятому компьютеру, что ведет к экономии места, стоимости и энергии. KVM переключатели не требуют загрузки никакого программного обеспечения на компьютер и, следовательно, предлагают простое и разумное управление им, которое продолжает работать даже при его выходе из строя. Одним из наиболее серьезных недостатков технологии такого типа является то, что KVM консоль должна иметь прямое кабельное присоединение к КВМ переключателю, что ограничивает площадь применения несколькими сотнями метров. Программное обеспечение удаленного доступа позволяет контролировать компьютеры в любой точке мира удаленным или сетевым способом, через IP-соединение. Существует много программ подобного типа, но все они основываются на одних и тех же принципах действия.
Продукты KVM-over-IP являются результатом объединения преимуществ программ удаленного доступа с достоинствами КВМ-технологии. Как и KVM переключатели, продукты KVM-over-IP не требуют загрузки никакого дополнительного программного обеспечения на головной компьютер, а вместо этого напрямую связывают с клавиатурой, монитором и мышкой коннекторы головного компьютера или КВМ-переключателя. Схематика приспособления КVM-over-IP оцифровывает входящий видео-сигнал и преобразует его в цифровую информацию, которая передается программе просмотра на удаленном компьютера по локальной сети, через VPN или общедоступный Интернет.
KVM устройства ADDERLink – это инновационный KVM-over-IP продукт, разработанный в ответ на потребности предприятий. Остается высокой потребность в обеспечении безопасности , приведенное далее техническое описание объясняет архитектуру обеспечения безопасности продукта.KVM устройства серии ADDERLink IP можно разделить на 2 категории:
1) KVM Over IP удлинители:
-
(KVM удлинитель по протоколу IP, удлиняющий интерфейсы VGA, USB1.1, PS/2, RS232 и стерео аудио, использует 1 витую пару для передачи) (KVM удлинитель по протоколу IP, удлиняющий интерфейсы DVI-I, USB1.1, PS/2, RS232 и стерео аудио, использует 1 витую пару для передачи) (KVM IP удлинитель по IP, передающий интерфейсы VGA, PS/2, USB. Шифрование 512-2048 bits (High Security), поддержка разрешения до 1900x1200@60Hz, Virtual Media, Java) (KVM IP удлинитель по IP, передающий интерфейсы VGA, PS/2, USB с локальной консолью. Шифрование 512-2048 bits (High Security), поддержка разрешения до 1900x1200@60Hz, Virtual Media, Java) (KVM IP удлинитель по IP, передающий интерфейсы DVI, PS/2, USB с локальной консолью. Шифрование 512-2048 bits (High Security), поддержка разрешения до 1900x1200@60Hz, Virtual Media, Java)
2) KVM Over IP переключатели
-
(8 портовый KVM переключатель по CAT5, 1 локальный и 1 удаленный пользователь по IP, c возможностью крепления в серверную стойку) (16 портовый KVM переключатель по CAT5, 1 локальный и 1 удаленный по IP, c возможностью крепления в серверную стойку) (16 портовый KVM переключатель по CAT5, 1 локальный, 2 удаленных пользователя по CAT5 и 1 пользователя по IP, c возможностью крепления в серверную стойку) (24 портовый KVM переключатель по CAT5, 1 локальный, 2 удаленных пользователя по CAT5 и 1 пользователя по IP, c возможностью крепления в серверную стойку) (16 портовый KVM переключатель по CAT5 с возможностью управления по IP 4 независымым пользователям)
Описание продукта.
Система KVM OVER IP ADDERLink – это обособленный узел, который легко конфигурируется для локальных, внутренних или удаленных IP соединений с хостом назначения или КВМ-переключателем. Используя локальное соединение через ADDERLink IP, пользователи могут иметь как локальный доступ через КВМ-консоль, так и удаленный IP доступ к их серверам. Эта смесь из локального и удаленного доступа крайне привлекательна для системных администраторов, так как позволяет им иметь прямой доступ к компьютерам в серверном помещении, а также обеспечивает доступ из офиса или другого удаленного месторасположения. Способность к одновременной поддержке IP и телефонных соединений через модем предоставляет системным администраторам удобство передачи данных через сеть и безопасность надежного дополнительного канала в случае, если Интернет связь прерывается.
KVM OVER IP ADDERLink обеспечивает инструментами расширенный VNC-сервер, встроенный в аппаратные средства компьютера. VNC – это стандарт де-факто, принятый во всем мире для межплатформного программного обеспечения удаленного контроля и представляет из себя естественный выбор для KVM- over- IP продуктов. В настоящее время VNC установлен и используется миллионами пользователей в домашних условиях, правительственных учреждениях, школах, университетских городках и в самых крупных компаниях. Расширенный VNC-клиент является составной частью продукта, и может также быть установлен либо запускаться с действующего VNC-сайта [1]. Вдобавок, Java-клиент может работать через соединение с веб-браузером, избегая таким образом необходимости устанавливать программный продукт на удаленный терминал
Потребность в безопасности.
Традиционные KVM переключатели по своей природе имеют высокую степень защищенности, так как им требуется физический доступ к оборудованию. Это может быть проверено общепринятым способом с помощью системы замков и ключей. Для пользователей, уже имеющих физический доступ, для обеспечения следующего уровня контроля безопасного доступа к отдельным пользователям и группам пользователей достаточно простой системы паролей, полностью локальной для КВМ – переключателя.
Контроль доступа является весьма сложным и вызывающим беспокойство вопросом, когда речь идет о продуктах, соединенных с сетью любой конфигурации – от LAN, WAN до VPN – и, что очень важно - с Интернетом. В случае, когда для удаленного доступа применяется KVM- over- IP для удаленного доступа к привилегированной консоли сервера, такой как файловый сервер, нарушение защиты потенциально может быть крайне разрушительно. В связи с этим, в высшей степени важна уверенность в безопасности KVM- over- IP. Но вопросы безопасности часто откладываются на потом и «за уши привязываются» в конце процесса разработки продукта. На самом деле, решение этих вопросов существенно влияет на дизайн и разработку системы в целом, и их запоздалое рассмотрение ведет к ошибкам, черным ходам и некорректности установки и конфигурирования. При создании ADDERLink IP вопросы безопасности рассматривались с самого начала, и еще до разработки и сборки продукта была сформирована полностью продуманная и официально принятая архитектура защиты. Следуя советам и заключениям экспертов по безопасности (академические круги Кэмбриджа), ADDERLink IP соответствует всем требованиям к устройствам, использующих Интернет-соединения.
А теперь перейдем к обсуждению ряда мер по безопасности, включенных в ADDERLink IP продукт, которые все вместе позволяют ему быть использованным в самых неблагоприятных условиях с полной уверенностью в безопасности.
Контроль доступа.
Для обеспечения максимальной безопасности важно выбирать надежные пароли, которые нелегко подобрать. При установлении паролей программный блок протестирует криптографическую надежность пароля и предупредит, если сочтет выбранный пароль слабым. Такое же предупреждение будет выведено на экран и в случае, если поле ввода пароля останется пустым. Узел выполняет временную блокировку учетной записи, если недавно имели место неудачные повторяющиеся попытки входа в систему. Эта схема эффективно предотвращает использование атак по методу грубой силы для вскрытия пароля.
Продукты ADDERLink IP хранит внутренний журнал с метками даты и времени имевшейся активности. Это позволяет администратору получать информацию о включении питания, перезагрузке и обновлении программно-аппаратных узлов. Активностью являются удачные или неудачные попытки входа, информация включает в себя имя учетной записи и тип доступа (локальный, через модем или удаленный). В случае удаленного доступа высвечивается IPадрес удаленного компьютера. Вдобавок к информации по штатному режиму работы подобные журналы регистрации предлагают ценную диагностику для выявления и анализа подозрительной активности.
Дальнейшая безопасность обеспечивается блокировкой экрана, которая наступает автоматически после определенного времени бездействия клавиатуры и мышки, это оберегает экран, оставленный без внимания, от эксплуатации с нарушением установленных режимов.
Способ локального доступа.
Метод доступа по телефонной линии.
Осуществляя соединение через внешний модем, ADDERLink IP предлагает устройство удаленного доступа через стандартную телефонную линию. Доступ через телефон предоставляет изначально заложенный первый уровень безопасности, так как взломщику потребуется знать номер телефона, к которому подсоединено устройство, чтобы осуществить попытку подключения. Общепринято, что в общественную телефонную сеть, как и в соединение через телефон, трудно внедриться или перехватить через нее информацию. Программа использует сервер РРР [2], что позволяет осуществить IP соединение через стандартную телефонную сетевую конфигурацию с удаленного хоста. Расширенный VNC -терминал может быть запущен через IP соединение, как описано ниже, включая заложенный в него полный спектр мер по шифрованию и аутентификации.
Метод соединения через IP сеть.
Полные возможности продукта KVM OVER IP ADDERLink становятся очевидны, когда он связан с IP сетью. Поскольку IP сети едины и хост назначения можно контролировать из любой точки мира, для удобства многие пользователи ожидают возможности осуществлять доступ KVM-via- IP продукта через Интернет соединение. Что касается безопасности, это требует особого уровня предосторожности.
Другие методы.
Для эффективного использования KVM-over-IP продукта, от владельца каждого узла требуется получение сертификата и конфигурации этого узла в соответствии с сертификатом. Это ведет к серьезным административным и финансовым издержкам, так как обычная стоимость сертификата составляет более $100 в год. Больше того, сертификаты завязаны на IP адрес или DNS имя, которые остаются неизменными в течение всего срока действия сертификата. В результате, приобретение подписанных сертификатов не оправдано в практических инсталляциях.
Подход ADDERLink IP.
По всем вопросам, связанным с подбором и приобретением KVM оборудования, пожалуйста, обращайтесь в компанию "Видео Медиа Групп"
ICQ: 452-817-443
Skype: zaky-85
Время работы: Понедельник - Пятница, с 9.00 до 19.00
Адрес:
115114, г. Москва, Шлюзовая наб., д.6, стр. 4, метро Павелецкая (радиальная).
Интерес пользователей к виртуализации в последнее время стал пропадать. С одной стороны, есть понятные десктопные решения под любую ось. С другой — стоимость VDS не так уж и высока, а сервер доступен всем, можно демонстрировать разработки с любой точки. Но если с Linux все более-менее ясно и выбор есть, то Windows-хостинги предлагают далеко не все, их стоимость высока (примерно в два раза дороже) и брать их, когда такая система нужна редко, не имеет смысла. Вот здесь нас может выручить знание KVM.
Плюсы и минусы KVM
Технология предоставляет полную виртуализацию на аппаратном уровне. Поэтому, в отличие от популярных LXC и OpenVZ, KVM может запускать в принципе любую ОС, не только Linux (Windows, FreeBSD. ), и Linux, отличающийся от конфигурации основной системы. Если нужна виртуальная машина, не совпадающая параметрами с основным хостом, то выбора особо нет. Включение в ядро было большим прорывом. Теперь поддержка виртуализации в ОС не требовала установки гипервизора (как Xen) и могла быть реализована в любом дистрибутиве, включая настольный. Из коробки доступен VNC, дающий возможность управлять виртуальным сервером с момента загрузки (то есть когда еще не работает SSH), как будто из локальной консоли. Проект активно сотрудничает с другим подобным решением QEMU, задействованы некоторые утилиты и общий формат файла образа Qcow2.
Минусы, конечно, тоже есть. Куда же без них. Главный — процессор должен иметь аппаратную поддержку виртуализации Intel VT-x или AMD-V. Проверить их наличие можно вручную или при помощи утилит:
Также о поддержке технологий говорят флаги в CPU:
В зависимости от производителя процессора будет загружен свой модуль ядра (kvm-amd.ko либо kvm-intel.ko).
Проверяем поддержку KVM
Другие статьи в выпуске:
Накладные расходы чуть выше, чем при использовании LXC и OpenVZ. Причин тому две.
KVM-контейнер запускает свою копию ядра и окружения, и под них требуется память. LXC и OpenVZ же используют ядро и системные вызовы сервера. Поэтому при одинаковых характеристиках на хостинге у них совершенно разные возможности. При создании KVM-контейнера под него сразу резервируются все ресурсы согласно установкам. Это хорошо видно в htop. Стоит добавить ОЗУ в KVM, как сразу на это значение увеличивается объем занятой памяти. Выйти за лимиты VM не может, они устанавливаются жестко. В этом даже и плюс, можно сразу рассчитать будущую нагрузку на своем сервере, а ресурсы никто не позаимствует.
И VM работают относительно стабильно в плане производительности. В то время как при OpenVZ-виртуализации ресурсы выделяются динамически по мере надобности и каждый виртуальный сервер использует ровно столько ресурсов, сколько ему сейчас нужно. Незанятые ресурсы остаются свободными. Поэтому он и популярен у хостеров, ведь можно всегда напихать чуть больше VM, и именно поэтому виртуальные машины, созданные с запасом, могут работать то быстрее, то медленнее. Иногда оптимизация VM под OpenVZ — настоящая мука: непонятно, почему сервер стал работать по-другому — из-за новых настроек или внешних факторов.
Администрировать KVM сложнее, так как прозрачный доступ к файлам, процессам, консолям и сети контейнеров отсутствует, это приходится настраивать самостоятельно. Перестройка параметров VM в KVM (CPU, RAM, HDD) не очень удобна и требует дополнительных действий, включающих перезагрузку ОС. В том же OpenVZ это можно сделать на лету. Сам проект не предлагает удобных графических инструментов для управления виртуальными машинами, только утилиту virsh, реализующую все необходимые функции. Но, поискав в Сети, можно найти несколько интерфейсов, хотя для индивидуального использования одной или нескольких VM их обычно ставить нет смысла. К тому же много open source проектов, активно развивавшихся во время большого интереса к виртуальным машинам, сегодня стали коммерческими, хотя некоторые по-прежнему предлагают обрезанную free-версию. В репозитории пакетов есть virt-manager, предлагающий графический интерфейс для управления KVM и другими типами VM, поддерживающими virtlib, как установленных локально, так и удаленно через SSH.
В качестве веб-интерфейсов можно порекомендовать старенький, но еще рабочий WebVirtMgr, бесплатный UVMM UCS Core Edition, openQRM Free Community Edition и другие. Кроме того, существуют специальные дистрибутивы вроде Proxmox VE, в котором все необходимые инструменты для создания и управления VM на базе KVM и LXC уже есть (правда, он подходит для bare metal установки, а не на удаленный VDS).
Установка KVM
Плюсы KVM в том, что она работает из коробки и что процессоры серверов хостеров однозначно поддерживают эту технологию. Поэтому вполне реально при наличии свободных ресурсов подгрузить в VDS еще одну виртуальную машину (или несколько). Конечно, под фактически двойной виртуализацией они будут работать не так быстро, как на железе, но если большая нагрузка не планируется, то этого вполне должно хватить. Более того, у некоторых хостингов есть rescue-инструменты, дающие возможность подмонтировать другую файловую систему (в hetzner это rescue/LARA ), подменить имеющуюся и даже установить свою ОС. При некотором умении можно по тарифам Linux абсолютно легально использовать Windows.
Наша задача — установить под KVM Win и настроить доступ. KVM работает со всеми версиями Win, включая и последние. Но Win капризней к ресурсам, поэтому тариф следует подбирать с учетом минимальных системных требований и накладных расходов на ОС и виртуализацию. На Digital Ocean, например, Win2012R2 при 4 Гбайт ОЗУ сильно тормозит, а если выделить 6+ Гбайт, то уже вполне нормальный отклик. В различных дистрибутивах и даже версиях процесс немного отличается, но в основном это касается названий пакетов. Мы будем использовать Ubuntu 16.06. Ставим пакеты.
Проверяем поддержку KVM.
Если такой ответ получен, значит, все нормально. Список поддерживаемых ОС и их правильное название можно получить при помощи osinfo-query .
Список поддерживаемых ОС и их названия
Конфигурационные файлы libvirt находятся в каталоге /etc/libvirt , журналы, в которых нужно искать ответы на проблемы, размещаются в /var/log/libvirt . В /var/lib/libvirt несколько каталогов: в boot система, если не указан путь, будет искать образ для установки гостевой системы, а в images размещать жесткие диски.
Управление виртуальными машинами из консоли производится при помощи утилиты virsh . Параметров много, их все можно узнать, введя:
Вначале просто стоит пройтись и познакомиться, чтобы понять суть. Список ОС пока пуст:
Проверяем, что сеть настроена. По умолчанию используется default (подробнее дальше по тексту).
Если в ответ получаем, что невозможно подключиться, проверяем права доступа на сокет и каталоги выше (в основном в этом проблема).
И перезагружаем модули:
Далее два варианта. Можно самостоятельно установить операционную систему или взять уже готовый образ с установленной ОС. Первый шаг в общем отличается тем, что нужно подготовить диск, запустить VM и установить ОС стандартным способом. Создадим диск размером 25 Гбайт.
Если в будущем нужно изменить размер диска, то используется команда resize:
Некоторые параметры очевидны, поэтому кратко:
- name — имя, по которому можно обращаться к VM;
- ram и vcpus — количество памяти и vCPU, выделяемых VM;
- disk — имя диска, формат и драйвер;
- cdrom — виртуальный CD-ROM, здесь указан ISO-образ, с которого будет загружаться система;
- network — сетевое подключение, тип и модель (можно использовать virtio, но бывают проблемы, потом можно сменить);
- os-type и os-variant — тип ОС.
Параметр --vnc имеет смысл только на сервере без GUI, при наличии интерфейса KVM сразу откроет окно через SDL. Также можно подключиться локально при помощи virsh:
Удаленно также можно зайти с использованием любого VNC-клиента, при необходимости используя port forwarding (см. ниже).
Коннектимся к Windows, запущенной под KVM
После установки ОС можно приступать к работе. Второй вариант позволяет использовать уже готовый диск с установленной ОС. Его можно скопировать с готовой системы, сконвертировать при помощи qemu-img convert, которая поддерживает форматы дисков практически всех систем виртуализации. Или взять с сайта проекта Cloudbase.
Запуск почти не отличается от предыдущего, убираем, если не нужен, cdrom и добавляем --import .
В дальнейшем можно управлять поведением VM при помощи virsh start|reboot|shutdown|suspend|resume|destroy|undefine|edit|autostart|info и так далее.
Настройки VM хранятся в отдельных XML-файлах в каталоге /etc/libvirt/qemu , имя соответствует параметру --name . Можно их просмотреть, отредактировать при необходимости, скопировать при помощи virsh. Например, нужно изменить настройки сетевого адаптера.
Скопируем настройки в файл.
Теперь в любом текстовом редакторе правим параметры второй машины, указываем новый виртуальный диск и можем запускать второй экземпляр. Для клонирования есть и другой вариант.
Настройки виртуальной машины
Сеть в KVM
Настройка сети — самый важный момент при работе с KVM. По умолчанию используется Usermode или default, когда базовая система работает как маршрутизатор между внешней и гостевой сетью. Гостевая ОС может получать доступ к внешним сетевым сервисам, но не видна из сети. IP выбирается автоматически при помощи DHCP из диапазона 192.168.122.0/24 , интерфейс основной ОС всегда имеет IP 192.168.122.1 . Для доступа к сервисам нужно самостоятельно настроить маршрутизацию. После установки libvirtd должен создать ряд NAT-правил iptables .
Правила iptables после установки KVM
Второй вариант — Bridged, когда интерфейс гостевой ОС привязывается к физическому интерфейсу и VM доступна извне без допнастроек. Этот вариант чуть сложнее в настройках, так как из-за перестроек можно потерять SSH-подключение. Поэтому при отсутствии локальной консоли (Java/веб-аплета у провайдера) пользоваться им нужно только после тщательного тестирования, и мы его рассматривать не будем.
В первом варианте удобнее настроить KVM так, чтобы она назначала гостевой системе один и тот же IP-адрес. Это можно сделать прямо в конфигурационном файле /etc/libvirt/qemu/networks/default.xml или вызвав
Далее добавляем параметр host в секции dhcp :
Редактируем сетевые настройки для виртуального хоста
И так для каждого узла. После чего перезапускаем сеть.
Теперь можем указать маршрут к сервису в основной системе:
По умолчанию VNC в хостовой машине слушает только локальный порт. Поэтому при подключении с помощью VNC-клиента нужно обязательно пробрасывать порты.
Изменить эту ситуацию можно несколькими способами: добавив параметр --vnc,listen=0.0.0.0 и при необходимости указав другой порт --vncport 5901 .
Аналогичные настройки есть в сетевых установках хоста.
Чтобы не менять установки для каждой VM, проще изменить это поведение глобально:
Заключение
Ну вот, собственно, мы имеем Windows, запущенную внутри Linux. Конечно, рассматривать KVM для локальной установки, где сильны позиции у VirtualBox и VMware Workstation, не стоит, но при наличии свободных ресурсов на VDS можно быстро развернуть еще одну машину. Скорость, конечно, будет невелика, но для небольших тестов вполне достаточная.
Читайте также: