Простой VNC-доступ к виртуальным серверам из браузера

Простой VNC-доступ к виртуальным серверам из браузера

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Подключение к виртуальным серверам через браузер и HTML5

Настройка и включение VNC

По-большей части статья рассчитана на ESXi от VMware, поскольку не всегда есть возможность использовать консоль VMware, а доступ к серверу необходим.

Прежде всего останавливаем виртуальную машину, которая будет доступна через VNC.

Изменим настройки виртуальной машины, включив VNC-доступ. Выбираем виртуальную машину –> Edit Settings –> Options –> General –> Configuration Parameters и добавляем несколько параметров:

1
2
3
RemoteDisplay.vnc.enabled = [true|false] - включаем vnc
RemoteDisplay.vnc.port = [port #] - порт, на котором виртуальная машина будет доступна
RemoteDisplay.vnc.password = [password] - пароль к VNC

Configuration Parameters

Configuration Parameters

Если используется ESXi версии 5 и выше, то необходимо открыть порт на файерволе гипервизора. Подключаемся к гипервизору по SSH и создаем новый xml файл, с описанием правила для файервола в /etc/vmware/firewall:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!--rewall configuration information for VNC -->
<ConfigRoot>
<service>
<id>VNC</id>
<rule id='0000'>
<direction>inbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>5901</port>
</rule>
<rule id='0001'>
<direction>outbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>
<begin>0</begin>
<end>65535</end>
</port>
</rule>
<enabled>true</enabled>
<required>false</required>
</service>
</ConfigRoot>

После этого обновляем конфиг файервола и проверяем, появилось ли правило.
(Также это можно сделать из vSphere клиента)

1
esxcli network firewall refresh

Проверяем появилось ли правило

Могут возникнуть трудности после перезагрузки ESXi, если это произойдет, то нового правила не будет. Самое простое решение скопировать XML-файл в хранилище (storage), к которому у хоста есть доступ, а на самом хосте добавить в /etc/rc.local:

1
2
cp location-of-xml-file /etc/vmware/firewall
esxcli network firewall refresh

Теперь к виртуальным машинам есть VNC доступ. Далее будем делать одну точку доступа ко всем серверам, используя Guacamole

Установка и настройка Guacamole

С помощью Guacamole можно получить доступ к консоли серверов из любого браузера, который поддерживает: HTML5 и AJAX

Guacamole умеет работать с VNC и RDP. Установку можно производить на Debian, Ubuntu, CentOS

Установка Guacamole

Установим необходимые компоненты для корректной работы.

1
yum -y install guacd libguac-client-*
1
systemctl enable guacd

В Fedora/Centos установим веб-приложение Guacamole, оно может потянуть за собой Tomcat и прочие Java-зависимости.

1
yum -y install guacamole
1
systemctl enable tomcat

Затем производим конфигурацию в /etc/guacamole/
Подробнее о конфигурации

Запускаем сервисы

1
2
systemctl start guacd
systemctl start tomcat

По умолчанию веб-приложение доступно в браузере по адресу:
http://localhost:8080/guacamole/

Login guacamole

Схема аутентификации по умолчанию читает все настройки из файла конфигурации /etc/guacamole/user-mapping.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<user-mapping>
<authorize username="DevUser" password="devPassword">
<connection name="TestServer1">
<protocol>vnc</protocol>
<param name="hostname">192.168.2.1</param>
<param name="port">5901</param>
<param name="password">VNCPASS</param>
</connection>
<connection name="TestServer1">
<protocol>vnc</protocol>
<param name="hostname">192.168.2.2</param>
<param name="port">5902</param>
<param name="password">VNCPASS</param>
</connection>
</authorize>
</user-mapping>
  • Hostname — это адрес вашего esxi хоста;
  • Password — пароль для VNC.

Теперь входим под пользователем DevUser и подключаемся к виртуальным серверам.