Перед внедрением в продуктивную среду, любое программное решение необходимо тщательно протестировать, чтобы составить мнение о стабильности его работы, а также о том, насколько оно подходит под потребности предприятия. В случае с почтовым сервером, использование которого завязано на использовании доменных имен и DNS-записей, подготовка среды для нормального тестирования имеет собственную специфику. В рамках данной статьи мы разберемся в том, как создать корректную среду для тестирования Carbonio CE.
![](https://habrastorage.org/getpro/habr/upload_files/067/42a/b9c/06742ab9c9725462ad1cf105b4abebdc.png)
В прошлой статье мы уже писали о том, как устанавливать Carbonio CE на Ubuntu 20.04, и одним из главных системных требований для нормальной работы сервера является наличие корректно сконфигурированных A- и MX-записей в DNS, а также корректно настроенный FQDN сервера.
Для того, чтобы при тестировании Carbonio CE не требовалось вносить изменения в конфигурацию DNS предприятия, можно создать выделенную локальную сеть с собственным DNS-сервером, который поможет обеспечить нормальное тестирование Carbonio CE.
Отметим, что протестировать Carbonio CE в условиях небольшой локальной сети можно просто внеся информацию с доменным именем сервера и его IP-адресом в файл hosts на каждом из устройств, однако когда в тестировании участвует достаточно много компьютеров или в тестах используются мобильные устройства, рациональнее будет создать локальный DNS-сервер.
![](https://habrastorage.org/getpro/habr/upload_files/d9f/7a6/721/d9f7a672124c78838949b15291a09cc9.png)
Установка 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, как это показано на скриншоте
![](https://habrastorage.org/getpro/habr/upload_files/e44/b91/146/e44b9114692d4acc77bdd5fbdfa62969.png)
Для разрешения этого конфликта необходимо отключить службу 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
должен иметь следующий вид:
![](https://habrastorage.org/getpro/habr/upload_files/e29/79e/f4a/e2979ef4a6d7d0265159b0a1e97ce33a.png)
Перед непосредственной настройкой dnsmasq выясните данные вашего интернет-соединения при помощи команды sudo ifconfig -a
. В ее выводе будет содержаться информация о названии интерфейса и присвоенном IP-адресе. В нашем случае серверу присвоен статический IP-адрес, который не будет меняться со временем. О том, как этого добиться, мы расскажем ниже.
![](https://habrastorage.org/getpro/habr/upload_files/58b/884/13d/58b88413dfbacaa09d5994dd4916728e.png)
Настройка 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
![](https://habrastorage.org/getpro/habr/upload_files/027/7a3/950/0277a3950138f7c2e66168e7b076cb9f.png)
С помощью данных настроек мы ограничиваем список ip-адресов и сетевых интерфейсов которые сканирует dnsmasq, а также присваиваем доменное имя локальным IP-адресам. Также мы указали адреса DNS-серверов от Google, чтобы dnsmasq передавал на них запросы, которые не соответствуют настроенным нами правилам и создали обязательную для сервера Carbonio CE MX-запись.
Для проверки корректности заполнения файла конфигурации запустите команду dnsmasq --test
. Если ошибок в синтаксисе файла нет, появится соответствующее сообщение:
![](https://habrastorage.org/getpro/habr/upload_files/b12/467/b50/b12467b5095a4bc581ccb41c2f92a738.png)
После этого нужно настроить систему таким образом, чтобы все запросы в первую очередь передавались в dnsmasq. Для этого необходимо отредактировать файл /etc/resolv.conf
. Сперва создадим его резервную копию sudo cp /etc/resolv.conf /etc/resolv.conf.backup
. А затем откроем его в текстовом редакторе sudo nano /etc/resolv.conf и приведем его к следующему виду:
![](https://habrastorage.org/getpro/habr/upload_files/e22/ecc/7cf/e22ecc7cfd46439d58465191d7efecdd.png)
После сохранения изменений, защитите файл от перезаписи с помощью команды 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
, чтобы добавить записи о других узлах внутренней инфраструктуры. Каждому серверу должна соответствовать своя строка в файле
![](https://habrastorage.org/getpro/habr/upload_files/02b/24f/59f/02b24f59f035e87704b800a9335ce155.png)
Сохраните измененный файл и перезапустите dnsmasq с помощью команды sudo systemctl restart dnsmasq
. Проверить корректность настройки DNS можно с помощью команды dig carbonio.example.ru
и dig example.ru
.
![](https://habrastorage.org/getpro/habr/upload_files/ac6/40a/b5e/ac640ab5eb4eeb3dbee1b8850a51a7b3.png)
В дальнейшем необходимо просто указывать адрес сервера dnsmasq в качестве основного DNS в настройках подключения других компьютеров в сети, чтобы обеспечить локальную сеть собственной системой доменных имен.
Настройка статического IP-адреса на сервере Carbonio CE
В случае, если вы не используете для создания локальной сети роутер, который способен присваивать статический IP-адрес на основании MAC-адреса сетевого адаптера, есть возможность настроить получение сетевого адреса прямо в Ubuntu 20.04.
При использовании Ubuntu с графическим интерфейсом, для этих целей можно воспользоваться настройками системы. Для этого нажмите на значок сетевого подключения в правом верхнем углу рабочего стола, выберите активное сетевое подключение и кликните на “Параметры соединения”.
![](https://habrastorage.org/getpro/habr/upload_files/619/4e0/f3c/6194e0f3c4c59a0f5fddc165bea9c5cc.png)
Нажмите на значок “Параметры” чтобы открыть окно с настройками сети.
![](https://habrastorage.org/getpro/habr/upload_files/8e5/7a4/23d/8e57a423d36ab13e6ad74ded8c0fd163.png)
Перейдите на вкладку IPv4 и выберите метод получения IP-адреса Вручную и введите IP-адрес, который должен быть присвоен серверу Carbonio CE, а также в качестве DNS-сервера укажите адрес сервера dnsmasq.
![](https://habrastorage.org/getpro/habr/upload_files/982/c09/e46/982c09e463cabda745b9c86df2a92a84.png)
После этого выключите и вновь включите интернет-соединение, чтобы сетевой интерфейс получил заданный ранее IP-адрес.
Также статический IP-адрес можно настроить в консоли. Для этого сперва потребуется выяснить название сетевого интерфейса и действующий IP-адрес. Делается это с помощью установки утилиты net-tools и команды sudo ifconfig -a
.
![](https://habrastorage.org/getpro/habr/upload_files/8eb/268/bcc/8eb268bccffbe8ca8f7b9e1b470a29b3.png)
В нашем случае имеется один проводной сетевой интерфейс и для того, чтобы получить статический ip-адрес, необходимо его соответствующим образом настроить. Настройки сетевых интерфейсов хранятся в папке /etc/netplan
в файлах с расширением .yaml. Для настройки нашего сетевого интерфейса перейдем в данную папку и выясним, какие файлы там находятся:
cd /etc/netplan
ls
![](https://habrastorage.org/getpro/habr/upload_files/93b/512/c10/93b512c10eb1431a80b2d80b247572e2.png)
Откройте файл .yaml в текстовом редакторе sudo nano /etc/netplan/01-network-manager-all.yaml
. Изначально содержимое файла будет выглядеть следующим образом:
![](https://habrastorage.org/getpro/habr/upload_files/d1d/eb1/9eb/d1deb19ebe0c670c0b5fdb121695bd7a.png)
Необходимо привести его к следующему виду с указанием вашего сетевого интерфейса, IP-адреса и сервера DNS:
![](https://habrastorage.org/getpro/habr/upload_files/010/d98/a9c/010d98a9c935a79ebe29e6dba30066dd.png)
Файл настроек netplan чрезвычайно чувствителен к отступам, которые нужно делать исключительно пробелами. Внимательно следите за ними, иначе настройки просто не применятся.
В случае, если у вас несколько сетевых интерфейсов, итоговый файл будет выглядеть следующим образом:
![](https://habrastorage.org/getpro/habr/upload_files/a59/613/395/a59613395fc95a0e9b4487d27d9b8991.png)
После того как все изменения внесены, необходимо сохранить файл и применить изменения с помощью команды netplan apply
. После этого вновь введите команду sudo ifconfig -a
, чтобы удостовериться в том, что изменения вступили в силу.
Эксклюзивный дистрибьютор Zextras SVZcloud. По вопросам тестирования и приобретения Zextras Carbonio обращайтесь на электронную почту: sales@svzcloud.ru