Создадим ZABBIX комбайн для мониторинга сетевого оборудования MikroTik (и не только), которое находится у наших клиентов за NAT или не имеет статики.

1. Покупаем VDS хостинг

Самый дешевый вариант нахождения в Москве — ruvds.com (кому нужна скидка — пишите в комментарии, дам промо-код)

Хостинг предлагает 1×2.2ГГц, 0.5Гб RAM, 10Гб HDD, 1IP за 130руб в месяц или 190руб в месяц при SSD. При оплате на год соответственно будет 91 руб в месяц при HDD и 133 руб в месяц при SSD

Купив VDS, ждем его создания и письма на почту с данными для входа. Нам нужен IP адрес и root пароль

2. Подключаемся и настраиваем

Скачиваем PuTTY, устанавливаем. В поле Host Name указываем IP нашего VDS, выбираем SSH, указываем название в Saved Session и жмем Save

Теперь можно выбрать сохраненную сессию и нажать Open

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

# passwd

Входить под root это не по фэншую, по этому добавим нового пользователя командой

# adduser moron

Проходим весь процесс добавления и создания пароля

Сменить пользователя можно командой

# su user

Обновляем Debian командой

# apt-get update && apt-get upgrade && reboot

3. Авторизация по ключу

Вводить каждый раз пароль не совсем безопасно

Создадим открытый и закрытый ключи и поместим открытый на наш сервер:

Скачиваем PuTTY Gen и генерируем 4096 битный ключ:

Сохраняем приватный и публичные ключи

От имени нужного пользователя вносим открытый ключ из PuTTY Gen:

# mkdir ~/.ssh
# chmod 700 ~/.ssh
# touch ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
# nano ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAgEA1eX4RWjq44OwcC31XLXCK28uP11jGY3skja2tW5vGciXp6RLdnV6EuJ+UdbMMVW8gCHowvJJWyu6ksZNuxtUF+X19YRmeCfBNTYLSzDZ729sQS2Rc6xkxJY+iZJEX0doU0WudDgAH9exRveuIpzqFSEjxwQnNmbSLllhrMdODETb8B3N/ya4eqVVZD+OwcDVU/pcHdQAKMePmKYecNNRERQ5VsrHgFTPj0ewDn+OClg58jE3wmFqLGWVOhHY4I2OQ36ctnVyBxRF984Cw9ctzgupRWht9rmjYHqAprWOijJkwZfZDbjqgyHZGoPty+jMmCByQWn8xpC6CIZzNUQKYpgAZ5Q2hTjJJaOwMBXb40bB70fle2rBhC8eSq/RoErOQ32QitxfNvbLjLCMrt3vqideliiJIPwh46aLzNE4SMUyB3ndzZDC4+7NjpiMvF0d1MUNeJD1yMqmznMHcC/1NNXDWigKQMiIh/EeV8bljo3mDyPN8yGwCj1mcsQTAVoV275TkxaK3Du0NFbHcPFKprDJQH4d+gDZyjXjgu3Njarr13VV2/J+E87ja00IjlkT0zbkujJbjaCuwsQBCBBjK6BoSL4oXDeeXQpXPCkmvdUzFeELsoZ+6E+N/9O/z9eE7YbFqW0QwEKtFNWKoIk02vzAO9Y2LfSGfnK+LkdpZ1s= moron
Сохраняем командой Ctrl+O

Включаем авторизацию по ключу:

# nano /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no

Теперь можно авторизироваться без ввода пароля
В PuTTY указываем приватный ключ
Connection => SSH => Auth => Выбираем ключ

4. Покупаем и настраиваем домен

Покупаем по ссылке домен и паркуем его на pdd.yandex.ru

В редакторе DNS указываем хост — наш поддомен z, тип — A и значение записи — адрес нашего VDS.

Аналогично с поддоменом v

5. Установка Apache2

Установим веб сервер

# apt-get install apache2

Создадим директории для двух сайтов:

# mkdir -p /var/www/z.1Side.ru/public_html
# mkdir -p /var/www/v.1Side.ru/public_html

И выдадим на них права:

# chown -R $USER:$USER /var/www/z.1Side.ru/public_html
# chown -R $USER:$USER /var/www/v.1Side.ru/public_html
# chmod -R 755 /var/www

Для большей ясности создадим в этих директориях по файлу html:

# nano /var/www/z.1Side.ru/public_html/index.html
Это сайт zabbix
# nano /var/www/v.1Side.ru/public_html/index.html
Это сайт vpn

И откроем в браузере данные сайты, и они будут открывать страницу apache, так как не настроен виртуальный хост

Создадим виртуальный хост для v.1Side.ru:

# cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/v.1Side.ru.conf

Откроем его:

# nano /etc/apache2/sites-available/v.1Side.ru.conf

Укажем в нем:

ServerName v.1Side.ru
ServerAdmin adm@v.1Side.ru
DocumentRoot /var/www/v.1side.ru/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Включаем созданный виртуальный хост:

# a2ensite v.1Side.ru.conf
# service apache2 reload

Виртуальный хост создан и теперь по адресу v.1Side.ru будет доступен наш сайт из директории /var/www/v.1Side.ru/public_html

Второй виртуальный хост будет доступ по https, создадим его по http:

# cp /etc/apache2/sites-available/v.1Side.ru.conf /etc/apache2/sites-available/z.1Side.ru.conf

Укажем в нем:

ServerName z.1Side.ru
ServerAdmin adm@z.1Side.ru
DocumentRoot /var/www/z.1Side.ru/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Включаем созданный виртуальный хост:

# a2ensite z.1Side.ru.conf
# service apache2 reload

6. Let’s Encrypt SSL сертификат

Нам нужен certbot, но его в репозитории нет. По этому мы подключим тестовый репозиторий:

# nano /etc/apt/sources.list

Добавим:

deb http://httpredir.debian.org/debian jessie-backports main contrib non-free
# apt-get update

Теперь установим certbot:

# apt-get install python-certbot-apache -t jessie-backports

Перейдем в директорию крона:

# cd /etc/cron.d
# nano certbot

И к заданию по обновлению ключа добавим перезапуск apache:

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew && service apache2 reload

Получаем сертификат:

# certbot --apache

Выбираем наш сайт и вводим запрашиваемые данные

Теперь сайт доступен по https

Настроим переадресацию на https:

В файлах /etc/apache2/sites-available/z.1Side.ru.conf и v.1Side.ru.conf

Добавим:

Redirect / https://адрес_сайта/

И включим alias

# a2enmod alias
# service apache2 restart

7. Установка ZABBIX

Вся процедура установки хорошо задокументирована в официальной справке zabbix

Установим пакет конфигурации репозитория:

# cd /tmp
# wget http://repo.zabbix.com/zabbix/3.2/debian/pool/main/z/zabbix-release/zabbix-release_3.2-1+jessie_all.deb
# dpkg -i zabbix-release_3.2-1+jessie_all.deb
# apt-get update

Установим сервер и веб интерфейс ZABBIX:

# apt-get install zabbix-server-mysql zabbix-frontend-php

Во время установки MySQL попросит ввести пароль для root пользователя:

jghsduf7yohjuksd6f78ihjsdtf

Укажите пароль для root

Подтвердите ввод пароля

Создаем базу данных zabbix

Пароль MySQL zabbix пользователя сделаем jhsdfky7ihjiohi76yyyh87

Введем команды в консоль (перед паролем стоит -p):

shell> mysql -uroot -pjghsduf7yohjuksd6f78ihjsdtf
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'jhsdfky7ihjiohi76yyyh87';
mysql> quit;

Импортируем данные (попросит zabbix пароль для MySQL):

# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Настраиваем zabbix сервер:

# nano /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=jhsdfky7ihjiohi76yyyh87

Настраиваем php:

# nano /etc/apache2/conf-enabled/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Moscow

Перезапускаем apache:

# service apache2 restart

Открываем http://z.1Side.ru/zabbix или http://v.1Side.ru/zabbix

Будет автоматическое перенаправление на https и откроется страница настройки ZABBIX

Выбираем базу MySQL, указываем расположение localhost, название базы, логин zabbix и пароль MySQL от пользователя zabbix —

jhsdfky7ihjiohi76yyyh87

ZABBIX установлен!

Логин/пароль для входа Admin/zabbix

После перезагрузки сервера, zabbix не запускается. Для решения этой проблемы добавим в /etc/rc.local команду запуска service zabbix-server start

Но нам нужно получать доступ только по адресу z.1Side.ru и сразу попадать в ZABBIX

Так как ZABBIX установился как алиас — укажем явное расположение

# nano /etc/apache2/conf-enabled/zabbix.conf

Закомментируем:

#<IfModule mod_alias.c>
# Alias /zabbix /usr/share/zabbix
#</IfModule>

И укажем путь к ZABBIX в настройках хоста:

# nano /etc/apache2/sites-available/z.1Side.ru-le-ssl.conf
ServerName z.1Side.ru
ServerAdmin adm@1Side.ru
DocumentRoot /usr/share/zabbix
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/z.1Side.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/z.1Side.ru/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

И перезапустим apache

# service apache2 restart

Теперь ZABBIX доступен только по https://z.1Side.ru

Добавим в него шаблон
Настройка -> Шаблоны -> Импорт

Меняем имя пользователя и пароль в
Администрирование -> Пользователи

Если у вас выбор русского языка не активен —
смотрим какие локализации установлены:

# locale -a

Какие нам доступны:

# cat /usr/share/i18n/SUPPORTED | grep ru_

ru_RU.UTF-8 UTF-8
ru_RU.KOI8-R KOI8-R
ru_RU ISO-8859-5
ru_RU.CP1251 CP1251
ru_UA.UTF-8 UTF-8
ru_UA KOI8-U

Установим локализации:

# locale-gen ru_RU

Смотрим какой русский доступен, его и ставим:

# locale-gen ru_RU.UTF8

Выбираем пробелом нужную локализацию:

# dpkg-reconfigure locales

Перезагружаем apache и выбираем русский язык в ZABBIX:

# service apache2 restart

Теперь доступен выбор русского языка.

8. Установка PPTPD VPN сервера

Для мониторинга оборудования без белого IP нам нужен VPN сервер.
Устанавливаем:

# apt-get install pptpd

Указываем диапазон IP:

# nano /etc/pptpd.conf
localip 10.255.0.1
remoteip 10.255.0.100-200

Заносим клиентов:

# nano /etc/ppp/chap-secrets
M pptpd Lyuhnsdf7i 10.255.0.10
T pptpd Kghndsfy7iyhnlkH 10.255.0.20
B pptpd Kрhjghndsgghi 10.255.0.30
Moron pptpd khjJyghbfdhyuI 10.255.0.51

Перезапускаем pptpd сервер:

# service pptpd restart

Теперь добавим запуск PPTPD в автозагрузку:

# nano /etc/rc.local

Перед exit:

service pptpd start

Если нам нужно пускать интернет или заходить на оборудование — настраиваем форвардинг (пересылка между интерфейсами)

# nano /etc/sysctl.conf

Ищем и раскомментируем строчку net.ipv4.ip_forward = 1, если ее нет, то добавляем.

Применяем изменения командой

# sysctl -p

9. Подключаем клиент MikroTik

Не важно какой интернет, сгодится любой. Не важно какой микротик, главное — свежая прошивка.
Я использую пользователя из первой строчки

# nano /etc/ppp/chap-secrets

Открываем в настройках микротика Interface -> + PPTP Client
Вводим название соединения (Name)
Указываем адрес соединения (Connected To)
Вводим User и Password
Жмем Apply
Через несколько секунд поднимется соединение с IP адресом 10.255.0.10

Активируем SNMP: IP -> SNMP

10. Подключаем клиентов в ZABBIX

Настройка -> Узлы сети — > Создать узел сети

Указываем шаблон Template SNMP Mikrotik64

Сохраняем и радуемся 🙂

11. Управление через VPN

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

Правил много и они все одинаковые. По этому добавим их циклом.

Создадим скрипт в директории /usr/local/bin

# nano /usr/local/bin/pppADD.sh
#!/bin/bash
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A INPUT -p gre -j ACCEPT
/sbin/iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT

for (( i=0; i <= 30; i++ ))
do
	/sbin/iptables -I INPUT -s 10.255.0.0/24 -i ppp$i -j ACCEPT
	/sbin/iptables --table nat --append POSTROUTING --out-interface ppp$i -j MASQUERADE
done

/sbin/iptables --append FORWARD --in-interface eth0 -j ACCEPT
chmod +x pppADD.sh
./pppADD.sh

Добавим в автозапуск исполнение этого скрипта. Для этого добавим в /etc/rc.local перед service pptpd start:

/usr/local/bin/pppADD.sh

Скрипт автозапуска теперь выглядит так:

#!/bin/bash
service zabbix-server start
/usr/local/bin/pppADD.sh
service pptpd start
exit 0

Теперь создаем в Windows соединение до нашего ZABBIX сервера и подключаемся к оборудованию по внутреннему IP из VPN

12. В заключении

Мы получили возможность мониторинга удаленных шлюзов даже за 3G/LTE модемами. В моем ZABBIX’е 5 клиентов за LTE модемом.