Мониторинг уровня оптического сигнала на cisco

Находим индекс сенсора:

snmpwalk -v2c -c 123 192.168.2.2 1.3.6.1.2.1.47.1.1.1.1.7 | grep Te1/2
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1027 = STRING: “Te1/2”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1028 = STRING: “10-Gigabit Transceiver Port Container Te1/2”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1029 = STRING: “Transceiver Te1/2”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1030 = STRING: “Te1/2 Module Temperature Sensor”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1031 = STRING: “Te1/2 Supply Voltage Sensor”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1032 = STRING: “Te1/2 Bias Current Sensor”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1033 = STRING: “Te1/2 Transmit Power Sensor”
SNMPv2-SMI::mib-2.47.1.1.1.1.7.1034 = STRING: “Te1/2 Receive Power Sensor”

нужны соответственно значения уровня на приёме и передаче: 1033 и 1034. Далее снимаем значения с сенсора:

snmpwalk -v2c -c 123 192.168.2.2 1.3.6.1.4.1.9.9.91.1.1.1.1.4.1033
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1033 = INTEGER: -36
manager@zabbix:~$ snmpwalk -v2c -c 123 192.168.2.2 1.3.6.1.4.1.9.9.91.1.1.1.1.4.1034
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1034 = INTEGER: -13

Определить точность измерения:

1.3.6.1.4.1.9.9.91.1.1.1.1.3.1033

1.3.6.1.4.1.9.9.91.1.1.1.1.3.1034

“This variable indicates the number of decimal
places of precision in fixed-point
sensor values reported by entSensorValue.

Означает, что нужна запятая перед значением справа. Нужно написать скрипт для заббикса.

 

Простейший скрипт по конфигурированию BGP сессий

Скрипт:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from jinja2 import FileSystemLoader, Environment
import codecs
import sys
import re
import os
import ast
reload(sys)

print “Вас приветствует программа генерации конфигов для bgp сессий”
vlan=int(raw_input(“Введите номер vlan’а :”))
interface=raw_input(“Какой интерфейс будет использоваться? (xe-2/0/1):”)
peer_type=raw_input(“Какой тип подключения, ix или ip transit? (введите ix или isp):”)
peer_name=raw_input(“Введите имя пира латиницей прописными буквами:”‘\n’)
peer_ip=raw_input(“Введите ipv4 адрес пира:”)
local_ip=raw_input(“Введите локальный ipv4 адрес в формате x.x.x.x/nn:”)
peer_as=int(raw_input(“Введите номер as пира (например 44882):”))
prefix_limit_in=int(raw_input(“Введите лимит на количество принимаемых префиксов:”))
local_preference=int(raw_input(“Введите local preference для анонсируемых префиксов:”))
blackhole_community=raw_input(“Введите blackhole_community (0:666):”)

env = Environment(loader=FileSystemLoader(‘/home/tarasko/projects/doc_auto/templates’), trim_blocks=True)
template = env.get_template(‘doc_template_test.txt’)

data = {‘peer_name’:’%s’ % peer_name, ‘peer_ip’:’%s’ % peer_ip, ‘vlan’:’%s’ % vlan, ‘interface’: ‘%s’ % interface, ‘peer_type’:’%s’ % peer_type, ‘local_ip’:’%s’ % local_ip, ‘peer_as’:’%s’ % peer_as, ‘prefix_limit_in’:’%s’ % prefix_limit_in, ‘local_preference’:’%s’ % local_preference, ‘blackhole_community’:’%s’ % blackhole_community}
with open(‘/home/tarasko/projects/doc_auto/doc/project.txt’,’w’) as f:
f.write(template.render(data))

Шаблон:

set interfaces {{interface}} unit {{vlan}} description {{peer_name}}
set interfaces {{interface}} unit {{vlan}} vlan-id {{vlan}}
set interfaces {{interface}} unit {{vlan}} family inet filter input block_shit
set interfaces {{interface}} unit {{vlan}} family inet filter output block_shit_out
set interfaces {{interface}} unit {{vlan}} family inet sampling input
set interfaces {{interface}} unit {{vlan}} family inet address {{local_ip}}

set protocols bgp group {{peer_type}} neighbor {{peer_ip}} description {{peer_name}}
set protocols bgp group {{peer_type}} neighbor {{peer_ip}} import {{peer_name}}-IN
set protocols bgp group {{peer_type}} neighbor {{peer_ip}} family inet unicast prefix-limit maximum {{prefix_limit_in}}
set protocols bgp group {{peer_type}} neighbor {{peer_ip}} family inet unicast prefix-limit teardown 90
set protocols bgp group {{peer_type}} neighbor {{peer_ip}} export {{peer_name}}-OUT
set protocols bgp group {{peer_type}} neighbor {{peer_ip}} peer-as {{peer_as}}

set policy-options policy-statement {{peer_name}}-IN term BOGONS from protocol bgp
set policy-options policy-statement {{peer_name}}-IN term BOGONS from prefix-list BOGONS
set policy-options policy-statement {{peer_name}}-IN term BOGONS then reject
set policy-options policy-statement {{peer_name}}-IN term DEFAULT from protocol bgp
set policy-options policy-statement {{peer_name}}-IN term DEFAULT then local-preference {{local_preference}}
set policy-options policy-statement {{peer_name}}-IN term DEFAULT then accept
set policy-options policy-statement {{peer_name}}-OUT term BLACKHOLE from protocol static
set policy-options policy-statement {{peer_name}}-OUT term BLACKHOLE from tag 666
set policy-options policy-statement {{peer_name}}-OUT term BLACKHOLE then community set {{peer_name}}_Blackhole
set policy-options policy-statement {{peer_name}}-OUT term BLACKHOLE then accept
set policy-options policy-statement {{peer_name}}-OUT term VSEVNET from protocol static
set policy-options policy-statement {{peer_name}}-OUT term VSEVNET from policy OWN_PREFIXES
set policy-options policy-statement {{peer_name}}-OUT term VSEVNET then accept
set policy-options policy-statement {{peer_name}}-OUT then reject

set policy-options community {{peer_name}}_Blackhole members {{blackhole_community}}

Всё пока примитивно – забиваем данные, получаем конфиг на выходе.

Что сделать:

  • Нужно добавить проверку вводимых данных (asn, ip)
  • Возможность добавления двух rs
  • отдельные циклы для ix  и для ip transit
  • Брать данные из ripedb

 

regexp для интерфейсов, с которых нужно собирать статистику в заббиксе.

Чтобы не строить графики по всем портам коммутатора, можно использовать regexp в Discovery rule. Заходим в хост, Discovery rule–>Network interfaces–>Filters. Там добавляем макрос {#SNMPVALUE} и само выражение, например D-Link DES-3028 R2.94 Port [2]{1}$ – будет матчиться только вхождение D-Link DES-3028 R2.94 Port 2. [2] – это символ для поиска, {1}$ – искать один символ в конце строки.

rconfig, настройка

Это скорее памятка для самого себя. Вот ссылка на проект. Если коротко, то rconfig это утилита сетевого конфигурирования для сетевых инженеров, opensource. Имеет веб-интерфейс. Не знаю как сейчас, но пол года назад проект поддерживал в основном циску, ну и некоторые другие вендоры. Не обладает такой гибкостью как ансибл, зато имеет бесплатный веб-интерфейс. Лично я пока собираю с помощью него конфиги с циско-устройств, буду ли делать что-то ещё – не знаю, наверно всё таки буду пользоваться ансиблом.

yum update
yum install mariadb-server
hostnamectl set-hostname rconfig
авторизационные ключи
mkdir .ssh/
nano .ssh/authorized_keys
Скачать архив
Сылка на гид:
http://www.rconfig.com/rconfig-support/guides/35-rconfig-installation-guide
Обновить судоерс:
visudo
CTRL+D до конца файла. вставить:
apache  ALL = (ALL) NOPASSWD: /usr/bin/crontab, /usr/bin/zip, /bin/chmod, /bin/chown, /usr/bin/whoami
Defaults:apache !requiretty

краткая справка по vi:
для вставки текста нажмите i, затем вводите текст
для удаления символов нажмите ESC, а затем наберите x
для выхода из vi без сохранения изменений нажмите ESC, а затем наберите :q!
для сохранения и выхода нажмите ESC, а затем наберите :wq

cd downloads/
unzip rconfig-3.1.1.zip -d /root/
chown -R apache /root/rconfig
mv /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.original
cp /root/rconfig/www/install/httpd.conf.new /etc/httpd/conf/httpd.conf

nano /etc/http/conf/httpd.conf
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_default_module modules/mod_authn_default.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule disk_cache_module modules/mod_disk_cache.so

Этих модулей нет? С ними ругается.
service httpd restart

nano /etc/sysconfig/selinux
SELINUX=permissive

Как посчитать суммарный IPv6 маршрут/IPv6 route summarization

Допустим есть три сети:
2001:db8:0:30::0/64
2001:db8:0:31::0/64
2001:db8:0:32::0/64
Для нахождения суммарного маршрута нужно найти различающиеся биты идентификатора сети. Первые три хекстета очевидно одинаковые, берём четвёртый и переводим числа 30 31 и 32 из 16 в 2 систему счисления:
0011 0000
0011 0001
0011 0010
Находим старший бит, после которого биты уже не совпадают – это 14-ый бит (выделено красным), значит маска сети будет 64 -2 = 62. Чтобы получить идентификатор сети нужно взять не совпадающие биты (выделены зелёным) и перевести их в ноль. получившееся число будет адресом сети:
0011 0000 – в 16-ой системе это будет 30. Получаем суммарный маршрут:
2001:db8:0:30::/62

P.s. здесь неплохая статья на английском, я разбирался по ней.

Ограничение на количество принимаемых префиксов по BGP в Juniper

set protocols bgp group ix neighbor 1.1.1.1 family inet unicast prefix-limit maximum 300000
set protocols bgp group ix neighbor 1.1.1.1 family inet unicast prefix-limit teardown 90

maximum – количество префиксов, при котором сессия будет выключена.

teardown – порог в процентах, при котором будет сгенерировано предупреждение о достижении максимального количества принимаемых префиксов.

После применения настроек сессиия с этим нейбором будет сброшена и заново переинициализирована.

Настройка idle-timeout для сессии управления на джунипере

Выделить пользователя в отдельную группу:

set system login user admin class test

Задать группе определённые права:

set system login class test permissions all

Задать время, по истечении которого будет завершена неактиваная сессия:

set system login class test idle-timeout 5