Настройка тестовой среды для Carbonio Community Edition

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Перед внедрением в продуктивную среду, любое программное решение необходимо тщательно протестировать, чтобы составить мнение о стабильности его работы, а также о том, насколько оно подходит под потребности предприятия. В случае с почтовым сервером, использование которого завязано на использовании доменных имен и 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.

Источник: https://habr.com/ru/company/Zextras/blog/652727/


Интересные статьи

Интересные статьи

Эта заметка посвящена установке Eclipse и Visual Studio Code под Linux и Windows. Особенность состоит в том, что для всех IDE и для работы в консоли используется одна и та же установка esp-idf.
До Spring Boot разработки вам нужно сделать несколько вещей, чтобы настроить Spring Data JPA . Вам не только нужно было аннотировать свои классы сущностей с помощью аннотац...
Вначале была функция и вызывали ее в одном месте. Потом мы захотели вызвать ее в другом месте с новыми возможностями и обновили ее. Нам эта ф-ия так понравилась, что мы вызвали ее в третьем месте...
Тема статьи навеяна результатами наблюдений за методикой создания шаблонов различными разработчиками, чьи проекты попадали мне на поддержку. Порой разобраться в, казалось бы, такой простой сущности ка...