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