Создать виртуальное устройство linux
Libvirt - набор инструментов для управления виртуализацией. В данной статье будет описано его использование.
Добавляем пользователя в группу:
Содержание
На сервере переключаемся в режим суперпользователя:
И правим следующий файл:
После настройки на сервере SSH для доступа к файлам, на клиенте заработает и SSH для libvirt-manager для подключения к libvirt.
Кроме того разрешаем в брандмауэре: Alterator Web-Брадмауэр-Внешние сети-Дополнительные порты TCP/UDP-Добавляем порт 5900
Чтобы сделать некое подобие "Диспетчера Hyper-V" (Графическую консоль для управления виртуальными машинами) устанавливаем следующий пакет:
Открываем Virt-Manager. Файл>Добавить соединение>
- Локальная машина
- Гипервизор QEMU/KVM (подключаться автоматически).
- QEMU/KVM-Connect to remove host over SSH
- вводим имя пользователя
- вводим IP
- ставим галочку подключаться автоматически
- Нажимаем на кнопку "Создать виртуальную машину"
- Выбираем метод установки - локальный/ISO
- Выбираем ISO/CD и тип ОС (с помощью автодополнения)
- Выбираем количество ОЗУ и процессоров
- Создаем виртуальный жесткий диск
- Вводим название и выбираем сеть
До первого запуска откройте настройки виртуальной машины, во вкладке Обзор> Свойства гипервизора у вас будет возможность сменить тип прошивки - BIOS или UEFI. До первого запуска![1]
Выберите машину, нажмите на лампу.
- Дисплей:
- тип:VNC
- listen type:address
- адрес:IP
- порт:авто
- пароль:пользователя в группе
. Диск-1> Дополнительные параметры>Шина диска
- IDE - рекомендуется для Windows XP и младше
- SATA - для 7 и старше
- VirtIO для Linux [2]
Иначе вы просто не загрузитесь с CD/ISO.
. Выберите IDE CDROM> Browse.
В окне "Выберите том хранилища" нажмите на плюс (добавить пул), выберите тип dir-каталог в файловой системе и укажите папку с iso-образами.
Выберите образ из пула и нажмите на кнопку "Выбор тома".
Примечание: В качестве каталога можно указать папку прописанную в /etc/openssh - так вы легко сможете закидывать и подключать ISO-образыNAT — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса одной сети, в адрес другой сети.
Т.е. у вас в локальной сети сеть 192.168.0.x., а у виртуальных машин будет 192.168.1.x. И NAT позволит вам общатся между сетью 0.x и 1.x.
По-умолчанию в virt-manager уже есть NAT-интерфейс, но если вы его случайно удалили или хотите создать новый, то это делается так:
- откройте Правка>Свойства подключения>Виртуальные сети>+
- введите название сети
- режим: NAT
- Forward to: любое физическое устройство
Можете так же настроить адресацию IPv4 и DHCP-сервер (они настраиваются автоматически).
И в настройках виртуальной машины выберите данный интерфейс.
Чтобы напрямую общаться между реальной сетью и виртуальными машинами напрямую нужно создать сетевой мост.
Данный способ является наиболее правильным. Проще всего его сделать через alterator-net-bridge.
Например, br0, затем в настройках ВМ указать именно его.
//Как? Расписать.
Примечание: При этом управление сетью перейдет к etcnet и NetworkManager уже будет не нужен, его и его апплет можно удалить: apt-get remove NetworkManager NetworkManager-applet-gtk . В трее, соответственно, иконка статуса сети исчезнет.Настроил тут проброс порта в QEMU-виртуалку. Казалось бы, в чём проблема-то?
как-то так (можно вместо e1000 паравиртуальный драйвер, это побыстрее будет).
Но. Я это сделал через libvirt! И оказалось, что штатными средствами (не только тыкая в менюшки virt-manager, но и, кажется, вообще прямой настройкой сети) нельзя. Не знаю, почему. Может быть, можно, но я не нашёл как. А я искал. То, что в libvirt называется NAT, в действительности садится на tun/tap, лезет в iptables и т. д. Наверное, для совместимости с другими платформами виртуализации, не знаю.
- В настройках virt-manager разрешаем «Редактирование XML»
- Удаляем все сетевые устройства.
- Добавляем в конец общего XML-я виртуалки (например, во вкладке «Обзор»), перед закрывающим </domain> , такие строки:
Если неймспейс qemu не загружен, то такие:
И qemu преспокойненько само всё как надо делает. Фишка — не забыть про xmlns иначе просто не заработает, а вам ничего не скажет)
Откройте "Правка> Параметры", вкладка "Статистика", отметьте галочками, какие графики вы хотите сделать доступными.
Вкл./выкл. график вы можете через "Вид> График".
Снимок машины можно создать только если виртуальный жесткий диск у вас в формате *.qcow2.
Знаете ли вы, что можете присвоить более чем один IP-адрес физическому сетевому интерфейсу? Эта техника очень полезна, например при работе с Apache и виртуальными хостами, так как позволяет получить доступ к одному и тому же серверу Apache с двух разных IP-адресов.
2. Временный виртуальный сетевой интерфейс
Процесс создания виртуального сетевого интерфейса в Linux не занимает много времени. Он включает один запуск команды ifconfig.
Приведенная выше команда создает виртуальный сетевой интерфейс, базирующийся на оригинальном физическом сетевом интерфейсе eth0. Самое важное условие для создания виртуального сетевого интерфейса - должен существовать физический сетевой интерфейс, в нашем случае eth0. Ниже приведен полный пример:
Теперь мы можем настроить новый виртуальный интерфейс на базе eth0. После выполнения команды ifconfig новый виртуальный интерфейс готов к немедленному использованию.
2.1. Отключение виртуального сетевого интерфейса
Для отключения нашего, созданного ранее, временного сетевого интерфейса мы можем также использовать команду ifconfig с флагом down.
3. Присвоение виртуальному интерфейсу постоянного адреса
Описанные выше настройки не сохраняются после перезагрузки. Если вы хотите, чтобы виртуальный сетевой интерфейс работал постоянно, необходимо модифицировать конфигурационные файлы в соответствии с требованиями вашего дистрибутива Linux. Ниже описан этот процесс для самых распространенных дистрибутивов:
3.1. Debian / Ubuntu
3.1.1. Статический адрес
В Debian или Ubuntu вам необходимо отредактировать файл /etc/network/interfaces, добавив в него следующие строки:
3.1.2. Dhcp
Возможно также использовать витруальный сетевой интерфейс с DHCP. В этом случае вам необходимо добавить в /etc/network/interfaces следующую строку:
Для того, чтобы изменения вступили в силу, необходимо перезапустить сеть:
3.2. Redhat / Fedora / CentOS
3.2.1. Статический адрес
В Redhat, Fedora или CentOS Linux директория, отвечающая за присвоение постоянных IP-адресов - это /etc/sysconfig/network-scripts. В этой директории необходимо создать файл, соответствующий вашему новому виртуальному интерфейсу. В нашем случае этот файл будет называться ifcfg-eth0:0. Создайте этот новый файл и вставьте в него приведенные ниже строки. После перезагрузки адрес будет присвоен виртуальному интерфейсу на постоянной основе.
3.2.2. Dhcp
Когда закончите, перезапустите ваши интерфейсы:
4. Заключение
Раньше один физический сервер обслуживал один веб-сайт. Сегодня такой способ хостинга уже не является жизнеспособным, поэтому способность операционной системы создавать виртуальные сетевые интерфейсы действительно необходима.
Общеизвестно, что драйверы Linux — это модули ядра. Все драйверы являются модулями, но не все модули — драйверы. Примером одной из таких групп модулей, не являющихся драйверами, и гораздо реже появляющиеся в обсуждениях, являются сетевые фильтры на различных уровнях сетевого стека Linux.
Иногда, и даже достаточно часто, хотелось бы иметь сетевой интерфейс, который мог бы оперировать с трафиком любого другого интерфейса, но каким-то образом дополнительно «окрашивать» этот трафик. Такое может понадобится для дополнительного анализа, или контроля трафика, или его шифрования, …
Идея крайне проста: канализировать трафик уже существующего сетевого интерфейса во вновь создаваемый интерфейс с совершенно другими характеристиками (имя, IP, маска, подсеть, …). Один из способов выполнения таких действий в форме модуля ядра Linux мы и обсудим (он не единственный, но другие способы мы обсудим отдельно в другой раз).
Сразу понятно, что мы намереваемся «навесить» новый интерфейс, который предстоит создать, на ранее существующий. Поэтому, бегло вспомним то, что касается создания интерфейсов (и что делается, например, драйвером любого сетевого адаптера), потому как там есть несколько нюансов, важных для наших целей.
- по каждому принятому из интерфейса пакету создаются экземпляры структуры сокетных буферов (struct sk_buff), далее созданный экземпляр структуры продвигается по стеку протоколов вверх, до его получателя в пространстве пользователя, где он и уничтожается;
- порождённые где-то на верхних уровнях протоколов пользовательского пространства исходящие экземпляры структуры struct sk_buff должны быть отправлены, а сами экземпляры структуры после этого уничтожаются (или утилизируются в пул).
Здесь (детали будут понятны из примера модуля):
— sizeof_priv — размер приватной области данных интерфейса (struct net_device), которая будет создана ядром без нашего прямого участия;
— name — символьная строка — шаблон имени интерфейса;
— setup — адрес функции инициализации интерфейса;В таком, практически неизменном, виде процесс создания интерфейса описан везде в публикациях и упоминается в обсуждениях. Но начиная с ядра 3.17 прототип макроса создания интерфейса меняется (<linux/netdevice.h>):
Как легко видеть, теперь вместо 3-х параметров 4, 3-й из которых — константа, определяющая порядок нумерации создаваемых интерфейсов (исходя из шаблона имени), описанная в том же файле определений:Это первая тонкость на которую следует обратить внимание. Детальнее мы не будем углубляться в эти детали, важно было только отметить их.
Но созданный так интерфейс ещё не дееспособен, он не выполняет никаких действий. Для того, чтобы «придать жизнь» созданному сетевому интерфейсу, нужно реализовать для него соответствующий набор операций. Вся связь сетевого интерфейса с выполняемыми на нём операциями осуществляется через таблицу операций сетевого интерфейса:
В ядре 3.09, например, определено 39 операций в struct net_device_ops, и около 50-ти операций в ядре 3.14, но реально разрабатываемые модули реализуют только малую часть из них.
Характерно, что в таблице операций интерфейса присутствует операция передачи сокетного буфера ndo_start_xmit() в физическую среду, но вовсе нет операции приёма пакетов (сокетных буферов). Это совершенно естественно, как мы увидим вскоре: принятые пакеты (например в обработчике аппаратного прерывания IRQ) непосредственно после приёма вызовом netif_rx() (или netif_receive_skb()) тут же помещаются в очередь (ядра) принимаемых пакетов, и далее уже последовательно обрабатываются сетевым стеком. А вот выполнять функцию ndo_start_xmit() — обязательно, хотя бы, как минимум, для вызова API ядра dev_kfree_skb(), который утилизирует (уничтожает) сокетный буфер после успешной (да и безуспешной тоже) операции передачи пакета. Если этого не делать, в системе возникнет слабо выраженная утечка памяти (с каждым пакетом), которая, в конечном итоге, рано или поздно приведёт к краху системы. Это ещё одна тонкость, которую держим в уме.
Последним необходимым нам элементом является структура struct net_device (описана в <linux/netdevice.h>) — описание сетевого интерфейса. Это крупная структура, содержащая не только описание аппаратных средств, но и конфигурационные параметры сетевого интерфейса по отношению к выше лежащим протоколам (пример взят из ядра 3.09):
Здесь поле type, например, определяет тип аппаратного адаптера с точки зрения ARP-механизма разрешения MAC адресов (<linux/if_arp.h>):
Со структурой сетевого интерфейса обычно создаётся и связывается приватная структура данных (упоминавшаяся ранее), в которой пользователь может размещать произвольные собственные данные любой сложности, ассоциированные с интерфейсом. Это особо актуально, если предполагается, что драйвер может создавать несколько однотипных сетевых интерфейсов. Доступ к приватной структуре данных должен определяться исключительно специально определённой для того функцией netdev_priv(). Ниже показан возможный вид функции — это определение из ядра 3.09, но никто не даст гарантий, что в другом ядре оно радикально не поменяется:
Как легко видеть из определения, приватная структура данных дописывается непосредственно в хвост struct net_device — это обычная практика создания структур переменного размера, принятая в языке C начиная с стандарта C89 (и в C99).
Этого строительного материала нам будет достаточно для построения модуля виртуального сетевого интерфейса.
Создаём модуль, который будет перехватывать трафик сетевого ввода-вывода с другого, ранее существующего в системе (физического либо логического), интерфейса, и обеспечивать обработку этих потоков (файл virt.c)…
- После создания интерфейса alloc_netdev() мы связываем его операции через таблицу crypto_net_device_ops. Здесь определены операции (поля): .ndo_open и .ndo_stop (которые вызываются при запуске и остановке интерфейса командой ifconfig up/down), .ndo_get_stats (запрос статистики интерфейса) и .ndo_start_xmit (передача пакета).
- Через приватную область данных мы сохраняем связь с родительским интерфейсом в нами определённой структуре struct priv (в файлах примеров показано несколько различных вариантов использования приватной области для связывания).
- В таблице операций нет (да и быть не может по логике) функции приёма сокетных буферов. Но вызовом netdev_rx_handler_register() (который появился только в ядре 2.6.36) мы можем добавить в очередь обработки принимаемых пакетов (для родительского интерфейса) собственную функцию-фильтр handle_frame(), которая будет вызываться для каждого приходящего с этого интерфейса пакета.
- На время добавления фильтра к очереди, нам необходимо кратковременно заблокировать доступ к очереди (иначе нас может ожидать аварийный результат). Это достигается вызовами rtnl_lock() и rtnl_unlock().
- При передаче исходящего сокетного буфера в сеть (функция start_xmit()) мы просто подменяем в структуре сокетного буфера интерфейс, через который физически должна производиться отправка.
- При приёме, наоборот, сокетные буфера, создаваемые в родительском интерфейсе, подменяются на виртуальный.
Выберем любой существующий и работоспособный сетевой интерфейс (в Fedora 16 один из Ethernet интерфейсов назывался как p7p1 — это хорошая иллюстрация того, что интерфейсы могут иметь очень разнообразные имена):
Установим на него свой новый виртуальный интерфейс и конфигурируем его на IP подсеть (192.168.50.0/24), отличную от исходной подсети интерфейса p7p1:
Самый простой и быстрый способ создать ответный конец коммуникации (нам ведь нужно как-то тестировать свою работу?) для такой новой (192.168.50.2/24) подсети на другом хосте LAN, это создать алиасный IP для сетевого интерфейса этого удалённого хоста, по типу:
(Здесь показан сетевой интерфейс гипервизора виртуальных машин VirtualBox, но это не имеет значения, и точно то же можно проделать и с интерфейсом любого физического устройства).
Теперь из вновь созданного виртуального интерфейса мы можем проверить прозрачность сети посылкой ICMP:
И далее создать (теперь уже наоборот, на удалённом хосте) полноценную сессию SSH к новому виртуальному интерфейсу:
С таким, вновь созданным, виртуальным интерфейсом можно проделать множество увлекательных экспериментов в самых разнообразных сетевых конфигурациях!
Проницательный читатель, да ещё если он внимательно читал предыдущий текст, вправе в этом месте воскликнуть: «Но ведь ваш виртуальный интерфейс не дополняет, а замещает родительский?». Да, в показанном варианте именно так: загрузка такого модуля запрещает трафик по родительскому интерфейсу, но выгрузка модуля опять восстанавливает его.
- В фильтрах (и приёма и передачи) анализировать поле IP-адреса в структуре сокетного буфере и производить подмену интерфейса только для IP, принадлежащего виртуальному интерфейсу.
- На приёме разделить обработку сокетных буферов, соответствующим протоколам IP и ARP, потому как структуры данных этих протоколов, естественно, отличаются (поле struct sk_buff*->protocol).
Архив кодов для продолжения экспериментирования можете взять здесь или здесь.
Работа с устройствами в Linux очень сильно отличается от Windows. Главная концепция Linux в том, что все есть файл, не только пользовательские файлы с информацией, но и различные настройки ядра, подключенные устройства, память, сетевые соединения, все это представлено в виде файлов, которые размещены в специальных файловых системах.
С помощью этих файлов система работает с устройствами, и вы можете ими управлять с помощью различных утилит. В этой статье мы рассмотрим как выполняется работа с устройствами Linux, что из себя представляют устройства Linux, а также рассмотрим несколько примеров создания файлов устройств и обращения к ним. Это довольно интересная тема.
Файлы устройств Linux
Все файлы устройств расположены в каталоге /dev, который есть неотделимой частью корневой файловой системы, поскольку они должны быть доступны на всех этапах загрузки. Они также известны как специальные файлы устройств. Эти файлы используются операционной системой для обеспечения пользователю и программам интерфейса доступа к устройствам, подключенным к компьютеру.
Самое важное, что нужно знать об этих файлах - это не драйверы устройств, их лучше рассматривать как интерфейс доступа к драйверам устройств. Приложение отправляет данные в файл устройства, откуда они читаются драйвером устройства и отправляются на физическое устройства. Обратная передача от физических устройств тоже проходит по этому пути через файл устройства. Давайте посмотрим как будет выглядеть поток передачи данных для типичной команды, например, cat:
На схеме приведена схема передачи данных для команды cat /etc/resolv.conf. Вы выполняете команду из терминала, утилита отправляет запрос файла драйверу, который ищет файл на диске и читает его содержимое. Данные передаются через файл устройства, а затем опять же, через файл устройства псевдо-терминала передаются в эмулятор терминала 6, где они будут отображены.
Если мы перенаправим вывод команды в файл, например, cat /etc/resolv.conf > /etc/resolv.bak, то левая часть схемы останется неизменной, а правая сторона будет вести к файлу устройства /dev/sda2. Эти устройства делают очень простым использование стандартных потоков ввода/вывода для доступа к каждому устройству. Простое перенаправление потока данных в файл устройства приведет к записи данных на устройство.
Классификация файлов устройств
Файлы устройств можно классифицировать по меньшей мере двумя способами. Первая и наиболее широкая классификация - на основе потока данных. В устройствах TTY и других символьных устройствах, данные обрабатываются по одному символу или байту за раз. В блочных устройствах, таких как жесткие диски данные передаются блоками, как правило, с размером, кратным 256 байт.
Если вы еще этого не делали, то перейдите в папку /dev/ и посмотрите список находящихся там файлов с помощью команды ls. Вы увидите очень длинный список файлов с их правами доступа, владельцами и группами - это список устройств linux. Обратите внимание на самый первый символ в каждой строке. Он указывает тип устройства. Символом "b" - обозначаются блочные устройства linux (block), а символом "c" - символьные (character).
Более точно можно идентифицировать устройства по их младшему и старшему номеру. Например, жесткие диски имеют старший номер 8, что обозначает их как блочные устройства SCSI. Обратите внимание, что все жесткие диски PATA и SATA находятся под управлением SCSI. Раньше использовалась подсистема ATA, но она уже устарела, поэтому диски, которые раньше обозначались как hd[a-z] теперь обозначаются sd[a-z].
Младший номер диска означает раздел устройства, например, номера 8/0 - это весь диск /dev/sda, а 8/1 уже файл первого раздела на диске, 8/6 - /dev/sda6. Файлы TTY именуются немного по-другому, от tty0 до tty63. Все значения старших номеров устройств Linux вы можете найти на официальном сайте ядра.
Работа с устройствами в Linux
Давайте проведем несколько экспериментов, которые помогут вам понять как работают устройства Linux и как ими управлять в этой операционной системе. Большинство дистрибутивов Linux имеют несколько виртуальных консолей, обычно от 1 до 7, которые могут использоваться для входа в сеанс командной оболочки. К этим виртуальным консолям можно получить доступ с помощью сочетаний клавиш Ctrl+Alt+Fn, например, Ctrl+Alt+F1 для первой консоли, Ctrl+Alt+F2 для второй и так далее.
Сейчас нажмите Ctrl+Alt+F2 для перехода во вторую консоль, в некоторых дистрибутивах, кроме запроса логина и пароля, будет выведена информация про активную TTY связанную с этой консолью. Но этой информации может и не быть. В данном случае консоль будет связана с устройством tty2.
Войдите от имени обычного пользователя, затем наберите такую команду, чтобы посмотреть номер устройства tty:
У меня вы видите устройство /dev/pts/0, это виртуальное устройство эмулятора терминала, но если вы будете выполнять задачу в tty2, то отобразиться именно она. Теперь давайте посмотрим список tty устройств с помощью команды ls:
Нас будут интересовать не все устройства, а только первые три. В этих устройствах нет ничего особенного, это обычные устройства символьного типа. Устройство tty2 подключено к консоли 2, устройство tty3 подключено к консоли 3.
Нажмите сочетание клавиш Ctrl+Alt+F3, чтобы переключиться в третью консоль, затем выполните команду:
echo "Hello world" > /dev/tty2
Затем вернитесь во вторую консоль. Здесь вы увидите отправленную строку, Hello World. Все это можно повторить с помощью эмуляторов терминала в графическом интерфейсе, только здесь будут использоваться псевдо-терминальные устройства /dev/pts/*. Теперь попробуем отобразить содержимое файла fstab с помощью cat в другом терминале:
cat /etc/fstab > /dev/tty2
cat test.pdf > /dev/usb/lp0
Каталог /dev/ содержит много интересных файлов устройств. Это интерфейсы доступа к аппаратному обеспечению и вам не нужно думать, что это, жесткий диск или экран. Например, вся оперативная память компьютера доступна в виде устройства /dev/mem. С помощью него вы можете иметь прямой доступ к памяти. Мы можем вывести содержимое памяти в терминал:
dd if=/dev/mem bs=2048 count=100
Утилита dd, в отличие от cat дает больше контроля над процессом и позволяет указать сколько данных нужно прочитать. Но не ко всей памяти вы можете получить доступ. В ядре встроена защита, поэтому обычно, вы можете читать память, только для своего процесса.
Также тут есть файлы, которые несвязанны ни с какими реальными устройствами, это null, zero, random и urandom. Устройство /dev/null может использоваться для перенаправления вывода команд, чтобы данные никуда не выводились. Устройство /dev/zero используется для получения строки, заполненной нулями.
Вы можете использовать ту же команду dd, чтобы попытаться вывести ряд символов с устройства /dev/null:
dd if=/dev/null bs=512 count=500 | od -c
Обратите внимание, что ничего выведено не будет, потому что это устройство пусто, оно только принимает данные и никуда их не сохраняет.
Устройства /dev/random и /dev/urandom позволяют получить случайные комбинации чисел или байт. Вы можете использовать такую команду, чтобы получить случайные байты информации:
Для остановки нажмите Ctrl+C. Устройство urandom позволяет генерировать случайные последовательности независимые от предыдущего числа, в качестве источника энтропии используется нажатия клавиш и движения мыши.
Устройство /dev/zero позволяет получить строку, заполненную нулями. Для проверки используйте такую команду:
dd if=/dev/zero bs=512 count=500 | od -c
Обратите внимание, что восьмеричные нули и нули ASCII это не одно и то же.
Создание устройств в Linux
В прошлом все устройства из каталога /dev создавались во время установки системы, а это означало, что каталог содержал все возможные поддерживаемые устройства, даже если они не использовались. Если вам нужно было создавать или переинициализировать файлы устройств, использовалась утилита mknod. Но для работы с ней вам нужно знать старший и младший номер устройства.
Сейчас ситуация изменилась и все файлы устройств linux создаются во время загрузки только для нужных устройств. Менеджер устройств следит за подключаемыми и отключаемыми устройствами и добавляет или удаляет соответствующие файлы. Вы можете убедиться, что устройства были созданы сейчас просмотрев дату создания в с помощью команды ls.
Команда mknod все еще есть, но уже существует более новая разработка - makedev. Она предоставляет очень простой интерфейс для создания устройств.
Выводы
В этой статье мы рассмотрели подключенные устройства linux, а также как выполняется работа с устройствами в Linux. Конечно, в одной статье невозможно полностью охватить такую огромную тему, но я надеюсь что у вас появились некоторые базовые навыки работы использования файлов устройств и эта статья была вам полезной.
Виртуальные машины Azure можно создать на портале Azure. Портал Azure — это браузерный пользовательский интерфейс, который позволяет создавать ресурсы Azure. В этом кратком руководстве показано, как использовать портал Azure для создания виртуальной машины Linux под управлением Ubuntu 18.04 LTS. Чтобы проверить работу виртуальной машины, вы также подключитесь к ней по протоколу SSH и установите веб-сервер NGINX.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Войдите на портал Azure, если вы еще этого не сделали.
Создание виртуальной машины
В поле поиска введите виртуальные машины.
В разделе Службы выберите Виртуальные машины.
На странице Виртуальные машины выберите Добавить. Откроется страница Создание виртуальной машины.
В разделе Подробности об экземпляре введите myVM в поле Имя виртуальной машины, выберите Восточная часть США в поле Регион и выберите Ubuntu 18.04 LTS в поле Образ. Оставьте другие значения по умолчанию.
В разделе Учетная запись администратора выберите Открытый ключ SSH.
В поле Имя пользователя введите azureuser.
Для параметра Источник открытого ключа SSH оставьте значение по умолчанию Создать новую пару ключей, а затем введите myKey в поле Имя пары ключей.
Оставьте остальные значения по умолчанию и нажмите кнопку Просмотр и создание, расположенную в нижней части страницы.
На странице Создание виртуальной машины отображаются сведения о создаваемой виртуальной машине. Когда вы будете готовы, нажмите Создать.
Когда развертывание будет завершено, выберите Перейти ресурсу.
На странице новой виртуальной машины выберите общедоступный IP-адрес и скопируйте его в буфер обмена.
Azure предоставляет IP-адрес исходящего трафика по умолчанию для виртуальных машин Azure, которым не назначен общедоступный IP-адрес или которые находятся в серверном пуле внутреннего Azure Load Balancer цен. категории "Базовый". Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
Дополнительные сведения об исходящем доступе по умолчанию см. в статье Исходящий доступ по умолчанию в Azure.
IP-адрес исходящего трафика по умолчанию отключается, когда виртуальной машине назначается общедоступный IP-адрес или виртуальная машина помещается в серверный пул Azure Load Balancer цен. категории "Стандартный" с правилами для исходящего трафика или без них. Если ресурс шлюза виртуальной сети Azure NAT назначен подсети виртуальной машины, IP-адрес исходящего трафика по умолчанию отключен.
В виртуальных машинах, созданных с помощью масштабируемых наборов виртуальных машин в режиме гибкой оркестрации, исходящий доступ по умолчанию не предусмотрен.
Подключение к виртуальной машине
Создайте SSH-подключение к виртуальной машине.
Если вы используете компьютер Mac или Linux, откройте командную строку Bash. Если вы используете компьютер Windows, откройте командную строку PowerShell.
В командной строке установите SSH-подключение к виртуальной машине. Измените IP-адрес на IP-адрес виртуальной машины и вместо пути .pem укажите путь к скачанному файлу ключа.
Созданный вами ключ SSH можно использовать при следующем создании виртуальной машины в Azure. Только при этом выберите для параметра Источник открытого ключа SSH значение Use a key stored in Azure (Использовать ключ, сохраненный в Azure). У вас уже есть закрытый ключ на компьютере, поэтому вам не нужно ничего скачивать.
Установка веб-сервера
Чтобы проверить работу виртуальной машины, установите веб-сервер NGINX. Из сеанса SSH обновите источники пакетов, а затем установите последнюю версию пакета NGINX.
После этого введите exit , чтобы выйти из сеанса SSH.
Проверка работы веб-сервера
Очистка ресурсов
Если группа ресурсов, виртуальная машина и все связанные с ними ресурсы вам больше не требуются, их можно удалить. Для этого выберите группу ресурсов для виртуальной машины, выберите действие Удалить и подтвердите имя удаляемой группы ресурсов.
Дальнейшие действия
При работе с этим кратким руководство вы развернули простую виртуальную машину, создали группу безопасности сети и правило для нее, а также установили простой веб-сервер. Дополнительные сведения о виртуальных машинах Azure см. в руководстве для виртуальных машин Linux.
Читайте также: