Перейти к основному содержанию

ESXi 7.0 Firewall — добавляем правило для исходящей почты

Firewall

В гипервизоре ESXi имеется встроенный Firewall. В нём предустановлен ряд правил, удовлетворяющих разработанному функционалу. Однако, имеющиеся правила не всегда покрывают все необходимые порты, иногда требуется дополнительный функционал.

ESXi 7.0 Firewall

Понадобилось мне отправлять почту с ESXi...

Создание собственных правил

Процесс создания собственных правил описан здесь:

https://kb.vmware.com/s/article/2008226

Начиная с ESXi 7.0 создавать собственные наборы правил Firewall запретили. При этом предложили обходной способ:

  1. Скопировать файл с правилами на отдельный datastore.
  2. Добавить свои изменения в скопированный файл.
  3. В /etc/rc.local.d/local.sh добавить команду на копирование с заменой основного файла.
  4. Чтобы принудительно сохранить эту команду при перезагрузках хоста, команда должна быть добавлена вручную в /etc/rc.local.d/local.sh файл на сервере ESXi.

Это настолько кривое решение, что даже пробовать его не хочется. Тем более нужно отдельное хранилище.

Альтернатива — создание собственного VIB пакета для внесения изменений в Firewall.

VIB пакет для ESXi 7.0 firewall

Создадим собственный VIB пакет для нового правила Firewall. Для сборки нам понадобится пакет:

ESXi Community Packaging Tools 2.4

Добавлять будем правило для исходящей почты:

  • Исходящее на TCP 25

Создаём TGZ файл

Создаём структуру каталогов, она очень простая, потому как нам нужно добавить всего один файл. У меня это будет /etc/vmware/firewall/fw-mail.xml.

mail

Редактируем:

<!-- Firewall configuration information for fw Mail -->
<ConfigRoot>
  <service id='0000'>
    <id>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. Идентификаторы сервисов должны быть уникальными.

mail

Засовываем проект в Linux, это необходимо для правильной настройки прав доступа к файлам. Я воспользуюсь WSL2 для Windows, только мне придётся скопировать проект в home, т.к. по умолчанию права на все файлы примонтированного диска C:\ — 777. Назначаем созданному XML файлу права 444:

chmod 444 ./etc/vmware/firewall/fw-mail.xml

mail

Переходим в корневую папку проекта и собираем TGZ архив:

tar cvzf ../fw-mail.tgz *

mail

TGZ файл получен. Дальше с ним буду работать из Windows.

Создаём VIB файл с помощью tgz2vib5.cmd

Переходим к ESXi Community Packaging Tools 2.4.

firewall

Чтобы создать файл VIB из нашего файла TGZ, запускаем tgz2vib5.cmd.

mail

Скармливаем утилите наш TGZ файл, указываем рабочую директорию. Заполняем все поля, не забываем указать версию, VIB type — bootbank. Очень удобно, что имеется готовый пресет для firewall, который за нас проставит нужные галки. Acceptance Level для правила firewall достаточно указать "community". Run!

mail

VIB пакет собрался.

mail

Создаём ZIP файл Offline Bundle с помощью tgz2vib5.cmd

В принципе, достаточно и VIB файла. Но я собираюсь с вами поделиться готовым пакетом, поэтому соберу Offline Bundle.

firewall

Чтобы создать Offline Bundle из нашего файла VIB, запускаем vib2zip.cmd:

mail

Указываем директорий с файлом VIB, рабочую директорию. Заполняем поля, устанавливаем максимальный уровень совместимости. Run!

mail

Offline Bundle собрался.

mail

Установка Offline Bundle

Для тестирования перевожу хост в Maintenance Mode.

Как установить VIB пакет

Копируем ZIP пакет на хост в папку /tmp.

mail

Запускаем службу SSH на хосте, коннектимся. Проверяем содержимое папки tmp.

mail

ZIP файл присутствует. Разрешаем установку программ и драйверов со сторонними сертификатами. Для этого перед установкой выполняем команду:

esxcli software acceptance set --level=CommunitySupported

Устанавливаем пакет:

esxcli software vib install -d /tmp/fw-mail-1.0-1-offline_bundle.zip

mail

Пакет установлен. В списке установленных VIB пакетов имеется наш новый пакет.

esxcli software vib list | grep mail

mail

Наш XML файл появился в папке /etc/vmware/firewall.

mail

Теперь правило firewall никуда не должно пропасть после перезагрузки хоста. Проверяю — перезагружаю службу firewall.

esxcli network firewall refresh
esxcli network firewall ruleset list | grep Mail

mail

Networking → Firewall rules. У нас появилось новое правило:

  • Mail

mail

Включаем его.

mail

Actions → Enable.

mail

Мы добились того, чего хотели.

А зачем оно?

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

 

Похожие материалы

Удаление CA сертификата с истёкшим сроком действия из хранилища TRUSTED_ROOTS в vCenter 7

С удивлением обнаружил, что в vCenter 7 нет механизма в UI для удаления корневых сертификатов. Добавить можно, но не удалить.

ESXi — Cannot complete login due to an incorrect user name or password

После пяти неверных попыток логина в UI ESXi аккаунт блокируется на 900 секунд. В этот период войти под прежним логином невозможно, получаем ошибку.