Протокол TCP является одним из важнейших протоколов связи в компьютерных сетях. В этой статье познакомимся с ним поближе.
Архив рубрики: Публикации
Обновление Zabbix 4.2 до 4.4
Что нового в версии zabbix 4.4
О нововведениях свежей версии zabbix 4.4 в этот раз я почти ничего не слышал. Не видел ни статей на эту тему, ни видео выступлений, хотя обычно наблюдаю их. Либо материала было меньше, либо просто все прошло вне поля моего зрения. Слышал только, что готовится поддержка TimescaleDB, видел публикации на эту тему. Так что пришлось читать официальные what’s news и release notes на самом сайте zabbix. Вот что нового нам обещают в zabbix 4.4.
- Новый zabbix-agent, написанный на Go. Из новых возможностей агента заявлено — фреймворк для кастомизации проверок, возможность сохранения состояния между проверками, более гибкий планировщик, более эффективная передача данных, замена текущих агентов с поддержкой большего количества платформ в будущем.
- Вебхуки и более продвинутая логика для действий и оповещений на основе JavaScript. С помощью этих улучшений станет проще настраивать интеграцию с внешними сервисами.
- Новый стандарт для шаблонов. Как я понял, разработчики решили упорядочить создание шаблонов и предложили свой формат для их оформления. Подробнее описано в Zabbix template guidelines. Я пока еще не вникал и не разбирался с этой темой. Посмотрим, что в итоге получится. На мой взгляд хороший шаг сделан. Давно пора было как-то упорядочить шаблоны.
- Как я уже сказал ранее, добавлена поддержка TimescaleDB. Это должно существенно увеличить производительность хранилища данных, что является узким место системы мониторинга zabbix.
- Реализована база знаний для итемов и триггеров. Теперь их можно будет документировать. Любопытная фича, надо будет попробовать. Я обычно поле description для этого раньше использовал.
- Расширился функционал визуализации. Появились новые виджеты для дашбордов, новые типы графиков, возможность агрегировать данные с помощью функций.
- Добавилась поддержка новых версий операционных систем — centos 8, debian 10 и т.д.
Нововведения, как обычно, любопытные и кое-где я обновлю сервера, чтобы потестировать новые фичи. Там, где новый функционал не нужен, обновление ставить не буду. Я больше предпочитаю использовать LTS версии в production.
Основные нововведения Zabbix 4.4 разобрали, приступим к обновлению.
Подготовка к обновлению
Если у вас версия Zabbix ниже 4.0, то предварительно обновите ее до указанной. У меня есть цикл статей на тему обновления Zabbix:
Перед обновлением, сделаем на всякий случай бэкап базы данных. Для этого предварительно остановим сервер.
systemctl stop zabbix-server
/usr/bin/mysqldump --opt -v --databases zabbix -uzabbix -p'password' | /usr/bin/gzip -c > /root/zabbix.sql.gz
| zabbix | название базы данных заббикса |
| -uzabbix | ключ -u и дальше имя пользователя базы данных |
| -p’password’ | ключ -p и дальше пароль пользователя бд, если в пароле есть спецсимволы, экранируйте их одиночными кавычками |
На всякий случай сохраним php скрипты админки, чтобы можно было оперативно запустить старую версию в случае нештатной ситуации:
cp -R /usr/share/zabbix /root
Centos 7
Подключаем репозиторий версии zabbix 4.4:
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm

Centos 8
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
Старый репозиторий от версии 4.2 будет автоматически удален.
Очищаем и пересоздаем кэш yum:
yum clean all
yum makecache
Debian 9
Удаляем пакет текущего репозитория:
rm -Rf /etc/apt/sources.list.d/zabbix.list
Подключаем новый:
wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1%2Bstretch_all.deb
dpkg -i zabbix-release_4.4-1+stretch_all.deb
Обновляем информацию о репозиториях:
apt update
Debian 10
Удаляем пакет текущего репозитория:
rm -Rf /etc/apt/sources.list.d/zabbix.list
Подключаем новый:
wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1%2Bbuster_all.deb
dpkg -i zabbix-release_4.4-1+buster_all.deb
Обновляем информацию о репозиториях:
apt update
Ubuntu 18
Удаляем пакет текущего репозитория:
rm -Rf /etc/apt/sources.list.d/zabbix.list
Подключаем новый:
wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1%2Bbionic_all.deb
dpkg -i zabbix-release_4.4-1+bionic_all.deb
Обновляем информацию о репозиториях:
apt update
Если у вас другие версии систем, то простой найдите ссылки пакетов под свою версию в официальном репозитории — https://repo.zabbix.com/zabbix/4.4/ Дальнейшее обновление не будет отличаться от текущего.
К обновлению подготовились, можно приступать.
Установка обновления zabbix 4.2 до 4.4
Centos
Устанавливаем само обновление zabbix на сервер Centos следующей командой:
yum upgrade zabbix-server-mysql zabbix-web zabbix-agent
Это список пакетов заббикса для общего случая. Если у вас установлено что-то еще, лучше обновить все сразу. Посмотреть список установленных пакетов zabbix можно командой:
rpm -qa | grep zabbix
zabbix-sender-4.0.4-1.el7.x86_64
zabbix-threat-control-host-.24-el7.noarch
zabbix-release-4.0-1.el7.noarch
zabbix-threat-control-main-.49-el7.noarch
zabbix-get-4.0.4-1.el7.x86_64
zabbix-web-4.0.4-1.el7.noarch
zabbix-agent-4.0.4-1.el7.x86_64
zabbix-server-mysql-4.0.4-1.el7.x86_64
В моем случае есть еще пакеты zabbix-get и zabbix-sender. Обновляем все сразу:
yum upgrade zabbix-server-mysql zabbix-web zabbix-agent zabbix-get zabbix-sender
Debian / Ubuntu
Устанавливаем само обновление zabbix на сервер с Debian или Ubuntu следующей командой:
apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent
Дальше инструкция общая для всех систем. После завершения обновления, запускаем сервер:
systemctl start zabbix-server
В момент запуска произойдет обновление базы данных. Для маленькой базы (1-2 гб) это не займет много времени. Вы можете даже не заметить процесса. Если база больше, то надо подождать, пока не закончится обновление. Следить за ним можно с помощью просмотра лог файла zabbix сервера.
tail -f /var/log/zabbix/zabbix_server.log

После завершения обновления базы, сервер запустится. После этого можно запустить и агент.
systemctl start zabbix-agent
В логах агента и сервера можно посмотреть версию запущенных сервисов.
Starting Zabbix Agent [zb.serveradmin.ru]. Zabbix 4.4.0 (revision cfac660b25).
Starting Zabbix Server. Zabbix 4.4.0 (revision cfac660b25).
Теперь можно идти в веб интерфейс и смотреть на обновленную версию zabbix server. Перед этим почистите кэш браузера и удалите куки от страницы заббикса. Если этого не сделать, то могут быть проблемы и ошибки, с чем я не раз сталкивался. Если у вас в качестве веб сервера используется nginx, не забудьте поменять владельца директории /etc/zabbix/web на nginx. После обновления он будет принадлежать apache, а web интерфейс не будет работать.
chown -R nginx:nginx /etc/zabbix/web
В веб интерфейсе в самом низу будет показана текущая версия сервера:

Можете изучать новую версию zabbix 4.4 и пробовать улучшения.
Заключение
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!
Процедура обновления Zabbix сервера обычно не сложная. Проблемы чаще всего возникают в двух случаях:
- Проблемы с зависимостями пакетов, чаще всего php или mysql.
- Большая база данных, которая очень долго обновляется, либо не обновляется по какой-то причине.
Первая проблема решается ручным удалением или установкой нужных пакетов. Тут универсального совета дать невозможно. Зависит от того, что вы делали на сервере и почему у вас сломаны зависимости. Вторая проблема решается, в зависимости от причин проблем с базой. Если она слишком большая и поэтому все тормозит и длится слишком долго, надо либо ускорять сервер, либо чистить базу.
Иногда база не обновляется из-за каких-то проблем с записями. Чаще всего в полях acknowledged, куда можно понаписать всего, что угодно. Надо тоже разбираться по месту и удалять то, что мешает обновлению. Но в общем и целом, обновление проходит штатно и лично у меня никогда не было с ним проблем.
Источник: https://serveradmin.ru/obnovlenie-zabbix-4-2-do-4-4/
Установка и начальная настройка сервера мониторинга Zabbix на Ubuntu Server
Сервер Zabbix используется для сбора и анализа информации о состоянии узлов сети. В данной статье будет рассмотрен процесс его установки и развертывания веб-интерфейса для его управления. В качестве сервера баз данных мы будем использовать MariaDB/MySQL. Версия операционной системы, которая использовалась для написания инструкции — 18.04 (LTS), версия Zabbix — 4.2.
Подготовка сервера
Перед установкой Zabbix выполняем подготовительные процедуры.
1. Правильное время
Для получения актуальной информации необходимо, чтобы на сервере было правильное время.
Для этого сначала задаем правильную временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере задается московское время.
Затем устанавливаем и запускаем сервис синхронизации времени:
apt-get install chrony
systemctl enable chrony
systemctl start chrony
2. Настройка брандмауэра
Для работы сервера, открываем следующие порты:
ufw allow 80,443,10050,10051/tcp
ufw allow 10050,10051/udp
* где 80 — порт для http запросов (веб-интерфейс); 443 — для https запросов (веб-интерфейс); 10050 — порты для получения информации от zabbix агентов.
Установка веб-сервера
Управление сервером Zabbix будет осуществляться посредством веб-интерфейса. Для этого необходимо установить и настроить веб-сервер, СУБД и PHP.
СУБД
В данному инструкции мы будем использовать сервер баз данных mariadb.
Для установки вводим:
apt-get install mariadb-server
Разрешаем автозапуск сервера баз данных и запускаем mariadb:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для суперпользователя СУБД:
mysqladmin -u root password
* после ввода команды система потребует ввести пароль два раза.
Веб-сервер
Для наших целей будем использовать веб-сервер NGINX.
Для его установки вводим команду:
apt-get install nginx
Запускаем nginx и разрешаем его автозапуск:
systemctl enable nginx
systemctl start nginx
Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — мы должны увидеть окно приветствия:

PHP и PHP-FPM
Интерфейс zabbix разработан на PHP — наш веб-сервер должен обрабатывать скрипты, написанные на нем.
Устанавливаем php и необходимые компоненты:
apt-get install php php-fpm php-mysql php-pear php-cgi php-common php-ldap php-mbstring php-snmp php-gd php-xml php-gettext php-bcmath
Для настройки php, открываем файл:
nano /etc/php/7.2/fpm/php.ini
* где 7.2 — версия PHP. В вашем случае это может быть другая версия. Проверить можно командой php -v.
Редактируем следующие параметры:
date.timezone = "Europe/Moscow"
...
max_execution_time = 300
...
post_max_size = 16M
...
max_input_time = 300
...
max_input_vars = 10000
Разрешим запуск php-fpm и перезапустим его:
systemctl enable php7.2-fpm
systemctl restart php7.2-fpm
NGINX + PHP
Для того, чтобы NGINX обрабатывал PHP, открываем конфигурационный файл:
nano /etc/nginx/sites-enabled/default
В секции location добавляем параметр index:
location / {
index index.php;
...
}
Внутри секции server добавим следующее:
location ~ .php$ {
set $root_path /var/www/html;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
* где /var/www/html — корневой путь хранения скриптов; /run/php/php7.2-fpm.sock — путь до сокетного файла php-fpm (точное расположение файла можно посмотреть в конфигурационном файле /etc/php/7.2/fpm/pool.d/www.conf).
Проверяем настройки nginx:
nginx -t
И перезагружаем его:
systemctl restart nginx
Создаем index.php со следующим содержимым:
nano /var/www/html/index.php
<?php phpinfo(); ?>
Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — теперь мы должны увидеть сводную информацию по PHP и его настройкам:

Веб-сервер готов для работы с Zabbix Web.
Установка и настройка сервера Zabbix
Переходим к установке самого Zabbix сервера.
Установка
Сначала установим репозиторий последней версии Zabbix. Для этого переходим на страницу https://repo.zabbix.com/zabbix/ и переходим в раздел с самой последней версией пакета — затем переходим в ubuntu/pool/main/z/zabbix-release/ — копируем ссылку на последнюю версию релиза:

* в моем случае это ссылка на https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb. Чтобы понять, какое кодовое название нашей системы, вводим команду cat /etc/lsb-release | grep DISTRIB_CODENAME.
Скачиваем файл репозитория командой:
wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1%2Bbionic_all.deb
Устанавливаем его:
dpkg -i zabbix-release_4.2-1+bionic_all.deb
Обновляем списки пакетов:
apt-get update
Устанавливаем сервер, вводя команду:
apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-get
Настройка базы данных
Входим в оболочку ввода sql-команд:
mysql -uroot -p
Создаем базу данных:
> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;
* мы создали базу zabbix.
Создаем пользователя для подключения и работы с созданной базой:
> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbixpassword';
* в данном примете мы создали пользователя zabbix с доступом к базе zabbix и паролем zabbixpassword.
Выходим из sql-оболочки:
> q
В составе zabbix идет готовая схема для СУБД MySQL/MariaDB или postgreSQL. В нашем случае, нам нужен MySQL.
Для применения схемы переходим в каталог:
cd /usr/share/doc/zabbix-server-mysql/
Распаковываем архив с дампом базы:
gunzip create.sql.gz
Восстанавливаем базу их дампа:
mysql -v -u root -p zabbix < create.sql
* после ввода команды система запросит пароль. Необходимо ввести пароль, который мы задали после установки mariadb.
Настройка zabbix
Открываем конфигурационный файл zabbix:
nano /etc/zabbix/zabbix_server.conf
Добавляем строку:
DBPassword=zabbixpassword
* мы настраиваем портал на подключение к базе с паролем zabbixpassword, который задали при создании базы для zabbix.
И проверяем следующие строки:
...
DBName=zabbix
...
DBUser=zabbix
...
* имя базы и пользователя должны быть zabbix (как мы и создали в mariadb).
Создаем каталог для инклудов конфигурационных файлов (по какой-то причине, он может быть не создан при установке):
mkdir /etc/zabbix/zabbix_server.conf.d
Также создаем каталог для логов и задаем владельца:
mkdir /var/log/zabbix-server
chown zabbix:zabbix /var/log/zabbix-server
Запуск zabbix-server
Разрешаем автозапуск сервера мониторинга:
systemctl enable zabbix-server
После запускаем сам сервер zabbix:
systemctl start zabbix-server
Настройка nginx
При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix. Наш веб-сервер работает с каталогом /var/www/html.
Меняем это — открываем конфигурационный файл nginx:
vi /etc/nginx/sites-enabled/default
nano /etc/nginx/sites-enabled/default
Редактируем параметры root и set $root_path:
...
root /usr/share/zabbix;
...
set $root_path /usr/share/zabbix;
...
Перезапускаем nginx:
systemctl restart nginx
Установка портала для управления Zabbix
Открываем браузер и переходим по адресу http://<IP-адрес сервера>/ — откроется страница установки Zabbix Web. Кликаем по ссылке Next Step:

В следующем окне внимательно смотрим на результаты проверки нашего веб-сервера — справа мы должны увидеть все OK. Если это не так, проверяем настройки и исправляем предупреждения и ошибки, после перезапускаем страницу F5 для повторной проверки настроек.
Когда все результаты будут OK, кликаем по Next Step:

В следующем окне мы оставляем настройки подключения к базе как есть — дополнительно прописываем пароль, который задали при создании пользователя zabbix. После нажимаем Next Step:

* в нашем случае, пароль был zabbixpassword;
В следующем окне оставляем все как есть:

… и нажимаем Next Step.
В последнем окне мы проверяем настройки и кликаем Next Step.
Установка завершена — нажимаем Finish:

В открывшемся окне вводим логин Admin и пароль zabbix (по умолчанию) — откроется окно со сводной информацией по мониторингу:

Zabbix Agent
В качестве примера установим и настроим zabbix agent на наш сервер. Так как мы уже устанавливали репозиторий, установка агента выполняется командой:
apt-get install zabbix-agent
Откроем конфигурационный файл:
nano /etc/zabbix/zabbix_agentd.conf
Отредактируем следующую опцию:
Server=localhost
* в данном примере мы указываем агенту сервер Zabbix — мы может указать его имя или IP-адрес.
Разрешаем автозапуск агента и запускаем его:
systemctl enable zabbix-agent
systemctl start zabbix-agent
Источник: https://www.dmosk.ru/miniinstruktions.php?mini=zabbix-server-ubuntu
Как включить тайный режим Kali Linux
Тестеры на проникновение и хакеры Black Hat превыше всего ценят конфиденциальность и анонимность. Такой дистрибутив, как Kali Linux, инструмент, который предпочитают исследователи безопасности и тестеры на проникновение, может не предоставлять их постоянно, особенно в общественных местах, где запуск кода и открытие нескольких терминалов могут легко привлечь к себе ненужное внимание.
Offensive Security учел это и включил в Kali Linux 2019.4 режим, известный как режим под прикрытием.
Режим под прикрытием в Kali Linux — это набор скриптов, которые позволяют имитировать среду Windows 10 в Kali Linux. Он преобразует весь интерфейс в эквивалент Windows 10, ограничивая внимание, которое вы могли бы привлечь, если бы вы запускали XFCE с различными запущенными терминалами и драконом Kali в фоновом режиме.
Чтобы включить и использовать скрытый режим Kali Linux, вам потребуется Kali Linux 2019.4 или новее.
Обновление до версии 2019.4 или более поздней
Начните с обновления вашего дистрибутива с помощью команд:
sudo apt update sudo apt -y full-upgrade
Вам также может потребоваться использовать среду рабочего стола XFCE.
Включение режима Kali под прикрытием
Чтобы запустить скрытый режим, откройте терминал и введите команду:
kali-undercover
Если вы предпочитаете использовать графический интерфейс, запустите меню приложения и найдите Kali Linux Undercover.
Возврат в нормальный режим
Чтобы вернуться в режим по умолчанию, введите команду:
kali-undercover
Балансировка двух WAN на Mikrotik используя PCC
Начальные условия
- 2 канала WAN от разных провайдеров, с разными скоростями
- Провайдер1 WAN1 (192.168.1.1) — 10 Мбит
- Провайдер2 WAN2 (192.168.2.1) — 20 Мбит
Необходимо реализовать
- Основной канал WAN2 и он должен использоваться интенсивнее (2/3 всего объема трафика)
- Балансировку нагрузки между каналами
- Роутер должен отвечать на запросы (пришедшие с любого провайдера) именно с того интерфейса, откуда пришел запрос
/ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=Local
add address=192.168.1.2/24 network=192.168.1.0 broadcast=192.168.1.255 interface=WAN1
add address=192.168.2.2/24 network=192.168.2.0 broadcast=192.168.2.255 interface=WAN2
/ip firewall mangle
add chain=input in-interface=WAN1 action=mark-connection new-connection-mark=WAN1_conn
add chain=input in-interface=WAN2 action=mark-connection new-connection-mark=WAN2_conn
add chain=output connection-mark=WAN1_conn action=mark-routing new-routing-mark=to_WAN1
add chain=output connection-mark=WAN2_conn action=mark-routing new-routing-mark=to_WAN2
add chain=prerouting dst-address=192.168.1.0/24 action=accept in-interface=Local
add chain=prerouting dst-address=192.168.2.0/24 action=accept in-interface=Local
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:2/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:2/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
add chain=prerouting connection-mark=WAN1_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN1
add chain=prerouting connection-mark=WAN2_conn in-interface=Local action=mark-routing new-routing-mark=to_WAN2
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-mark=to_WAN1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-mark=to_WAN2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.1.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=192.168.2.1 distance=2 check-gateway=ping
/ip firewall nat
add chain=srcnat out-interface=WAN1 action=masquerade
add chain=srcnat out-interface=WAN2 action=masquerade
Если каналы неравны (как у меня), то нужно изменить
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:2/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:2/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
на
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:3/0 action=mark-connection new-connection-mark=WAN1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:3/1 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-classifier=both-addresses-and-ports:3/2 action=mark-connection new-connection-mark=WAN2_conn passthrough=yes
Определенный порт через определенного провайдера
Спасибо за подсказку maxim.naidenov:
;;; Winbox
chain=prerouting action=mark-routing new-routing-mark=to_WAN1 passthrough=no protocol=tcp dst-address-type=!local in-interface=bridge-local dst-port=8291 connection-mark=no-mark
;;; Wargaming, RU9
chain=prerouting action=mark-routing new-routing-mark=to_WAN2 passthrough=no dst-address=xxx.xxx.xxx.0/24 dst-address-type=!local in-interface=bridge-local connection-mark=no-mark
Балансировка каналов и IPSEC
При эксплуатации IPSEC и балансировке каналов выяснился интересный факт: при установке IPSEC не получается обменяться всеми ключами. IPSEC вроде бы как и поднимается, но работать не работает. Если посмотреть IP → IPsec → Installed SAs — можно увидеть что счетчик «Current Bytes» для одного из ключей равен 0, т.е. обмен ключами все-таки не прошел. Для правильной работы необходимо добавить еще два правила:
> /ip firewall mangle
> add chain=output action=mark-routing new-routing-mark=ISP1_conn passthrough=no connection-mark=ISP1_conn
> add chain=output action=mark-routing new-routing-mark=ISP2_conn passthrough=no connection-mark=ISP2_conn
При этом в таблице маршрутизации должны быть маршруты с соответствующими Routing Mark
Было (неверно):
> add chain=output action=mark-connection new-connection-mark=ISP1_conn passthrough=no out-interface=WAN1
> add chain=output action=mark-connection new-connection-mark=ISP2_conn passthrough=no out-interface=WAN2
Еще полезная статейка: https://habr.com/post/313342/
Взято отсюда: https://wiki.rtzra.ru/software/mikrotik/mikrotik-dual-wan-pcc
Настройка резервного канала в MikroTik с уведомлением в Telegram
К подключению резервного интернет канала дома каждый приходит по своим причинам, но некоторые устройства в умном доме требуют постоянного подключения к сети интернет, оперативность получения важных уведомлений напрямую зависит от стабильности подключения к тому же, как же мы узнаем, что интернет пропал, не имея резервного канала 🙂
Какой тип подключения выбрать в качестве резервного зависит только от желания, финансовой и технической возможности. Требования к скорости не большие и зависит от того, каким устройствам необходим постоянный доступ к сети. Если не использовать постоянный доступ для торрент обмена, то в качестве резервного канала можно использовать USB LTE модем с лимитированным трафиком.
Входные данные
Имеется MikroTik RB4011 с настройками:
- Основной интернет канал 100МБит, внешний IP, интерфейс
ether1 - Резервный интернет канал 10МБит, интерфейс
ether2 - OpenVPN подключение к внешней VPS, интерфейс
vpn-ovpn - Туннель 6to4 для IPv6 трафика,
v6to4-tunnel
Необходимо при разрыве основного канала пустить весь трафик по резервному, переподключить VPN, погасить туннель 6to4 и прислать уведомление в телеграмм.
Настройка
Для удобства переименовываем названия портов ether1 и ether2 в ether1-wan-main и ether2-wan-reserv
/interface ethernet set ether1 name="ether1-wan-main"
/interface ethernet set ether2 name="ether2-wan-reserv"
Если IP адреса для основного и/или резервного канала прилетают по DHCP, то в настройках DHCP Сlient’а необходимо для каждого интерфейса выставить параметр Add Default Route — no.

Добавляем маршруты по умолчанию, маршрут основного канала будет иметь дистанцию (distance) 1, резервного 2:
/ip route add dst-address=0.0.0.0/0 gateway=100.99.88.1 distance=1 comment="MAIN_CHAN"
/ip route add dst-address=0.0.0.0/0 gateway=10.9.8.1 distance=2 comment="RESERV_CHAN"
где: gateway=100.99.88.1 — шлюз для основного канала, gateway=10.9.8.1 — шлюз для резервного канала. Неактивный маршрут резервного канала будет выделен синим цветом.

Для мониторинга состояния каналов будет задействована утилита Netwatch (Tools -> Netwatch), в качестве хостов наблюдения будут использованы DNS сервера Яндекс, адрес 77.88.8.8 будет использоваться для проверки работоспособности основного канала, 77.88.8.1 — для резервного.
Добавляем отдельные маршруты для проверяемых адресов, что бы проверка шла четко по определенному интернет каналу не зависимо от того через какой канал идет маршрут по умолчанию.
/ip route add dst-address=77.88.8.8 gateway=100.99.88.1 distance=1 comment="Yandex DNS - Check main internet channel"
/ip route add dst-address=77.88.8.1 gateway=10.9.8.1 distance=1 comment="Yandex DNS - Check reserv internet channel"

В Firewall (IP -> Firewall) добавляем запрещающие правила на прохождение пакетов к проверяемым адресам не через свой канал, на случай, если канал отсохнет, то маршрут использующий этот канал станет не активным и будет задействован текущий маршрут по умолчанию. Эти правила необходимо расположить выше правил разрешающих доступ в интернет.
/ip firewall filter add chain=output dst-address=77.88.8.1 out-interface=ether1-wan-main action=reject
/ip firewall filter add chain=output dst-address=77.88.8.8 out-interface=ether2-wan-reserv action=reject

Мониторинг и переключение каналов
Как говорилось выше, в качестве мониторинга будет использоваться утилита Netwatch. Настройка этой утилиты крайне проста, задается хост наблюдения и интервал через какое время необходимо выполнять проверку, при переходе наблюдаемого хоста из состояния Down в состояние Up выполняются скрипты с вкладки UP, при переходе из состояния Up в состояние Down выполняются скрипты с вкладки DOWN.
Для отправки уведомлений в Telegram ботом будет задействована утилита fetch. Как известно боту может быть отправлено сообщение через URL вида https://api.telegram.org/bot[API_KEY]/sendMessage?chat_id=[CHAT_ID]&text=[TEXT]. Подробнее как настроить бота в Telegram описано здесь.
- [API_KEY] — токен для доступа к HTTP API
- [CHAT_ID] — ID вашего с ботом чата
- [TEXT] — отправляемое сообщение
Для проверки основного канала в Netwatch добавляем (Tools -> Netwatch -> +).
Вкладка Host:
- Host: 77.88.8.8
- Interval: 00:01:00
- Timeout: 1000
Вкладка UP:
/ip route enable [find comment="MAIN_CHAN"]
/interface enable v6to4-tunnel
/ip dns cache flush
/interface disable vpn-ovpn
:delay 3s
/interface enable vpn-ovpn
:delay 5s
/tool fetch url="https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678&text=RB4011_Main_channel_is_UP!"
/file remove "sendMessage?chat_id=12345678&text=RB4011_Main_channel_is_UP!";
Вкладка DOWN:
/ip route disable [find comment="MAIN_CHAN"]
/interface disable v6to4-tunnel
/ip dns cache flush
/interface disable vpn-ovpn
:delay 3s
/interface enable vpn-ovpn
:delay 5s
/tool fetch url="https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678&text=RB4011_Main_channel_is_DOWN!"
/file remove "sendMessage?chat_id=12345678&text=RB4011_Main_channel_is_DOWN!";
Каждую минуту происходит проверка хоста с IP адресом 77.88.8.8, как только происходит смена состояния из доступен в недоступен, то начинается обработка скрипта, описанного на вкладке DOWN. Комментарии:
- В таблице маршрутизации отключается маршрут с комментарием
MAIN_CHAN, это наш основной маршрут сdistance=1. Т.к. основной маршрут отключен, то активным становится маршрут сdistance=2, у нас он отмечен комментариемRESERV_CHAN, весь трафик пойдет в резервный канал. - Отключается туннель 6to4 т.к. он завязан на внешний IP адрес основного канала.
- Сбрасывается DNS cache, т.к. помимо IPv4 трафика используется IPv6 канал и на какие-то ресурсы в кэше будут записи на IPv6 адреса.
- Отключается и через 3 секунды включается OpenVPN соединение, перезагрузка сделана на случай более быстрого переключения и избежания подвисаний.
- Отправка сообщения в Telegram
- После отправки в папке
Filesсоздается файл, удаляем его
Аналогичная ситуация происходит на вкладке UP при переходе хоста с IP адресом 77.88.8.8 из состояния Down в состояние Up.
Для проверки резервного канала в Netwatch добавляем (Tools -> Netwatch -> +).
Вкладка Host:
- Host: 77.88.8.1
- Interval: 00:01:00
- Timeout: 1000
Вкладка UP:
/ip route enable [find comment="RESERV_CHAN"]
/ip dns cache flush
/interface disable vpn-ovpn
:delay 3s
/interface enable vpn-ovpn
:delay 5s
/tool fetch url="https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678&text=RB4011_Reserv_channel_is_UP!"
/file remove "sendMessage?chat_id=12345678&text=RB4011_Reserv_channel_is_UP!";
Вкладка DOWN:
/ip route disable [find comment="RESERV_CHAN"]
/ip dns cache flush
/interface disable vpn-ovpn
:delay 3s
/interface enable vpn-ovpn
:delay 5s
/tool fetch url="https://api.telegram.org/botbot123456789:ABCDEFGHIJKLMNOPQRabcdefghijklmnopq/sendMessage?chat_id=12345678&text=RB4011_Reserv_channel_is_DOWN!"
/file remove "sendMessage?chat_id=12345678&text=RB4011_Reserv_channel_is_DOWN!";
Действия в случае неполадок с резервным каналом аналогичные, как и для основного, не затрагивается только 6to4 туннель.
Источник: https://stupidhouse.info/node/18/