Скрипт проверки скорости по тарифу/speed check

Всё просто – проверяю работу шейпера, каждый час в 5 минут.

5 */1 * * * /home/manager/speed_check

cat speed_check
#!/bin/bash
alert=`iperf3 -c iperf.test.ru -P 1 | awk ‘NR == 17{print$7}’` #17 строчка 7 колонка, количество потоков – 1
norma=200 #Тариф на сервера 200 мбит/с
#echo $alert
#Результат измерения может быть дробным-баш не работает с дробными числами, поэтому такая конструкция:
check=`echo “$alert $norma” | awk ‘{if ($1 > $2) print 1; else print 0}’`
if [ “$check” -eq 1 ]
then
/usr/bin/sendemail -o message-charset=utf-8 -f zabbix_mon@test.ru -t 123@test.ru -m !!! Внимание !!! Проверка показала, что на 100 мб тарифе скорость больше 200 мбитс. Необходимо проверить логи шейпера Сообщение было создано автоматически, пожалуйста, не отвечайте на него. -u Внимание! Необходимо проверить ограничение скорости! -s mail.test.ru -xp 123 -xu zabbix_mon@test.ru
#echo “$(date +%d-%m-%Y\ %H:%M:%S) (INFO) speed is  ${alert} Mb/s” >> speed.log
fi

exit

Подключение сертификатов в postfix и dovecot

Создать ca_bundle, файлы помещать в него в определённом порядке:

cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt>mail.somesite.ru.ca-bundle

Подключть tls в постфиксе:
/etc/postfix/main.cf
smtpd_tls_key_file = /etc/pki/mail/private.decr.key
smtpd_tls_cert_file = /etc/pki/mail/STAR_somesite_ru.crt
smtpd_tls_CAfile = /etc/pki/mail/mail.somesite.ru.ca-bundle
smtp_tls_key_file = /etc/pki/mail/private.key
smtp_tls_cert_file = /etc/pki/mail/STAR_somesite_ru.crt
smtp_tls_CAfile = /etc/pki/mail/mail.somesite.ru.ca-bundle

Подключить ssl в dovecot:
/etc/dovecot/conf.d/10-ssl.conf
ssl_key = </etc/pki/mail/private.key
ssl_cert = </etc/pki/mail/STAR_somesite_ru.crt
ssl_ca = </etc/pki/mail/mail.somesite.ru.ca-bundle

Подключить серт в раундкуб
cat /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/mail/STAR_somesite_ru.crt
SSLCertificateKeyFile /etc/pki/mail/private.key
SSLCACertificateFile /etc/pki/mail/mail.somesite.ru.ca-bundle

Посмотреть сертификат:
openssl x509 -in COMODORSADomainValidationSecureServerCA.crt -noout -text
Посмотреть ключ:
openssl rsa -in private.decr.key -noout -text

!!!Ключ private.decr.key должен дать тот, кто генерирует сертификаты

Регулярные выражения (regexp) для network discovery в заббиксе/zabbix

Заббикс – вещь капризная и очень требовательная к ресурсам дисковой подсистемы. А какая-нибудь 76 или 65 циска будучи в ядре или дистрибьюции создаёт уйму интерфейсов, нужных и ненужных. Надо с этим бороться и снимать данные только с нужных портов.

В заббиксе – configuratuin–hosts–нужный хост–discovery rules–Template SNMP Interfaces 64: Network interfaces–нажимаем на Network interfaces–Filters–{#SNMPVALUE} matches

Для 7606 я написал следующее правило:

^TenGigabitEthernet1/[1-8]$|^GigabitEthernet2/[1-9]$|^GigabitEthernet2/[1-2][0-9]$|^unrouted VLAN [1-9]$|^unrouted VLAN [1-9][0-9]$|^unrouted VLAN [1-9][0-9][0-9]$|^unrouted VLAN [1-3][1-4][0-9][0-9]$|^Port-channel1$

Это выражение будет матчить TenGigabitEthernet1/ с 1 по 8, GigabitEthernet2/ с 1 по 9, GigabitEthernet2/ с 10 по 29, unrouted VLAN с 1 по 3499. Символ ^ – матчить в начале строки, $ – в конце строки.

Для джунипера:

^xe-2/0/[0-3]$|^xe-2/0/[0-3].[0-9]{1,4}$|^fxp[0-9]-[0-9]+$|^irb.[0-9]+$

xe-2/0/[0-3].[0-9]{1,4} – будут матчиться интерфейсы xe-2/0/0-3.0000-9999. {1,4} – значит повторить предыдущее значение от  1 до 4 раз.

До этого я пытался экранировать слешы обратным слешем, но в заббиксе это не работает. так же в заббиксе есть инструмент для тестирования регекспов (администрирование-регулярные выражения).

Скрипт проверки DHCP

Раз в 10 минут по крону запускается скрипт:
crontab -e
*/10 * * * * /home/dhcpd_check
cat dhcpd_check
#!/bin/bash
dhcpd_status1=`sudo dhcping -s 10.23.8.20`
dhcpd_status2=`sudo dhcping -s 10.23.8.21`
if [ “$dhcpd_status1” != “Got answer from: 10.23.8.20” ]
then
/usr/bin/sendemail -o message-charset=utf-8 -f zabbix_mon@test.ru -t monitoring@test.ru -m !!! Внимание !!! Проверка показала, что dhcp сервер 10.23.8.20 не ответил на запрос. Попробуйте получить ip-адрес. -u Внимание! Необходимо проверить dhcp сервер 10.23.8.20! -s mail.test.ru -xp 123 -xu zabbix_mon@test.ru
fi

if [ “$dhcpd_status2” != “Got answer from: 10.23.8.21” ]
then
/usr/bin/sendemail -o message-charset=utf-8 -f zabbix_mon@test.ru -t monitoring@test.ru -m !!! Внимание !!! Проверка показала, что dhcp сервер 10.23.8.21 не ответил на запрос. Попробуйте получить ip-адрес. -u Внимание! Необходимо проверить dhcp сервер 10.23.8.21! -s mail.test.ru -xp 123 -xu  zabbix_mon@test.ru
fi

exit

dhcping делает запрос на получение адреса 0.0.0.0 Получив ответ от сервера, что такого адреса нет, он выдает в консоль:
Got answer from: 10.23.8.20

Скрипт проверяет каждый сервер и отправляет пиьсмо по send_mail’у в случае неудачи

Выделенный интерфейс управления для NAT Mikrotik

Нат подключен через бордер и на нате работает следующая маршрутизация:
/ip route
add distance=1 gateway=100.100.100.65
add disabled=yes distance=1 gateway=100.100.100.13
add distance=1 dst-address=10.200.0/15 gateway=100.100.100.61
add disabled=yes distance=1 dst-address=10.200.0/15 gateway=100.100.100.9

Это значит что весь трафик будет ходить через бордер. Задача – настроить выделенный интерфейс управления натом напрямую от ядра. Т.е. нужно, что бы трафик приходящий из интерфейса управления, уходил туда же, несмотря на настроенную маршрутизацю. Это можно решить с помощью VRF
Добавляю интерфейс:
/interface vlan
add interface=ether1 name=eth1.330 vlan-id=330
Создаю VRF:
/ip route vrf
add interfaces=eth1.330 routing-mark=mgmt
Добавляю IP:
/ip address
add address=10.23.128.2/30 interface=eth1.330 network=10.23.128.0

Добавляю маршрут:
/ip route
add distance=1 gateway=10.23.128.1 routing-mark=mgmt
Этот маршрут будет действовать только в пределах VRF mgmt.
Но, нужно сделать так, чтобы пакеты, приходящие из этого интерфейса не попадали под натирующее правило.
натирующее правило следующее:
add action=same chain=srcnat dst-address=!10.0.0.0/8 same-not-by-dst=yes src-address=10.200.0/15 to-addresses=100.100.100.209-100.100.100.222

Можно решить двумя способами – маркировать пакеты или использовать для менеджмент интерфейса адрес из пула 10.0.0.0/8 (за счёт правила dst-address=!10.0.0.0/8 – адрес назначения не из этого диапазона.)\

Поэтому адрес ната 10.23.128.1