Пора двигаться дальше в практике системного администрирования, сегодня очередная задумка я бы так сказал мой большой проект, я хочу разобрать как управлять корпоративными Android-устройствами (в последствии и Iphone-устройствами). Задумка очень интересна, преследуемая цель поднабраться опыта и повысить себя как специалиста, а еще я планирую всего процесса оформить как видео для моих каналов на Youtube & Rutube.

У меня сейчас есть практические наработки в плане

  • Удаленное управление Windows, Ubuntu системами — это проект Aspia
  • Сетевое развертывание Windows, Ubuntu системы — это проект Fog Project
  • Удаленное управление Android системами (Смартфоны, PDA-терминалы — это Open-Source проект в лице Headwind MDM (Система управления мобильными устройствами с открытым кодом)

•   Устанавливать только то ПО, что разрешено

•   Блокировать функции смартфона

•   Собирать статистику.

текущая же заметка — это оптимизацию всего накопленного опыта на базе системы Ubuntu, а именно Ubuntu 22.04 LTS Server

Я за предварительное тестирование инструментов (именно после этого я имею отлаженную работу внедренного), и в очередной раз буду обкатывать все настройки на своем тестовом гипервизоре в лице связки Debian 12 + Proxmox 8.2.2, создаю виртуальную машину:

  • RAM: 8Gb
  • CPU: 1 sockets, 4 cores (Type: host)
  • Storage: 70Gb (SATA)
  • OS: Ubuntu 22.04 LTS Server
  • IP: 172.33.33.18

ekzorchik@srv-us2204a:~$ sudo hostnamectl hostname srv-hmdm

На заметку: Видео всей заметки у меня на Youtube-канале.
На заметку: Видео всей заметки у меня на Rutube-канале.

Шаг №1: Выполняю на системе скрипт предварительной настройки у Вас как системного администратора это свои наработки, свои не публикую, т.к. по мере его использования что-то да добавляется, убирается, изменяется.

ekzorchik@srv-hmdm:~$ sudo ./tips_ubuntu_22_04_preconfigure_v1.sh

Шаг №2: Перед последующими действиями в систему нужно установить дополнительные пакеты:

На заметку: пакет aapt — Это Android Asset Packaging Tool

На заметку: для проекта Headwind MDM нет совместимости с Tomcat10 если что.

ekzorchik@srv-hmdm:~$ sudo apt install -y aapt libtomcat9-java  postgresql vim certbot unzip net-tools unzip ncdu tomcat9

ekzorchik@srv-hmdm:~$ dpkg -l | grep postgresql
ii  postgresql                             14+238                                           all          object-relational SQL database (supported version)
ii  postgresql-14                          14.24-0ubuntu0.22.04.1                           amd64        The World's Most Advanced Open Source Relational Database
ii  postgresql-client-14                   14.24-0ubuntu0.22.04.1                           amd64        front-end programs for PostgreSQL 14
ii  postgresql-client-common               238                                              all          manager for multiple PostgreSQL client versions
ii  postgresql-common                      238                                              all          PostgreSQL database-cluster manager
ekzorchik@srv-hmdm:~$

Шаг №3: Проверяем, что сам PostgreSQL—сервер запущен, если нет, то запускаем:

ekzorchik@srv-hmdm:~$ sudo systemctl status postgresql
○ postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: inactive (dead)
ekzorchik@srv-hmdm:~$ sudo systemctl restart postgresql.service
ekzorchik@srv-hmdm:~$ sudo systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2026-10-07 11:57:09 MSK; 1s ago
    Process: 43787 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 43787 (code=exited, status=0/SUCCESS)
        CPU: 938us
Oct 07 11:57:09 srv-hmdm systemd[1]: Starting PostgreSQL RDBMS...
Oct 07 11:57:09 srv-hmdm systemd[1]: Finished PostgreSQL RDBMS.
ekzorchik@srv-hmdm:~$

Шаг №4: Настраиваю сервис базы данных Postgres (Базу, Пользователя, Пароль):

ekzorchik@srv-hmdm:~$ sudo su - postgres
postgres@srv-hmdm:~$ psql
psql (14.24 (Ubuntu 14.24-0ubuntu0.22.04.1))
Type "help" for help.
postgres=#
postgres=# CREATE USER us_hmdm WITH PASSWORD 'Aa1234567aA';
CREATE ROLE
postgres=# CREATE DATABASE db_hmdm WITH OWNER=us_hmdm;
CREATE DATABASE
postgres=# \q
postgres@srv-hmdm:~$ exit
logout
ekzorchik@srv-hmdm:~$

Шаг №5: Скачиваю с официального сайта разработчика установочный файл (инсталлятор), распаковываю и устанавливаю в текущую систему:

ekzorchik@srv-hmdm:~$ wget https://h-mdm.com/files/hmdm-5.41-install-ubuntu.zip

тут такой момент, по каким-то причинам Роскомнадзор блокирует доступ к сайту (https://h-mdm.com/ - Загрузить - (Инсталлятор)) и приходится через VPN скачать файл (hmdm-5.41-install-ubuntu.zip) и перенести на эту систему, либо же задействовать связку wget + VPS + 3proxy:

ekzorchik@srv-hmdm:~$ wget -e use_proxy=yes -e https_proxy=http://<WAN_IP>:<PORT>/ -S   https://h-mdm.com/files/hmdm-5.41-install-ubuntu.zip
--2026-10-07 09:47:06--  https://h-mdm.com/files/hmdm-5.41-install-ubuntu.zip
Connecting to <WAN_IP>:<PORT>... connected.
Proxy request sent, awaiting response...
  HTTP/1.1 200 OK
  Date: Wed, 07 Oct 2026 06:47:06 GMT
  Server: Apache/2.4.58 (Ubuntu)
  Last-Modified: Thu, 03 Sep 2026 13:32:03 GMT
  ETag: "2991fd0-65a942d5d1ac0"
  Accept-Ranges: bytes
  Content-Length: 43589584
  Keep-Alive: timeout=5, max=100
  Connection: Keep-Alive
  Content-Type: application/zip
Length: 43589584 (42M) [application/zip]
Saving to: ‘hmdm-5.41-install-ubuntu.zip’
hmdm-5.41-install-ubuntu.zip  100%[===============================================>]  41.57M  1.81MB/s    in 26s
2026-10-07 09:47:32 (1.60 MB/s) - ‘hmdm-5.41-install-ubuntu.zip’ saved [43589584/43589584]
ekzorchik@srv-hmdm:~$
ekzorchik@srv-hmdm:~$ unzip hmdm-5.41-install-ubuntu.zip

Что содержится в архиве:

ekzorchik@srv-hmdm:~$ ls -l hmdm-install/
total 42640
-rw-r--r-- 1 ekzorchik ekzorchik      892 Mar  4  2020 INSTALL.txt
-rw-r--r-- 1 ekzorchik ekzorchik    11523 Jul 12  2019 LICENSE
-rw-r--r-- 1 ekzorchik ekzorchik      461 Dec 15  2021 NOTICE
-rw-r--r-- 1 ekzorchik ekzorchik      342 Jul 16  2019 TROUBLESHOOTING.txt
-rwxr-xr-x 1 ekzorchik ekzorchik     2390 Nov  3  2021 cpu_monitor.sh
-rw-rw-r-- 1 ekzorchik ekzorchik 43593184 Sep  3 16:40 hmdm-5.41.1-os.war
-rwxr-xr-x 1 ekzorchik ekzorchik    19463 Sep  3 16:27 hmdm_install.sh
drwxr-xr-x 4 ekzorchik ekzorchik     4096 Oct  5  2025 install
-rwxr-xr-x 1 ekzorchik ekzorchik      182 May 19  2021 iptables-tomcat.sh
-rwxr-xr-x 1 ekzorchik ekzorchik     2673 Jun 20  2024 letsencrypt-ssl.sh
-rwxr-xr-x 1 ekzorchik ekzorchik      392 Mar 24  2025 logrotate.sh
-rwxr-xr-x 1 ekzorchik ekzorchik     1057 May 15  2024 update-web-app.sh
ekzorchik@srv-hmdm:~$

Перехожу в распакованный каталог и запускаю процесс установки:

ekzorchik@srv-hmdm:~$ cd hmdm-install/
ekzorchik@srv-hmdm:~/hmdm-install$
ekzorchik@srv-hmdm:~/hmdm-install$ sudo ./hmdm_install.sh
Please choose the installation language (en/ru) [en]: ru
PostgreSQL host [localhost]: localhost
PostgreSQL port [5432]: 5432
PostgreSQL database [hmdm]: db_hmdm
PostgreSQL user [hmdm]: us_hmdm
PostgreSQL password: Aa1234567aA
Headwind MDM storage directory [/var/lib/tomcat9/work]: /var/lib/tomcat9/work — нажимаю клавишу "ENTER"
Headwind MDM scripts directory [/opt/hmdm]: /opt/hmdm — нажимаю клавишу "ENTER"
Protocol (http|https) [https]: изменяю на http и нажимаю клавишу "ENTER"
Domain name or public IP (e.g. example.com):172.33.33.18 и нажимаю клавишу "ENTER"
Port (e.g. 8080, leave empty for default ports 80 or 443): нажимаю клавишу "ENTER"
Project path on server (e.g. /hmdm) or ROOT: ROOT нажимаю клавишу "ENTER"
Setup SMTP credentials [Y/n]?: выбираю "n" и нажимаю клавишу "ENTER"
Ready to install!
Location on server: /var/lib/tomcat9/work
URL: http://172.33.33.18
Is this information correct [Y/n]? Y — Подтверждаю выбор символом "y" и нажимаю клавишу "ENTER"
Waiting for undeploying the previous version
……….
Tomcat config file created: /var/lib/tomcat9/conf/Catalina/localhost/ROOT.xml
Deploying hmdm-5.41.1-os.war to Tomcat: /var/lib/tomcat9/webapps/ROOT.war
…………………………………………………………………………………………………………
ERROR: failed to deploy WAR file!
Please check /var/lib/tomcat9/logs/catalina.out for details.
ekzorchik@srv-hmdm:~/hmdm-install$

Так почему не установилось.

, смотрю лог catalina.out

ekzorchik@srv-hmdm:~/hmdm-install$ sudo grep -iE "SEVERE|ERROR|Exception|Caused by|failed|Unable" /var/lib/tomcat9/logs/catalina.out | tail -n 100

grep: /var/lib/tomcat9/logs/catalina.out: No such file or directory

ekzorchik@srv-hmdm:~/hmdm-install$

ekzorchik@srv-hmdm:~/hmdm-install$ sudo systemctl status tomcat9 --no-pager -l

○ tomcat9.service - Apache Tomcat 9 Web Application Server

     Loaded: loaded (/lib/systemd/system/tomcat9.service; enabled; vendor preset: enabled)

     Active: inactive (dead)

       Docs: https://tomcat.apache.org/tomcat-9.0-doc/index.html

ekzorchik@srv-hmdm:~/hmdm-install$

ekzorchik@srv-hmdm:~/hmdm-install$ sudo systemctl restart tomcat9.service && sudo systemctl status tomcat9.service

● tomcat9.service - Apache Tomcat 9 Web Application Server

     Loaded: loaded (/lib/systemd/system/tomcat9.service; enabled; vendor preset: enabled)

     Active: active (running) since Wed 2026-10-07 12:18:45 MSK; 8ms ago

       Docs: https://tomcat.apache.org/tomcat-9.0-doc/index.html

    Process: 44381 ExecStartPre=/usr/libexec/tomcat9/tomcat-update-policy.sh (code=exited, status=0/SUCCESS)

   Main PID: 44385 ((sh))

      Tasks: 1 (limit: 9384)

     Memory: 768.0K

        CPU: 8ms

     CGroup: /system.slice/tomcat9.service

             └─44385 "(sh)"

Oct 07 12:18:45 srv-hmdm systemd[1]: Starting Apache Tomcat 9 Web Application Server...

Oct 07 12:18:45 srv-hmdm systemd[1]: Started Apache Tomcat 9 Web Application Server.

ekzorchik@srv-hmdm:~/hmdm-install$

Снова запускаю установочный скрипт:

ekzorchik@srv-hmdm:~/hmdm-install$ sudo ./hmdm_install.sh

PostgreSQL host [localhost]: localhost

PostgreSQL port [5432]: 5432

PostgreSQL database [hmdm]: db_hmdm

PostgreSQL user [hmdm]: us_hmdm

PostgreSQL password: Aa1234567aA

The database is already setup.

To re-deploy Headwind MDM, the database needs to be cleared.

Clear the database? ALL DATA WILL BE LOST!

Type «erase» to clear the database and continue setup:

набираем "erase" и нажимаю клавишу "ENTER"

Deployment successful, initializing the database…

======================================

Minimal installation of Headwind MDM has been done!

At this step, you can open in your web browser:

http://172.33.33.18:8080

Login: admin:admin

======================================

Setup HTTPS via LetsEncrypt [Y/n]?: n

Use iptables to redirect port 443 to 8443 [Y/n]?: n

Move required APKs from h-mdm.com to your server [Y/n]?: Y

Downloading https://h-mdm.com/files/hmdm-6.39-os.apk…

—2026-10-07 12:22:05—  https://h-mdm.com/files/hmdm-6.39-os.apk

Resolving h-mdm.com (h-mdm.com)… 159.203.179.23

Connecting to h-mdm.com (h-mdm.com)|159.203.179.23|:443… connected.

HTTP request sent, awaiting response… 200 OK

Length: 6531138 (6.2M) [application/vnd.android.package-archive]

Saving to: ‘hmdm-6.39-os.apk’

Блин, но в скрипте идет скачивание пакетов с официального сайта, но т.к. сайт у меня открывается только через VPN то его нужно поправить на работу с ним.

ekzorchik@srv-hmdm:~/hmdm-install$ nano +478 hmdm_install.sh

wget $FILE

заменяю на

#wget $FILE

wget -e use_proxy=yes -e https_proxy=http://<WAN_IP>:<PORT>/ -S $FILE

Запускаю установщик заново

Minimal installation of Headwind MDM has been done!

At this step, you can open in your web browser:

http://172.33.33.18:8080

Login: admin:admin

======================================

Setup HTTPS via LetsEncrypt [Y/n]?: n

Use iptables to redirect port 443 to 8443 [Y/n]?: n

Move required APKs from h-mdm.com to your server [Y/n]?: Y

и файлы пошли скачиваться

https://h-mdm.com/files/hmdm-6.39-os.apk

https://h-mdm.com/files/pager-1.02.apk.

https://h-mdm.com/files/phoneproxy-1.02.apk

https://h-mdm.com/files/LauncherRestarter-1.04.apk.

======================================

Headwind MDM installation is completed!

To access your web panel, open in the web browser:

http://172.33.33.18

Login: admin:admin

======================================

ekzorchik@srv-hmdm:~/hmdm-install$

ekzorchik@srv-hmdm:~/hmdm-install$ cd ~/

ekzorchik@srv-hmdm:~$

На заметку: Скачанные с сайта apk файлы после располагаются в системе по пути /var/cache/tomcat9/files

ekzorchik@srv-hmdm:~$ sudo ls -l /var/cache/tomcat9/files

total 12040

-rw-r--r-- 1 tomcat tomcat 6531138 Sep  3 13:43 hmdm-6.39-os.apk

-rw-r--r-- 1 tomcat tomcat 1653792 Nov 20  2019 LauncherRestarter-1.04.apk

-rw-r--r-- 1 tomcat tomcat 2785022 May  8  2022 pager-1.02.apk

-rw-r--r-- 1 tomcat tomcat 1354991 Aug 21  2019 phoneproxy-1.02.apk

ekzorchik@srv-hmdm:~$

Вроде как все.

На заметку: т.к. средствами iptables в мастере установки я не дал добро сделать перенаправление при обращении на 8080 -> 80, то установщик написал, что Web-панель доступна на 80 порту, но увы это не так.

Шаг №6: Проверяю что система слушает порты развернутого сервиса выше:

ekzorchik@srv-hmdm:~$ ss -tulpn

Netid     State      Recv-Q     Send-Q                 Local Address:Port           Peer Address:Port     Process
udp       UNCONN     0          0                      127.0.0.53%lo:53                  0.0.0.0:*
udp       UNCONN     0          0                 172.33.33.18%ens18:68                  0.0.0.0:*
udp       UNCONN     0          0                          127.0.0.1:323                 0.0.0.0:*
udp       UNCONN     0          0                              [::1]:323                    [::]:*
tcp       LISTEN     0          244                        127.0.0.1:5432                0.0.0.0:*
tcp       LISTEN     0          128                          0.0.0.0:22                  0.0.0.0:*
tcp       LISTEN     0          4096                   127.0.0.53%lo:53                  0.0.0.0:*
tcp       LISTEN     0          4096           [::ffff:172.33.33.18]:31000                     *:*
tcp       LISTEN     0          100                                *:8080                      *:*
tcp       LISTEN     0          128                             [::]:22                     [::]:*
ekzorchik@srv-hmdm:~$

Шаг №7: Запускаю браузер с административной системы под управлением Windows 10 Pro, к примеру, Google Chrome и в строке URL адреса указываю, URL: http://172.33.33.18:8080 и вижу, окно ввода аутeнтификационных данных в "Headwind MDM"

Вижу окно входа в Headwind MDM

в качестве связки имя пользователя и пароль использую те что предопределены в скрипте установки

  • Имя пользователя или email: admin
  • Пароль: admin

Авторизуюсь первый раз в Headwind MDM с использованием связки admin&admin.

и нажимаю "Войти", при первом входе получаю запрос от системы на тему изменения дефолтного пароля, изменяю

  • Новый пароль: указываю к примеру, 712mbddr@
  • Подтверждение: подтверждаю, 712mbddr@

Устанавливаю произвольный пароль, к примеру 712mbddr@

и нажимаю "Установить пароль"

и вот я внутри Web-панели управления Headwind MDM (Оболочка для корпоративных Android-устройств Версия 5.41.1)

Я внутри Web-панели управления Headwind MDM (Оболочка для корпоративных Android-устройств Версия 5.41.1)

Если через правый верхний угол перейти в admin - "о приложении", то по дефолту и для бесплатного использования доступны следующие плагины:

  • Push-сообщения
  • Аудит
  • Детальная информация
  • Другие плагины
  • Журналы
  • Сообщения

по такому же принципу переходим в admin - "Проверить наличие обновлений" и снимаем галочки

  • Автоматически обновлять мобильные приложения
  • Отправить статистику использования поставщику услуг для повышения производительности системы

и нажимаю "Обновить"

Возвращаюсь на главный экран путем перехода кликнув в левом верхнем углу на название: "Headwind MDM"

Шаг №8: Устройства на базе Android подключаются в "Headwind MDM" через QR—код, но если я сейчас нажму на иконку с ним

Для заведения устройств на базе Android используется "Действие" - иконка с QR кодом.

то увы получаю ошибку, а потому что сейчас URL выглядит так:

http://172.33.33.18/#/qr/6fb9c8dc81483173a0c0e9f8b2e46be1/h0001

Поняли в чем проблема, т.к. я отказался при установке средствами Iptables сделать редирект с 8080 на 80, то и функционал в Web-панели поехал.

поправляю, как внедрение на этой системы обратного прокси на базе Web-сервиса nginx:

ekzorchik@srv-hmdm:~$ sudo apt install -y nginx
ekzorchik@srv-hmdm:~$ sudo rm /etc/nginx/sites-available/default
ekzorchik@srv-hmdm:~$ sudo rm -f /etc/nginx/sites-enabled/default
ekzorchik@srv-hmdm:~$ sudo rm -f /var/www/html/index.nginx-debian.html
ekzorchik@srv-hmdm:~$ sudo nano /etc/nginx/sites-available/hmdm.conf
upstream hmdm {
        server 127.0.0.1:8080;
}
server {
        listen 80;
        server_name 172.33.33.18;
        access_log /var/log/nginx/hmdm-access.log;
        error_log /var/log/nginx/hmdm-error.log;
        proxy_redirect off;
 location / {
                proxy_pass http://hmdm;
                proxy_buffering off;
                client_max_body_size 0;
                proxy_connect_timeout  3600s;
                proxy_read_timeout  3600s;
                proxy_send_timeout  3600s;
                send_timeout  3600s;
        }
}

После нажимаем Ctrl + O, Enter - Ctrl + X (для выхода из редактора).

ekzorchik@srv-hmdm:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
ekzorchik@srv-hmdm:~$ sudo ln -s /etc/nginx/sites-available/hmdm.conf /etc/nginx/sites-enabled/hmdm.conf
ekzorchik@srv-hmdm:~$ sudo systemctl restart nginx.service

Шаг №9: Закрываю систему Ubuntu 22.04 Server надстройкой над правилами в лице firewalld: (я не использую в чистом виде iptables) — Т.е. доступ к ней теперь по SSH и через 80 порт:

ekzorchik@srv-hmdm:~$ apt-cache show firewalld | grep Version
Version: 1.1.1-1ubuntu1
ekzorchik@srv-hmdm:~$ sudo ufw disable
Firewall stopped and disabled on system startup
ekzorchik@srv-hmdm:~$ sudo apt-get install -y firewalld
ekzorchik@srv-hmdm:~$ sudo systemctl enable firewalld
ekzorchik@srv-hmdm:~$ sudo systemctl start firewalld
ekzorchik@srv-hmdm:~$ sudo firewall-cmd --state
running
ekzorchik@srv-hmdm:~$ ip r | awk '{print $5}' | head -n1
ens18
ekzorchik@srv-hmdm:~$ sudo firewall-cmd —zone public —change-interface=ens18 —permanent
success
ekzorchik@srv-hmdm:~$ sudo firewall-cmd --reload
success
ekzorchik@srv-hmdm:~$ sudo firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens18
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
ekzorchik@srv-hmdm:~$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
success
ekzorchik@srv-hmdm:~$ sudo firewall-cmd --reload
success
ekzorchik@srv-hmdm:~$ sudo firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens18
  sources:
  services: dhcpv6-client ssh
  ports: 80/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
ekzorchik@srv-hmdm:~$

После чего доступ к хосту Ubuntu 22.04 Server возможен только через SSH (22/tcp) и через Web (80/tcp), т.е. URL адрес вида: http://172.33.33.18:80 тем самым я попадаю на правильную страницу авторизации в Headwind MDM:

  • Имя пользователя или email: указываю, т.е. admin
  • Пароль: тот на который изменили, т.е. 712mbddr@

Авторизуюсь на URL: http://172.33.33.18:80 Login: admin Pass: 712mbddr@

и нажимаю "Войти"

А вот теперь уже нажав на QR-код в колонке "Действия", откроется QR-код, посредством которого и будет идти заведение устройства на базе Android в систему управления.

Теперь по клику "Действие" - QR-код отображается QR-код для заведения через его считывание с Android.

Итого, я реализовал, как мне кажется, более правильный и удобный вариант организации работы с сервисом Headwind MDM.

Я не стал изменять стандартный порт, на котором работает Tomcat — сервис, лежащий в основе Headwind MDM. То есть вместо того, чтобы редактировать /etc/tomcat9/server.xml и перенастраивать сам Tomcat, я оставил его конфигурацию без изменений.

Для организации внешнего доступа я использовал Nginx в качестве обратного прокси. На мой взгляд, это более правильный подход: нет необходимости дополнительно задействовать iptables для перенаправления портов, поскольку эту задачу удобно и наглядно решает Nginx.

Таким образом, схема получилась следующей:

Tomcat продолжает работать на своём стандартном внутреннем порту;

Nginx принимает внешние HTTP/HTTPS-запросы и выполняет обратное проксирование на Tomcat;

перенаправление портов выполняется средствами Nginx, без использования iptables для NAT/redirect;

ограничение доступа к самому серверу и его сервисам выполняется с помощью firewalld, который предоставляет более удобный и понятный уровень управления правилами фильтрации по сравнению с непосредственным редактированием правил iptables.

В результате конфигурация получилась более прозрачной:

  • Tomcat отвечает непосредственно за работу Headwind MDM,
  • Nginx — за внешний доступ и reverse proxy,
  • а firewalld — за сетевую фильтрацию и ограничения доступа.

В последующих заметках я покажу, как завести Android устройства в Web-панель и как их подготовить для подключения.

На этом текущая практическая заметка успешно завершена, с уважением автор блога ekzorchik.