пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ FreePBX
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Router-on-a-stick (роутер на палочке) - это термин, часто используемый для описания схемы, состоящей из маршрутизатора и коммутатора, которые соединены с использованием одного канала Ethernet, настроенного как 802.1Q транк. Стандарт 802.1Q используется для тегирования трафика, для передачи информации о принадлежности к VLAN. В этой схеме на коммутаторе настроено несколько VLAN и маршрутизатор выполняет всю маршрутизацию между различными сетями или VLAN (Inter-VLAN routing).
/p>
Хотя некоторые считают, что термин «маршрутизатор на палочке» звучит немного глупо, это очень популярный термин, который широко используется в сетях, где нет коммутатора 3-го уровня.
Также такую схему иногда называют “леденец” – lollypop. Находите некоторое сходство?
Пример
Наш пример основан на сценарии, с которым вы, скорее всего, столкнетесь при работе с сетями VoIP. Поскольку реализации VoIP требуют разделения сети передачи данных и сети голоса для маршрутизации пакетов между ними, вам необходим либо коммутатор 3-го уровня, либо маршрутизатор. Эта конфигурация обеспечивает доступность и стабильность VoIP, особенно в часы пик трафика в вашей сети.
Пакеты, передающиеся между VLAN маршрутизируются через один роутер, подключенный к коммутатору, используя один физический порт, настроенный как транк на обоих концах (коммутатор и маршрутизатор).
Этот пример покажет вам, как настроить маршрутизатор и коммутатор Cisco для создания между ними 802.1Q транка и маршрутизации пакетов между вашими VLAN.
Шаг 1 – Настройка коммутатора
Первым шагом является создание необходимых двух VLAN на нашем коммутаторе Cisco и настройка их с IP-адресом. Поскольку все коммутаторы Cisco содержат VLAN1 (VLAN по умолчанию), нам нужно только создать VLAN2.
Switch# configure terminal
Switch(config)# vlan2
Switch(config-vlan)# name voice
Switch(config-vlan)# exit
Switch(config)# interface vlan1
Switch(config-if)# ip address 192.168.10.2 255.255.255.0
Switch(config-if)# exit
Switch(config)# interface vlan2
Switch(config-if)# ip address 192.168.20.2 255.255.255.0
Switch(config-if)# exit
Далее, нам нужно создать транк порт, который будет соединятся с маршрутизатором. Для этой цели мы выберем порт GigabitEthernet 0/1
Switch# configure terminal
Switch(config)# interface gigabitethernet 0/1
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
Switch(config-if)# spanning-tree portfast trunk
При помощи данных команд мы определили, что транк будет использовать инкапсуляцию 802.1Q, установили порт в режим транка и включили функцию portfast trunk spanning-tree, чтобы гарантировать, что порт будет пересылать пакеты немедленно при подключении к устройству, например, маршрутизатору. Внимание: команда spanning-tree portfast trunk не должна использоваться на портах, которые подключаются к другому коммутатору, чтобы избежать петель в сети.
Шаг 2 – Настройка маршрутизатора
Мы закончили с коммутатором и можем переходить к настройке конфигурации нашего маршрутизатора, чтобы обеспечить связь с нашим коммутатором и позволить всему трафику VLAN проходить и маршрутизироваться по мере необходимости.
Создание транка на порте маршрутизатора не сильно отличается от процесса, описанного выше - хотя мы транк на одном физическом интерфейсе, мы должны создать под-интерфейс (sub-interface) для каждого VLAN.
Router# configure terminal
Router(config)# interface gigabitethernet0/1
Router(config-if)# no ip address
Router(config-if)# duplex auto
Router(config-if)# speed auto
Router(config-if)# interface gigabitethernet0/1.1
Router(config-subif)# encapsulation dot1q 1 native
Router(config-subif)# ip address 192.168.10.1 255.255.255.0
Router(config-subif)# interface gigabitethernet0/1.2
Router(config-subif)# encapsulation dot1q 2
Router(config-subif)# ip address 192.168.20.1 255.255.255.0
Чтобы сформировать транк с нашим коммутатором, необходимо создать один под-интерфейс для каждого VLAN, сконфигурированного на нашем коммутаторе. После создания под-интерфейса мы назначаем ему IP-адрес и устанавливаем тип инкапсуляции 802.1Q и указываем номер VLAN, к которому принадлежит под-интерфейс.
Например, команда encapsulation dot1q 2 определяет инкапсуляцию 802.1Q и устанавливает под-интерфейс на VLAN 2.
Параметр native который мы использовали для под-интерфейса gigabitethernet0/1.1, сообщает маршрутизатору, что нативный vlan - это VLAN 1. Это параметр по умолчанию на каждом коммутаторе Cisco и поэтому должен совпадать с маршрутизатором.
Для проверки можно использовать на роутере команду show vlans, где будут отображены созданные нами под-интерфейсы, а также при помощи команды show ip route в таблице маршрутизации мы должны увидеть наши под-интерфейсы.
Готово! Теперь при помощи роутера мы можем маршрутизировать файлы между разными VLAN.
Виртуализация серверов — популярная тема в мире ИТ, особенно на уровне предприятий. Она позволяет разным операционным системам запускать отдельные приложения на одном сервере, используя одни и те же физические ресурсы.
Виртуальные машины позволяют системным и сетевым администраторам иметь выделенную машину для каждой службы, которую нужно запустить. Это не только уменьшает количество требуемых физических серверов, но и экономит время при поиске и устранении проблем.
В этой статье обсудим гипервизоры — важные компоненты процесса виртуализации серверов, как они работают и какие бывают типы.
Что такое гипервизор?
Гипервизор — это важное программное обеспечение, которое делает виртуализацию возможной. Он создает виртуализационный слой, отделяющий реальные аппаратные компоненты — процессоры, ОЗУ и другие физические ресурсы — от виртуальных машин и операционных систем, которые на них работают.
Машина, на которой работает гипервизор, называется хост-машиной, а виртуальные экземпляры, запускаемые поверх гипервизора, известны как гостевые виртуальные машины.
Гипервизоры эмулируют доступные ресурсы, чтобы гостевые машины могли их использовать. Независимо от того, какая операционная система загружается на виртуальной машине, она будет думать, что у нее в распоряжении реальные физические ресурсы.
Зачем использовать гипервизор?
С точки зрения виртуальной машины, нет никакой разницы между физической и виртуализированной средой. Гостевые машины не знают, что гипервизор создал их в виртуальной среде или что они делят доступную вычислительную мощность.
Тот факт, что гипервизор позволяет виртуальным машинам функционировать как обычным вычислительным экземплярам, делает его полезным для компаний, планирующих:
Максимально эффективно использовать свои вычислительные ресурсы. Несколько виртуальных сред на одном сервере полностью используют доступные процессор и память.
Обеспечить лучшую мобильность ИТ. Виртуальные машины не зависят от аппаратного обеспечения хоста и могут быть легко перенесены на другую систему.
Типы гипервизоров
Существует два типа гипервизоров в зависимости от их места в структуре виртуализации серверов:
Гипервизоры первого типа, также известные как «пустые» или «родные».
Гипервизоры второго типа, также известные как размещенные гипервизоры.
В следующих разделах оба типа описаны более подробно.
Гипервизор типа 1
Гипервизор типа 1 — это слой программного обеспечения, установленный непосредственно поверх физического сервера и лежащего в его основе оборудования. Поскольку между аппаратным обеспечением и гипервизором не работает никакое другое программное обеспечение, его также называют «пустым» гипервизором.
Этот тип гипервизора обеспечивает отличную производительность и стабильность, поскольку он не работает внутри Windows или любой другой операционной системы. Вместо этого он представляет собой простую операционную систему, предназначенную для запуска виртуальных машин. Физическая машина, на которой работает гипервизор, служит только для целей виртуализации.
Гипервизоры первого типа встречаются в основном в корпоративных средах.
После загрузки физического сервера с установленным гипервизором типа "bare-metal" (на голом металле) на экране отображается экран, похожий на командную строку, с некоторыми деталями о оборудовании и сети. К ним относятся тип процессора, объем памяти, IP-адрес и MAC-адрес.
Ниже приведен пример экрана гипервизора типа 1 VMware ESXi после загрузки сервера.
Плюсы и минусы гипервизора типа 1
Гипервизоры типа 1 предлагают важные преимущества в плане производительности и безопасности, однако им не хватает продвинутых функций управления. Вот основные плюсы и минусы использования этого типа гипервизора.
Плюсы
Мобильность виртуальных машин. Гипервизоры типа 1 позволяют перемещать виртуальные машины между физическими серверами как вручную, так и автоматически. Это перемещение основывается на потребностях ресурсов виртуальной машины в данный момент и происходит без влияния на конечных пользователей. В случае сбоя оборудования программное обеспечение для управления перемещает виртуальные машины на рабочий сервер, как только возникает проблема. Процедура обнаружения и восстановления происходит автоматически и без проблем.
Безопасность. Гипервизор типа 1 имеет прямой доступ к оборудованию без дополнительного уровня операционной системы. Эта прямая связь значительно уменьшает поверхность атаки для потенциальных злоумышленников.
Перераспределение ресурсов. С гипервизорами типа 1 вы можете назначать виртуальным машинам больше ресурсов, чем у вас есть на самом деле. Например, если у вас есть 128 ГБ оперативной памяти на сервере и восемь виртуальных машин, вы можете назначить каждой 24 ГБ памяти. В сумме это составит 192 ГБ памяти, но сами ВМ не будут потреблять все 24 ГБ с физического сервера. ВМ обнаруживают, что у них есть 24 ГБ, когда на самом деле используют только необходимое количество памяти для выполнения конкретных задач.
Примечание: гипервизор выделяет только необходимое количество ресурсов для полной функциональности экземпляра. Это одна из причин, почему все современные корпоративные дата-центры, такие как phoenixNAP, используют гипервизоры типа 1.
Минусы
Ограниченная функциональность. Гипервизоры типа 1 относительно просты и не предлагают множество функций. Основные функции включают базовые операции, такие как изменение даты и времени, IP-адреса, пароля и т.д.
Сложное управление. Для создания виртуальных экземпляров требуется консоль управления, установленная на другой машине. С помощью консоли можно подключаться к гипервизору на сервере и управлять виртуальной средой.
Цена. В зависимости от необходимых функций стоимость лицензии на консоли управления может существенно различаться.
Примеры гипервизоров типа 1
Существует множество различных поставщиков гипервизоров. Большинство из них предлагают пробные версии для тестирования их услуг перед покупкой. Вот наиболее распространенные гипервизоры типа 1:
VMware vSphere с ESX/ESXi. VMware является ведущим поставщиком технологий виртуализации в отрасли, и многие крупные дата-центры работают на их продуктах. Это может не быть самым экономически эффективным решением для небольших ИТ-окружений. Если вам не нужны все продвинутые функции VMware vSphere, существует бесплатная версия этого гипервизора и несколько коммерческих редакций.
KVM (Kernel-Based Virtual Machine). KVM встроен в Linux как дополнительная функциональность, которая позволяет преобразовать ядро Linux в гипервизор. Иногда его путают с гипервизором типа 2. Однако он имеет прямой доступ к оборудованию наряду с виртуальными машинами, которые он хостит.
Как решение с открытым исходным кодом, KVM содержит все функции Linux с добавлением множества других возможностей. Это делает его одним из лучших вариантов для корпоративных сред. Некоторые особенности включают живую миграцию, планирование и контроль ресурсов, а также повышенный приоритет.
Чтобы узнать больше о работе с KVM, посетите наши учебные пособия по установке KVM на Ubuntu и установке KVM на CentOS.
Microsoft Hyper-V. Несмотря на то, что гипервизор VMware занимает более высокое место в рейтинге благодаря множеству продвинутых функций, Hyper-V от Microsoft стал достойным конкурентом. Microsoft также предлагает бесплатное издание своего гипервизора, но если вы хотите графический интерфейс и дополнительные функции, вам придется выбрать одну из коммерческих версий. Hyper-V может не предлагать столько же функций, как пакет VMware vSphere, но вы все равно получаете живую миграцию, репликацию виртуальных машин, динамическую память и многие другие функции.
Oracle VM. Этот гипервизор имеет открытую основу Xen и бесплатен. Расширенные функции доступны только в платных версиях. Хотя Oracle VM является стабильным продуктом, он не так силен, как vSphere, KVM или Hyper-V.
Citrix Hypervisor (ранее известный как Xen Server). Платформа виртуализации серверов от Citrix лучше всего подходит для корпоративных сред, она может справляться с любыми рабочими нагрузками и предоставляет функции для самых требовательных задач. Citrix гордится своими проприетарными функциями, такими как улучшенная виртуализированная графика от Intel и NVIDIA, а также безопасность рабочих нагрузок с помощью Direct Inspect API.
Гипервизор типа 2
Гипервизоры второго типа работают внутри операционной системы физической хост-машины, поэтому их называют размещенными гипервизорами. В отличие от пустых гипервизоров, которые работают непосредственно на аппаратном обеспечении, размещенные гипервизоры имеют один программный уровень между ними.
Система с размещенным гипервизором включает:
физическую машину
операционную систему, установленную на оборудовании (Windows, Linux, macOS).
программное обеспечение гипервизора типа 2 в этой операционной системе.
экземпляры гостевых виртуальных машин.
Гипервизоры второго типа обычно используются в средах с небольшим количеством серверов.
Их удобство заключается в том, что для настройки и управления виртуальными машинами не требуется консоль управления на другой системе. Все действия выполняются на сервере с установленным гипервизором, а виртуальные машины запускаются в стандартном окне ОС.
Хостируемые гипервизоры также выступают в роли консолей управления виртуальными машинами. Любая задача может быть выполнена с помощью встроенного функционала. Ниже приведен пример интерфейса гипервизора второго типа (VirtualBox от Oracle):
Плюсы и минусы гипервизора типа 2
Гипервизоры типа 2 просты в использовании и предлагают значительные преимущества для повышения продуктивности, но менее безопасны и имеют меньшую производительность. В нижеследующих разделах перечислены основные преимущества и недостатки.
Плюсы
Простота управления. Нет необходимости устанавливать отдельное программное обеспечение на другой машине для создания и управления виртуальной средой. Установите и запустите гипервизор типа 2 как любое другое приложение в вашей ОС. Создавайте снимки или клонируйте виртуальные машины, импортируйте или экспортируйте устройства и т.д.
Удобство для тестирования. Гипервизоры типа 2 удобны для тестирования нового программного обеспечения и исследовательских проектов. Можно использовать одну физическую машину для запуска нескольких экземпляров с разными операционными системами, чтобы проверить, как приложение ведет себя в каждой среде, или создать определенную сетевую среду. Нужно только убедиться, что достаточно физических ресурсов для поддержания работы хоста и виртуальных машин.
Доступ к дополнительным инструментам продуктивности. Пользователи гипервизоров типа 2 могут использовать инструменты, доступные на других операционных системах, наряду с основной ОС. Например, пользователи Windows могут получить доступ к приложениям Linux, создавая виртуальную машину с Linux.
Минусы
Менее гибкое управление ресурсами. Распределять ресурсы в гипервизорах этого типа сложнее, чем в гипервизорах первого типа. Бесплотные гипервизоры могут динамически распределять доступные ресурсы в зависимости от текущих потребностей конкретной виртуальной машины. Гипервизор типа 2 занимает все ресурсы, которые пользователь выделяет виртуальной машине. Если пользователь выделяет виртуальной машине 8 ГБ оперативной памяти, этот объем будет занят, даже если виртуальная машина использует лишь его часть. Если на хост-машине 32 ГБ оперативной памяти, а пользователь создает три ВМ по 8 ГБ каждая, у него остается 8 ГБ оперативной памяти для поддержания работы физической машины. Создание еще одной ВМ с 8 ГБ оперативной памяти приведет к сбою в работе системы.
Производительность. Хост-ОС создает дополнительную нагрузку на физическое оборудование, что может привести к проблемам с задержками у ВМ.
Безопасность. Гипервизоры типа 2 работают поверх операционной системы. Это создает потенциальную уязвимость, так как злоумышленники могут использовать уязвимости ОС для доступа к виртуальным машинам.
Примеры гипервизоров типа 2
Как и в случае с гипервизорами на голом металле, на рынке представлено множество поставщиков и продуктов. Многие гипервизоры типа 2 имеют бесплатные базовые версии и обеспечивают достаточные функции.
Некоторые даже предоставляют расширенные функции и улучшение производительности при установке дополнительных пакетов, бесплатно. Мы упомянем несколько наиболее популярных хостированных гипервизоров:
Oracle VM VirtualBox. Это бесплатный, но стабильный продукт с достаточными функциями для личного использования и большинства случаев для небольших бизнесов. Он не требует много ресурсов и зарекомендовал себя как хорошее решение для виртуализации рабочих станций и серверов. Поддерживает многопроцессорность гостей с до 32 vCPU на виртуальную машину, загрузку по сети PXE, деревья снимков и многое другое.
VMware Workstation Pro/VMware Fusion. Гипервизор типа 2 для Windows и Linux. Он полон продвинутых функций и имеет бесшовную интеграцию с vSphere, позволяя перемещать приложения между настольной и облачной средой.
Он имеет цену, так как бесплатной версии нет. Если вы хотите протестировать гипервизоры VMware бесплатно, попробуйте VMware Workstation Player. Это базовая версия гипервизора, подходящая для небольших песочниц.
Для пользователей macOS VMware разработал Fusion, который похож на их продукт Workstation. Он имеет меньше функций, но и меньшую цену.
Windows Virtual PC от Microsoft поддерживает только Windows 7 как хост-машину и Windows ОС на гостевых машинах. Это включает несколько версий Windows 7 и Vista, а также XP SP3. Virtual PC полностью бесплатен.
Parallels Desktop. Конкурент VMware Fusion. Он в первую очередь предназначен для пользователей macOS и предлагает множество функций в зависимости от версии, которую вы покупаете. Некоторые функции включают сетевое кондиционирование, интеграцию с Chef/Ohai/Docker/Vagrant, поддержку до 128 ГБ на ВМ и другие.
Гипервизор типа 1 против типа 2: как выбрать подходящий
Выбор правильного типа гипервизора строго зависит от ваших индивидуальных потребностей. Первое, что нужно учитывать, это размер виртуальной среды, которую вы собираетесь развернуть.
Для личного использования и небольших развертываний вы можете выбрать один из гипервизоров типа 2. Если бюджет не является проблемой, VMware предоставит все необходимые функции. В противном случае Oracle VM VirtualBox является гипервизором, который обеспечит большинство необходимых функций.
Для корпоративных сред, хотя гипервизоры типа 1 - это правильный выбор, необходимо учитывать множество факторов перед принятием решения. Ключевым фактором для корпоративных сред обычно является стоимость лицензии. Вам нужно обратить особое внимание, так как лицензирование может быть по серверу, по процессору или иногда даже по ядру. Текущий рынок - это соревнование между VMware vSphere и Microsoft Hyper-V. Хотя Hyper-V несколько лет назад отставал, он теперь стал достойным выбором, даже для крупных развертываний. То же касается и KVM.
Многие поставщики предлагают несколько продуктов и уровней лицензий, чтобы удовлетворить потребности любой организации. Возможно, вам стоит составить список требований, таких как количество ВМ, максимально допустимые ресурсы на ВМ, узлы в кластере, конкретные функции и т.д. Затем проверьте, какой из этих продуктов лучше всего соответствует вашим потребностям.
Примечание: Пробные периоды могут быть полезны при тестировании, какой гипервизор выбрать.
Подведем итог
В этой статье объясняется, что такое гипервизор и какие типы гипервизоров (типа 1 и типа 2) вы можете использовать. Поставщики гипервизоров предлагают пакеты, которые содержат несколько продуктов с различными лицензионными соглашениями. Вам нужно тщательно исследовать варианты перед принятием окончательного решения.
На сегодняшний день контейнеры – это то, без чего не обходится запуск приложений. А самая популярная контейнерная технология – это Docker.
Умение подключаться к контейнерам по SSH пригодится для использования, отладки и эксплуатации контейнеров в вашей локальной операционной системе или при удаленной настройке.
В этой статье описаны различные методы такого подключения, а также ограничения, которые есть у каждого из них.
Метод 1 – Подключение к запущенному контейнеру с помощью
docker exec
Самая распространенная и самая полезная команда для получения доступа к оболочке контейнера -
docker exec -it
. Она, в свою очередь, запускает в контейнере новую команду, которая позволяет запустить новую интерактивную оболочку:
# start a container { // запускаем контейнер }
$ docker run --name nginx --rm -p 8080:80 -d nginx
# create and connect to a bash shell in the container { // создаем и подключаемся к bash-оболочке в контейнере }
$ docker exec -it nginx bash
root@a84ad71521b1:/#
Выйти из текущей оболочки можно, нажав
control + d
или введя
exit
.
Эта команда работает так:
docker exec
запускает новую команду,
-i
добавляет поток стандартного ввода,
-t
добавляет терминальный драйвер,
-it
объединяет
-i
и
-t
, и, таким образом, вы можете взаимодействовать с процессом.
Бывает, что в контейнере не установлена оболочка Bash. Если у вас не получается запустить bash-оболочку, попробуйте запустить оболочку
sh
:
docker exec -it nginx sh
Кроме того, в контейнере может вообще не быть установленной оболочки. А значит, вы не сможете получить доступ к оболочке в контейнере в обычном Docker, и вы не сможете ее запустить.
Но вы все равно можете получить доступ к контейнеру, правда, все зависит от вашего инструмента оркестровки. Например, все большую популярность завоевывают distroless-контейнеры, так как они занимают меньше памяти. Если вы используете Kubernetes, то вы можете отлаживать поврежденные контейнеры и контейнеры без оболочки с помощью такой вещи, как эфемерные контейнеры.
Метод 2 – Подключение к запущенному контейнеру с помощью
docker attach
Команда
docker attach
позволяет подключить стандартный ввод и вывод вашего терминала к запущенному контейнеру и отслеживать на нем ошибки с помощью идентификатора или имени контейнера.
По сути это значит, что все, что вы вводите, будет отправляться в контейнер, и все, что будет печататься, будет отображаться в вашей консоли.
А теперь, подключимся к запущенному контейнеру:
$ docker attach nginx
172.17.0.1 - - [18/Mar/2022:08:37:14 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36" "-"
Запустив эту команду, вы можете открыть http://localhost:8080. Так как контейнер печатает журналы доступа на каждой открытой странице, вы увидите вывод в своем терминале.
Кроме того, ввод будет отправляться в контейнер. Так что, если вы нажмете
control + c
, то сработает сигнал уничтожения, и ваш контейнер завершит свою работу.
$ docker attach nginx
172.17.0.1 - - [18/Mar/2022:08:37:14 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36" "-"
^[[A^C2022/03/18 08:39:50 [notice] 1#1: signal 2 (SIGINT) received, exiting
2022/03/18 08:39:50 [notice] 32#32: exiting
Отключиться от контейнера – не такая простая задача, так как для того, чтобы это сделать, вам также понадобиться сочетание клавиш
control + c
. Для того, чтобы иметь возможность отключиться от контейнера, не останавливая его, вам нужно подключиться к контейнеру, отключив перенаправление сигналов:
# start the container again { // снова запускаем контейнер }
docker run --name nginx --rm -p 8080:80 -d nginx
# attach with proxying signals { // подключаемся, проксируя сигналы }
docker attach --sig-proxy=false nginx
Заключение
Для того, чтобы подключиться к контейнеру, вам потребуются две простые команды Docker -
docker exec
и
docker attach
.
Команда
docker exec
более популярна, так как вы можете запустить новую команду и создать с ее помощью новую оболочку. Вы можете контролировать процессы, файлы и работать так, как будто вы находитесь в вашей локальной среде.
У команды
docker attach
больше ограничений, так как она подключает стандартный ввод и вывод вашего терминала к основному процессу запущенного контейнера и позволяет отслеживать на нем ошибки.
