В гипервизоре ESXi имеется встроенный Firewall. В нём предустановлен ряд правил, удовлетворяющих разработанному функционалу. Однако, имеющиеся правила не всегда покрывают все необходимые порты, иногда требуется дополнительный функционал.
Создание собственных правил
Процесс создания собственных правил описан здесь:
https://kb.vmware.com/s/article/2008226
Начиная с ESXi 7.0 создавать собственные наборы правил Firewall запретили. При этом предложили обходной способ:
- Скопировать файл с правилами на отдельный datastore.
- Добавить свои изменения в скопированный файл.
- В /etc/rc.local.d/local.sh добавить команду на копирование с заменой основного файла.
- Чтобы принудительно сохранить эту команду при перезагрузках хоста, команда должна быть добавлена вручную в /etc/rc.local.d/local.sh файл на сервере ESXi.
Это настолько кривое решение, что даже пробовать его не хочется. Тем более нужно отдельное хранилище.
Альтернатива — создание собственного VIB пакета для внесения изменений в Firewall. Но это уже другая история.
VIB пакет для ESXi 7.0 firewall
Создадим собственный VIB пакет для дополнительных правил Firewall. Для сборки нам понадобится пакет:
ESXi Community Packaging Tools 2.4
Добавлять будем два новых правила:
- Входящее на TCP 2463
- Исходящее на TCP 25
Создаём TGZ файл
Создаём структуру каталогов, она очень простая, потому как нам нужно добавить всего один файл. У меня это будет /etc/vmware/firewall/fw-lsa.xml.
Редактируем:
<!-- Firewall configuration information for fw LSA -->
<ConfigRoot>
<service id='0000'>
<id>LSA UI</id>
<rule id='0000'>
<direction>inbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>2463</port>
</rule>
<enabled>false</enabled>
<required>false</required>
</service>
<service id='0001'>
<id>LSA Mail</id>
<rule id='0000'>
<direction>outbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>25</port>
</rule>
<enabled>false</enabled>
<required>false</required>
</service>
</ConfigRoot>
Структуру XML можно посмотреть в ESXi. Идентификаторы сервисов должны быть уникальными.
Засовываем проект в Linux, это необходимо для правильной настройки прав доступа к файлам. Я воспользуюсь WSL2 для Windows, только мне придётся скопировать проект в home, т.к. по умолчанию права на все файлы примонтированного диска C:\ — 777. Назначаем созданному XML файлу права 444:
chmod 444 ./fw-lsa.xml
Переходим в корневую папку проекта и собираем TGZ архив:
tar cvzf ../fw-lsa.tgz *
TGZ файл получен. Дальше с ним буду работать из Windows.
Создаём VIB файл с помощью tgz2vib5.cmd
Переходим к ESXi Community Packaging Tools 2.4.
Чтобы создать файл VIB из нашего файла TGZ, запускаем tgz2vib5.cmd.
Скармливаем утилите наш TGZ файл, указываем рабочую директорию. Заполняем все поля, не забываем указать версию, VIB type — bootbank. Очень удобно, что имеется готовый пресет для firewall, который за нас проставит нужные галки. Acceptance Level для правила firewall достаточно указать "community". Run!
VIB пакет собрался.
Создаём ZIP файл Offline Bundle с помощью tgz2vib5.cmd
В принципе, достаточно и VIB файла. Но я собираюсь с вами поделиться готовым пакетом, поэтому соберу Offline Bundle.
Чтобы создать Offline Bundle из нашего файла VIB, запускаем vib2zip.cmd:
Указываем директорий с файлом VIB, рабочую директорию. Заполняем поля, устанавливаем максимальный уровень совместимости. Run!
Offline Bundle собрался.
Установка Offline Bundle
Для тестирования перевожу хост в Maintenance Mode.
Копируем ZIP пакет на хост в папку /tmp.
Запускаем службу SSH на хосте, коннектимся. Проверяем содержимое папки tmp.
ZIP файл присутствует. Разрешаем установку программ и драйверов со сторонними сертификатами. Для этого перед установкой выполняем команду:
esxcli software acceptance set --level=CommunitySupported
Устанавливаем пакет:
esxcli software vib install -d /tmp/fw-lsa-1.0-2-offline_bundle.zip
Пакет установлен. В списке установленных VIB пакетов имеется наш новый пакет.
esxcli software vib list | grep lsa
Наш XML файл появился в папке /etc/vmware/firewall.
Теперь правило firewall никуда не должно пропасть после перезагрузки хоста. Проверяю — перезагружаю хост.
Configure → System → Firewall → Edit. У нас появились два новых правила:
- LSA Mail
- LSA UI
Включаем их галками. OK.
Входящее на TCP 2463:
Исходящее на TCP 25:
Мы добились того, чего хотели.
А зачем оно?
Собственно, пакет я назвал fw-lsa. Скачать его можно в Сборке для VMware. Пакет добавляет два правила firewall, которые нужны для работы LSA:
Установка LWA VMware на ESXi 7.0
Первое правило разрешает нам открывать страничку LSA UI, второе позволяет отправлять уведомления на внешний почтовый сервер.