Создадим 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
Создаем базу данных 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 не запускается. Сделаем автозапуск:
systemctl start zabbix-server
systemctl enable zabbix-server
Но нам нужно получать доступ только по адресу 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 модемом.
05.07.2017 в 16:11
Отличная статья!!!Мне она очень помогла в своё время!все чётко, без всяких лишних настроек!спасибо тебе огромное!!!