Перед внедрением в продуктивную среду, любое программное решение необходимо тщательно протестировать, чтобы составить мнение о стабильности его работы, а также о том, насколько оно подходит под потребности предприятия. В случае с почтовым сервером, использование которого завязано на использовании доменных имен и DNS-записей, подготовка среды для нормального тестирования имеет собственную специфику. В рамках данной статьи мы разберемся в том, как создать корректную среду для тестирования Carbonio CE.

В прошлой статье мы уже писали о том, как устанавливать Carbonio CE на Ubuntu 20.04, и одним из главных системных требований для нормальной работы сервера является наличие корректно сконфигурированных A- и MX-записей в DNS, а также корректно настроенный FQDN сервера. 

Для того, чтобы при тестировании Carbonio CE не требовалось вносить изменения в конфигурацию DNS предприятия, можно создать выделенную локальную сеть с собственным DNS-сервером, который поможет обеспечить нормальное тестирование Carbonio CE.

Отметим, что протестировать Carbonio CE в условиях небольшой локальной сети можно просто внеся информацию с доменным именем сервера и его IP-адресом в файл hosts на каждом из устройств, однако когда в тестировании участвует достаточно много компьютеров или в тестах используются мобильные устройства, рациональнее будет создать локальный DNS-сервер. 

Установка DNSMASQ

На выделенном сервере с Ubuntu 20.04 установим dnsmasq - легковесный DNS-сервер, который позволяет организовать внутреннюю систему доменных имен в локальной сети. Также установим net-tools, набор инструментов для работы с сетью. Делается это при помощи команд sudo apt-get install dnsmasq и sudo apt-get install net-tools.

Принцип работы dnsmasq заключается в том, что он будет перехватывать DNS-запросы от узлов в локальной сети, а затем сравнивать их с записями в собственном конфигурационном файле, а затем с записями в /etc/hosts. В случае обнаружения совпадения, он в ответ на запрос от клиента направит указанный администратором IP-адрес. В случае отсутствия совпадений dnsmasq просто перенаправит запрос в глобальный DNS и вернет клиенту IP-адрес, хранящийся там. Благодаря этому администратор может создать в локальной сети собственную систему доменных имен, при этом не изолируя сеть от внешнего интернета.

Установка dnsmasq приведет к конфликту с системной службой systemd-resolved, а также к конфликту на порте 53 UDP, как это показано на скриншоте

Для разрешения этого конфликта необходимо отключить службу systemd-resolved.. Делается с помощью следующих команд:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

После этого проверьте статус dnsmasq при помощи команды systemctl status dnsmasq. Если служба остановлена, запустите ее при помощи команды sudo systemctl start dnsmasq и поставьте ее в автозапуск с помощью команды sudo systemctl enable dnsmasq.

В результате вывод команды systemctl status dnsmasq должен иметь следующий вид: 

Перед непосредственной настройкой dnsmasq выясните данные вашего интернет-соединения при помощи команды sudo ifconfig -a. В ее выводе будет содержаться информация о названии интерфейса и присвоенном IP-адресе. В нашем случае серверу присвоен статический IP-адрес, который не будет меняться со временем. О том, как этого добиться, мы расскажем ниже.

Настройка DNSMASQ

Для настройки dnsmasq будем использовать файл конфигурации /etc/dnsmasq.conf. Перед внесением изменений следует его зарезервировать с помощью команды sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup. Затем откроем файл настроек sudo nano /etc/dnsmasq.conf.

Он содержит множество закомментированных строк, содержащих информацию о синтаксисе настроек. Нам потребуется добавить в /etc/dnsmasq.conf следующие строки:

listen-address=::1,127.0.0.1,172.26.71.55
interface=eth0
domain=example.ru
address=/dnsmasq.example.ru/127.0.0.1
address=/dnsmasq.example.ru/172.26.71.55
server=8.8.8.8
server=4.4.4.4
mx-host=example.ru,carbonio.example.ru,10

С помощью данных настроек мы ограничиваем список ip-адресов и сетевых интерфейсов которые сканирует dnsmasq, а также присваиваем доменное имя локальным IP-адресам. Также мы указали адреса DNS-серверов от Google, чтобы dnsmasq передавал на них запросы, которые не соответствуют настроенным нами правилам и создали обязательную для сервера Carbonio CE MX-запись.

Для проверки корректности заполнения файла конфигурации запустите команду dnsmasq --test. Если ошибок в синтаксисе файла нет, появится соответствующее сообщение:

После этого нужно настроить систему таким образом, чтобы все запросы в первую очередь передавались в dnsmasq. Для этого необходимо отредактировать файл /etc/resolv.conf. Сперва создадим его резервную копию sudo cp /etc/resolv.conf /etc/resolv.conf.backup. А затем откроем его в текстовом редакторе sudo nano /etc/resolv.conf и приведем его к следующему виду: 

После сохранения изменений, защитите файл от перезаписи с помощью команды sudo chattr +i /etc/resolv.conf. Это не позволит программе NetworkManager автоматически перезаписать данный файл и откатить измененные ранее настройки.

Также для корректной работы DNS потребуется открыть соответствующие сетевые порты на сервере с Ubuntu 20.04. На ubuntu 18.04 делать это необязательно. Для этого воспользуемся встроенным файрволом Ubuntu - UFW. Для открытия соответствующих портов введите последовательно:

sudo ufw allow 53/tcp

sudo ufw allow 53/udp

sudo ufw enable

Откройте файл /etc/hosts, чтобы добавить записи о других узлах внутренней инфраструктуры. Каждому серверу должна соответствовать своя строка в файле

Сохраните измененный файл и перезапустите dnsmasq с помощью команды sudo systemctl restart dnsmasq. Проверить корректность настройки DNS можно с помощью команды dig carbonio.example.ru и dig example.ru.

В дальнейшем необходимо просто указывать адрес сервера dnsmasq в качестве основного DNS в настройках подключения других компьютеров в сети, чтобы обеспечить локальную сеть собственной системой доменных имен.

Настройка статического IP-адреса на сервере Carbonio CE

В случае, если вы не используете для создания локальной сети роутер, который способен присваивать статический IP-адрес на основании MAC-адреса сетевого адаптера, есть возможность настроить получение сетевого адреса прямо в Ubuntu 20.04.

При использовании Ubuntu с графическим интерфейсом, для этих целей можно воспользоваться настройками системы. Для этого нажмите на значок сетевого подключения в правом верхнем углу рабочего стола, выберите активное сетевое подключение и кликните на “Параметры соединения”.

Нажмите на значок “Параметры” чтобы открыть окно с настройками сети.

Перейдите на вкладку IPv4 и выберите метод получения IP-адреса Вручную и введите IP-адрес, который должен быть присвоен серверу Carbonio CE, а также в качестве DNS-сервера укажите адрес сервера dnsmasq.

После этого выключите и вновь включите интернет-соединение, чтобы сетевой интерфейс получил заданный ранее IP-адрес.

Также статический IP-адрес можно настроить в консоли. Для этого сперва потребуется выяснить название сетевого интерфейса и действующий IP-адрес. Делается это с помощью установки утилиты net-tools и команды sudo ifconfig -a.

В нашем случае имеется один проводной сетевой интерфейс и для того, чтобы получить статический ip-адрес, необходимо его соответствующим образом настроить. Настройки сетевых интерфейсов хранятся в папке /etc/netplan в файлах с расширением .yaml. Для настройки нашего сетевого интерфейса перейдем в данную папку и выясним, какие файлы там находятся:

cd /etc/netplan
ls

Откройте файл .yaml в текстовом редакторе sudo nano /etc/netplan/01-network-manager-all.yaml. Изначально содержимое файла будет выглядеть следующим образом:

Необходимо привести его к следующему виду с указанием вашего сетевого интерфейса, IP-адреса и сервера DNS:

Файл настроек netplan чрезвычайно чувствителен к отступам, которые нужно делать исключительно пробелами. Внимательно следите за ними, иначе настройки просто не применятся.

В случае, если у вас несколько сетевых интерфейсов, итоговый файл будет выглядеть следующим образом:

После того как все изменения внесены, необходимо сохранить файл и применить изменения с помощью команды netplan apply. После этого вновь введите команду sudo ifconfig -a, чтобы удостовериться в том, что изменения вступили в силу.

По всем вопросам, связанным c Zextras Suite и коммерческой версией Carbonio, вы можете обратиться к Представителю компании «Zextras» Екатерине Триандафилиди по электронной почте ekaterina.triandafilidi@zextras.com.

Комментарии (3)


  1. alexEtse
    24.02.2022 10:30

    Для этого сперва потребуется выяснить название сетевого интерфейса и действующий IP-адрес. Делается это с помощью установки утилиты net-tools и команды sudo ifconfig -a.

    Для этого необходимо отредактировать файл /etc/resolv.conf

    А что, с современными методами администрирования Linux, без костылей и legacy, пишущие для данного блога авторы не знакомы?

    Настолько надо выполнять план по публикациям (или что там еще), что даже не важно, что в них написано? (net-tools, кстати, это не утилита, а пакет, утилита - это ifconfig)

    Или вам там не разрешили критиковать Zimbra даже несмотря на появление Carbonio?.. Для Zimbra по крайней мере legacy часть цитированного выше неочевидным образом оправдана, хотя не знаю, насколько это актуально для нового продукта...


    1. Zextras Автор
      24.02.2022 10:44

      Добрый день, в статье описан процесс подготовки среды для полноценного тестирования Carbonio Community Edition. К Zimbra эта статья не имеет никакого отношения.


      1. alexEtse
        24.02.2022 10:54

        Ну так и я написал "не знаю, насколько это актуально для нового продукта" (под которым по контексту подразумевается Carbonio), перед этим сказав, что для Zimbra часть изложенного в статье еще имеет некоторый смысл.

        А имеет оно смысл потому, что их инсталлятор то еще legacy, однако в нём для новых дистрибутивов Linux в зависимостях это не учтено и пакеты для обратной совместимости сами не ставятся, что может привести к "нежданчикам".

        Если же с новым продуктом нет нужды заморачиваться с legacy - то описанное в статье нынче делается по-другому, не говоря уж о костылях, без которых и в старых-то дистрибутивах можно было обходиться, если делать по стандарту.