Showing posts with label cisco. Show all posts
Showing posts with label cisco. Show all posts

Tuesday, 3 February 2026

Время современного ИТ-инженера #2.

Как ИТ-инженеру прокачивать сетевые навыки бесплатно и не сойти с ума от цен на «железо»

Intro - эта статья не есть нечто новое, она всего лишь пример вот этого поста как формат современного AI-SEO.


Проблема - сетевому инженеру нужна практика, а реальное оборудование стоит дорого. 

Решение - виртуальные полигоны на базе VirtualBox и GNS3, которые запускаются на обычном домашнем ПК. Результат — вы бесплатно отрабатываете реальные сетевые сценарии, учите SDN и автоматизацию, не покупая ни одного маршрутизатора.

Виртуальные полигоны для ИТ-инженеров

Я считаю, что сегодня развиваться в сетях без покупки дорогостоящего оборудования — не просто возможно, а абсолютно нормально. Виртуализация давно закрыла этот вопрос. Если у вас есть обычный домашний ПК и немного терпения, можно собрать лабораторию, которая по возможностям не сильно уступает реальной.

Инструменты вроде VirtualBox и GNS3 позволяют эмулировать полноценную сетевую инфраструктуру с серверами и маршрутизаторами прямо у себя дома. Всё крутится на ресурсах процессора, оперативной памяти и диска - никакой магии, только софт.

Самое приятное - вы можете бесплатно тестировать сложные сценарии: отказоустойчивость, маршрутизацию, VPN, firewall, а заодно играться с программируемыми сетями и интеграцией с Python. И всё это - до того, как вы вообще прикоснётесь к реальному «железу».

Что именно можно собрать в домашней лаборатории

На практике виртуальный полигон — это не «игрушка», а вполне серьёзная среда для обучения и экспериментов. Обычно я рекомендую начинать с простого, а дальше — как затянет.

  • Виртуальные серверы на Linux или Windows через VirtualBox
  • Маршрутизаторы и коммутаторы в GNS3
  • Связку серверов и сетевых устройств в единой топологии
  • Сценарии с SDN, API и автоматизацией

Если GNS3 вдруг покажется тесным, всегда есть EVE-NG. Это уже тяжёлая артиллерия, но для старта обычно хватает и GNS3.

Почему без Python сетевику дальше будет скучно

Современные сети постепенно перестают быть «ручными». Всё больше появляется концепций вроде SDN и «инфраструктуры как кода». И вот тут без Python уже никуда.

Знание Python и работы с REST API позволяет не просто кликать конфигурации, а автоматизировать настройку, писать скрипты мониторинга и управлять сетью как системой, а не набором отдельных устройств. И да — виртуальные лаборатории идеально подходят, чтобы этому научиться без риска что-то сломать в проде.

FAQ - коротко и по делу

Где практиковаться работе с сетями бесплатно?

Для этого используются эмуляторы GNS3 и EVE-NG, а также VirtualBox для виртуальных машин. Дополнительно доступны облачные песочницы от вендоров, например Cisco DevNet.

Какие требования к ПК для домашней сетевой лаборатории?

Ключевой ресурс — оперативная память. Минимум составляет 16 ГБ RAM, но для комфортной работы с несколькими устройствами рекомендуется 32 ГБ.

Зачем сетевому инженеру изучать Python?

Python используется для автоматизации и управления сетями через API. Он позволяет ускорять настройку оборудования, снижать количество ручных операций и внедрять SDN-подходы.

Thursday, 29 May 2025

Про Firewall Builder.

Привіт привіт.

Вам потрібно оновити брандмауер? Але ви забули, яка саме команда вам потрібна, тому шукаєте документацію, переглядаєте форуми, переглядаєте wiki, мучаєте ChatGPT, ... минає час, минає два. Нарешті ось щось схоже на потрібну команду! Спробуємо! Упсс, а не спрацювало. Ви повертаєтеся до пошуку...

Було так? Авжеш було, і не одноразово. 

Аж ось є чарівна пігулка - Firewall Builder тобто Конструктор брандмауерів який спрощує налаштування ваших брандмауерів і робить це візуально.  Звісно за умови що ви точно знаєте яка фільтрація трафіку вам потрібна.

Ключові поняття

  • Об'єкти . Конструктор брандмауера базується на концепції об'єктів. Користувачі створюють об'єкти, такі як IP-мережі та IP-адреси, для представлення елементів, які будуть використовуватися в правилах брандмауера.
  • Бібліотеки . Об'єкти зберігаються в бібліотеках. За замовчуванням Firewall Builder постачається з двома бібліотеками об'єктів. Бібліотека під назвою User використовується для зберігання об'єктів, створених користувачем. Бібліотека лише для читання під назвою Standard містить сотні попередньо визначених об'єктів, таких як поширені служби TCP та UDP.
  • Компіляція . Після створення політики з правилами брандмауера в Firewall Builder вам потрібно скомпілювати політику. Компіляція перетворює ваші правила з синтаксису Firewall Builder на синтаксис команд, який використовується цільовою платформою брандмауера. Щоразу, коли ви змінюєте правила брандмауера, вам потрібно перекомпілювати набір правил.

Макет графічного інтерфейсу

Програма Firewall Builder складається з трьох основних панелей, показаних на знімку екрана нижче.


  • Панель об’єктів . Об’єкти в активній бібліотеці відображаються в дереві об’єктів на панелі об’єктів. Для всіх можливих типів об’єктів, які користувач може створити в бібліотеці користувача, визначено порожні папки.
  • Панель правил . Коли об’єкт політики відкривається для редагування, він відображається на панелі правил. Натискання кнопки «+» у верхній частині панелі створює нове правило.
  • Панель редактора . Подвійне клацання на об’єктах відкриває їх для редагування на панелі редактора. Зміни в полях атрибутів об’єкта набувають чинності негайно.

Панелі відкриваються динамічно залежно від того, яку дію виконує користувач. Наприклад, подвійне клацання об’єкта для його редагування відкриє панель редактора, якщо вона ще не відкрита.

Monday, 7 October 2024

Защита сетевого оборудования.


Всем привет.

Хотя я уже далек от администрирования сетевого оборудования, но для тренировки мозга время от времени пользуюсь виртуальными лабораториями типа  CSRv, FTDv, APIC-EM. Разумеется я не мог не обратить внимания на свежее издание Базаров М. М. "Сети глазами хакера", СПб.: БХВ-Петербург, 2025. Сразу видно что ввиду внешней политики страны издания в первую очередь страдают умные головы в той же стране. Так и здесь, знаменитое издательство "БХВ-Петербург" последние годы все чаще просто переиздает популярные книги прошедших лет, либо книги современных ИТ-писателей из Индии. В данном случае изданы "записки на полях" сетевого инженера-практика. Прошу прощения, но ниже главу из книги я вычитывал трижды, хотя опечатки могли все равно остаться.

Безопасность телекоммуникационных устройств - вопрос острый, особенно в по­следнее время. Атаки на инфраструктуры провайдеров происходят все чаще. Сегодня я покажу вам,  как можно защитить сетевое оборудование от потенциального вторжения. Все команды я буду демонстрироваться на Cisco IOS. Однако сами механизмы безо­пасности реализованы у всех вендоров, отличия лишь в иерархии расположения компонентов и синтаксисе. 

Безопасность коммутационной матрицы САМ 

У Cisco IOS  есть несколько проблем сетевой безопасности.  Давайте посмотрим, на какие из них стоит обратить внимание в первую очередь. 

САМ (Content  Addressable  Memory)  - это  ассоциативная память коммутатора, внутри которой хранится таблица МАС-адресов и связанных с ними портов. Это несложный механизм, однако уже очень давно существует хулиганский вектор DоS-атаки, при которой атакующий переполняет САМ-таблицу с  помощью рас­сылки  Ethernet-кaдpoв  с  рандомизирующимися  МАС-адресами  источника,  что перебивает коммутационную матрицу.  Очень известный прием, но не упомянуть о нем я не могу. 

Защитить САМ-таблицы своих коммутаторов очень просто, достаточно использо­вать Port Security. В нашем случае эта настройка подходит для ограничения количе­ства МАС-адресов за портом коммутатора.  Допустим, если мы настроим ограниче­ние в 20  МАС-адресов на порту, а атакующий начнет в эфире флуд (каким-нибудь macof), то к порту будут уже применяться ограничения - в зависимости от настро­енной политики.  Вот пример конфигурации, при которой ставится ограничение в два МАС-адреса,  а при нарушении этого ограничения порт будет выключен. 

Router01(config)#  interface  range  gX/X 

Router01(config-if)#  switchport port-security maximum  <value> 

Router01(config-if)#  switchport port-security violation shutdown 

При такой конфигурации в момент нарушения политики МАС-адресов порт будет переведен в состояние err-disabled. Чтобы настроить автоматическое восстановле­ние порта из этого состояния, понадобится еще одна команда: 

Router01(config)#  errdisaЬle recovery  interval  120 

Router01(config)#  errdisaЬle recovery  cause  psecure-violation 

Sunday, 1 January 2023

Тестирование инфраструктуры c pyATS #3.

Всем привет. 

Продолжаю нашу тему фреймворков для тестирования инфраструктры. Сегодня мой пост является беглым отчетом по выполнению работы "7.6.3 Lab - Automated Testing Using pyATS and Genie" из Cisco DevNet.

Знакомтесь - pyATS (https://developer.cisco.com/pyats/). Это экосистема сквозного тестирования, изначально разработанная компанией Cisco и ставшая открытой в конце 2017 года. Ранее библиотека pyATS называлась Genie; эти названия используются в одном и том же контексте. Ввиду своего происхождения этот фреймворк целиком и полностью ориентирован на тестирование сетей.

Фреймворк доступен в PyPI:

(venv) $ pip install pyats[full]

Для начала рассмотрим некоторые демонстрационные сценарии из GitHub-репозитория:

git clone https://github.com/CiscoTestAutomation/examples

Мы сходу можем прогнать тест-пустышку чтобы оценить как все происходит:

pyats run job examples/basic/basic_example_job.py

Следом можно охватить отчетность по всем проведенным PyATS-тестам в формате HTML:

pyats logs view

P.S.: имейте ввиду - порт web-сервера отчетов динамический.


Ок, реальные тесты начинаются с создания файла испытательной модели (testbed) в формате YAML. Создадим простой testbed-файл testbed-pyats.yml для нашего устройства CSR1000v. Он похож на файл реестра hosts, знакомый нам от Ansible:

testbed: 

    name: pyATS

    credentials:

        default:

            username: admin

            password: super

        enable:

            password: super


devices:

    CSR: 

        alias: CSR

        type: iosxe

        connections:

            defaults:

                class: unicon.Unicon  

            vty:

                ip: 192.168.1.19

                protocol: ssh -o KexAlgorithms=diffie-hellman-group14-sha1

Friday, 9 December 2022

Время современного ИТ-инженера.

Всем привет.

Чем замечательно наше время для ИТ-инженера? Прежде всего тем что для своего профессионального развития ему стали доступны многие тестовые полигоны бесплатно. Собрать свою мини-сеть с сервером, станциями и даже маршрутизаторами можно на своем домашнем компьютере в VirtualBox или GNS3, главное чтобы ОЗУ было побольше. Благо что в дисковом пространстве недостатка уже нет. Вот мой список виртуального оборудования в VirtualBox:


Что недоступно как виртаульный образ (у вас нет подписки), то можно пошупать на сайте самого производителя оборудования. Например Cisco. Уверен, небольшая регистрация вас не затруднит.

Вы же знаете что многие производители сетевого оборудования все больше склоннны к программируемым сетям, поэтому программная начинка их железа все больше напоминает мне хорошо кастомизированный Linux. А поддержка REST API и Python из коробки идет как must have!

ИТ-бренды сами заинтересованы чтобы с их оборудованием было знакомо как можно больше будущих специалистов и вам для своей карьеры надо использовать эту возможность уже сегодня.

Успехов всем нам!

Friday, 28 January 2022

Полигон ELK.

Всем привет.

Использование rsyslog для хранения log-сообщений сетевого оборудования, и loganalyzer для их отображения, обозначило необходимость поиска, соответствующей современным требованиям, альтернативы. В результате анализа различных решений был сделан выбор в пользу open-source компонентов стека ELK. Был ли этот выбор полностью осознанным - скорее нет, ибо популярность ELK стека бьет все рекорды. Поэтому не пощупать его своими руками было бы неразумно. Тем более у меня была давняя задача разобраться с IDS SELKS изнутри, где ELK, как вы заметили, является основой.

Итак, основными элементами ELK являются: Elasticsearch (search engine – для хранения и быстрого поиска структурированных данных), Logstash (collector – для приема в различном формате данных, их фильтрации и преобразования, и последующей отправки в различные базы данных) и Kibana (инструмент для визуализации), которые и составляют акроним ELK. Это в классическом варианте исходя из названия, но в последнее время сюда активно подмешивают Filebeat, который идет как в в паре с Logstash, так и вместо него.

Подробное описание работы этих компонентов не планировалось в рамках данной статьи. Интересующая информация по стеку очень хорошо представлена на официальном сайте, в т.ч. в виде подробной документации, а также в огромном количестве статей и публикаций. Именно по ним я поднимал весь стек пошагово. За основу была взята подробная инструкция здесь, ему помагал материал отсюда и отсюда. Каждый автор решал свою практичечкую задачу поэтому мне пришлось компилировать нужное по ходу. Обычно ELK разворачивают на одном сервере  (как с SELKS), но я решил что это будет слишком просто, поэтому  в моем полигоне Elasticsearch один хост, Kibana второй хост, и Logstash+FileBeat третий. До кластера руки не дошли, но я уверен, что это будет создать не так уж и трудно.

В ходе работ было проведено: 

  • установка Elasticsearch
  • установка Kibana
  • установка Logstash
  • установка Filebeat для отправки логов в Logstash
  • установка и настройка Winlogbeat
  • установка плагина Filebeat для отправки netflow Cisco
  • настройка безопасности и авторизация в Kibana (несколько вариантов)
  • проксирование подключений к Kibana через Nginx
  • автоматическая очистка индексов в elasticsearch.


А теперь мои шаги:

1) Проверить для всех хостов стека с Ubuntu 

sudo timedatectl set-timezone Europe/Kiev

sudo apt-get install --reinstall systemd

2) Установить для всех хостов ELK стека

sudo apt-get install apt-transport-https

sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a  /etc/apt/sources.list.d/elastic-7.x.list

# Также ставим JDK for Elasticsearch (Host0) & Logstash (Host1)

sudo apt install default-jdk -y

java -version

3) Настройка Elasticsearch (Host0, IP 192.168.1.11, port 9200,9300) 

- /etc/elasticsearch/elasticsearch.yml:

network.host: 0.0.0.0 (or 192.168.1.11)

http.port: 9200

transport.host: localhost

transport.tcp.port: 9300

Tuesday, 18 January 2022

Фреймворки Scapy, Scrapli и Scrapy.


Всем привет.

Однажды мне удалось перепутать фреймворк Scapy со Scrapli. Оказалось этого мало - ведь есть еще один фреймворк под именем Scrapy. Что было с фантазией авторов на имена, но все фреймворки существуют по сей день, и служат совершенно разным целям. Поэтому пройдемся кавалерийским шагом по каждому.

Фреймворк Scapy.

Scapy является мощной программой интерактивной манипуляции пакетами на основе Python. Я на это ней уже пару раз останавливался.

Фреймворк Scrapli.

Scrapli это модуль, который позволяет подключаться к сетевому оборудованию используя Telnet, SSH или NETCONF. Также как и netmiko, Scrapli может использовать paramiko или telnetlib (и другие модули) для самого подключения, но при этом предоставляет одинаковый интерфейс работы для разных типов подключения и разного оборудования.

Установка scrapli:

pip install scrapli

Три основные составляющие части Scrapli:

• transport - это конкретный способ подключения к оборудованию

• channel - следующий уровень над транспортом, который отвечает за отправку команд, получение вывода и другими взаимодействиями с оборудованием

• driver - это интерфейс, который предоставляется пользователю для работы со scrapli.

Тут есть как специфические драйверы типа IOSXEDriver, который понимает как взаимодействовать с оборудованием конкретного типа, так и базовый драйвер Driver, который предоставляет минимальный интерфейс для работы через SSH/Telnet.

Saturday, 15 January 2022

Cisco Packet Tracer - новый взгляд.

Всем привет.

Выполняя обзор эмуляторов и симуляторов оборудования Cisco семь лет тому я, разумеется, упоминал и Cisco Packet Tracer. Ну как же было без него, ведь его каждая академия Cisco считает за основу основ для студента. Я уже и в онлайн академии начал выполнять лабораторные работы, как тут мое внимание обратили повторно на ветерана. За первоисточнком обращайтесь к Сергею Болдину в журнале "Системный администратор", первый номер за прошлый год.

Итак, суть не изменилась: Cisco Packet Tracer - это программное обеспечение для моделирования сетей, предназначенное для моделирования сетевых устройств Cisco. Вы можете использовать Cisco Packet Tracer для проектирования простых и довольно сложных сетевых топологий. Вы также можете настроить виртуальные машины, маршрутизаторы, коммутаторы и другие устройства в Packet Tracer для проверки топологии сети. Cisco Packet Tracer также можно использовать для моделирования беспроводных сетей, сетей IP-телефонии (VoIP) и многих других.

Все как обычно? Все да не все. Да, вполне логично, что количество активных Cisco-устройств было расширено, также было расширен список сервисов которые можно из коробки запускать на хосте или сервере.

Однако сейчас очень популярны устройства, которыми можно управлять по сети. Одни идут уже готовые, другие можно собрать из мелких деталей как конструктор Arduino. Стоп, причем здесь Arduino? А при том что Cisco Packet Tracer поместил симуляторы устройств типа IoT во вкладки Home, Smart City, Industrial раздела End Devices. Компоненты – в Boards, Actuators, Sensors раздела Components. В них доступны платы MCU и SBC (микроконтроллеры и однопроцессорные платы), к которым можно подключать массу готовых элементов: форсунки, охладитель воздуха, мотор, сервопривод, светодиод, динамик, нагревательный элемент, экран, сенсоры движения, металла, влажности, дыма, звука, ветра, воды, кнопки и прочие.

Вот так вот! Теперь это все доступно в Cisco Packet Tracer! И виноват в этом Cisco Нome Gateway DLC100. Наш герой в центре.



Saturday, 2 October 2021

Используем Flexible NetFlow.

Всем привет.

Мы уже знаем что NetFlow позволяет нам отслеживать потоки (flow) трафика в сети. Мы можем использовать эту информацию для решения таких проблем, как обнаружение узких мест, определения того, какие приложения используются, какую пропускную способность они используют и т.д.

Flexible NetFlow - это гибкий инструмент мониторинга трафика для задач оптимизации использования ресурсов, планирования производительности сети, определения оптимального уровня обеспечения качества обслуживания (QoS), а также для обнаружения событий сетевой безопасности.

Преимущества Cisco IOS Flexible NetFlow:

  • Гибкость и масштабируемость данных о потоках по сравнению с традиционным NetFlow;
  • Тонкие настройки идентификации трафика;
  • Возможность сосредоточиться и контролировать конкретное сетевое поведение;
  • Возможность отслеживать более широкий спектр информации о пакетах, создавая новую информацию о поведении сети;
  • Улучшенное обнаружение сетевых аномалий и безопасности;
  • Объединение нескольких технологий учета в один учетный механизм.

Компоненты Flexible NetFlow:

  • Запись потока (Flow record) - потоки определяются множеством различных фрагментов информации о трафике; информация, используемая Flexible Netflow, может быть определена в пользовательских или стандартных записях.
  • Экспортер потока (Flow exporter) -  сервер/ы, на который/которые будет экспортироваться информация о потоках.
  • Монитор потока (Flow monitor) - компонент, который используется для обеспечения фактического мониторинга трафика на настроенном интерфейсе. Когда монитор потока применяется к интерфейсу, создается кэш монитора потока, который используется для сбора трафика на основе ключевых (key) и неключевых (nonkey) полей в настроенной записи.
  • Шаблон потока (Flow Sampler) используется, когда имеется большой объем трафика для анализа, который потенциально может повлиять на производительность контролируемого устройства. В этой ситуации можно использовать шаблон потока, чтобы ограничить количество пакетов, которые будут анализироваться монитором потока. Например, 1 из каждых 2 пакетов может быть захвачен и проанализирован.

Пользовательские определения по практикуму от SEDICOMM:

CUSTOM-OUT - пользовательская запись исходящего потока

COLLECTOR-HOST - экспортер потока

INBOUND-MONITOR - монитор входящего потока

OUTBOUND-MONITOR - монитор исходящего потока

1. Итак, создадим два вида записей потока: стандартный (ipv4 original-input) и пользовательский (CUSTOM-OUT). Для создания пользовательской записи необходимо выполнить настройки:

flow record CUSTOM-OUT

description Custom Flow Record for outbound traffic

# key items

match ipv4 destination address

match transport destination-port


# no key items

collect counter bytes

collect counter packets

exit


Проверяем:

show flow record CUSTOM-OUT

Saturday, 25 September 2021

Практикум с Netmiko.

Всем привет.

Продолжаем  автоматизировать рутинные процессы сетевого администрирования c Никитой Турковым. Сегодняшняя статья будет посвящена примерам и описанию работы скриптов, в которых также используем Netmiko и Python.

Обработка ошибок.

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

Зачастую логика скрипта может быть написана правильно, но он все равно не отработает, предоставив специфический вывод об ошибке. В случае конфигурирования более 1-го сетевого узла, это может привести к выходу из программы и потери конечного ожидаемого результата.

Возможные причины сбоя вашего скрипта:

1. Некорректные аутентификационные данные.

2. Истек таймаут для подключения.

3. Прерывание передачи трафика.

4. Недоступность порта SSH со стороны сервера.

5. Различные другие ошибки.

Согласитесь, было бы удобно, каким-либо образом обрабатывать такие ошибки и сообщать пользователю о конкретной проблеме, а что даже наиболее важно - не прерывать выполнение программы далее. 

Для этого в Python есть конструкция try / except.

try:

  BLOCK

except CODE_ERROR as err:

    print("OS error: {0}".format(err))

То есть, в блоке "Try" мы пытаемся выполнить какой-либо код , он может вызвать ошибку, тогда мы пробуем ее обработать и получить о ней вывод - с помощью блока "Except". При этом скрипт продолжит свою работу далее, если это не последние шаги в программе.

Friday, 24 September 2021

Автоматизация сетевых задач - Netmiko.

Всем привет.

Продолжим тему автоматизации сетевых задач с библиотекой Netmiko. Итак, Netmiko - это Python библиотека для работы с сетевыми устройствами, в качестве инициализации соединений она использует Paramiko, но содержит много встроенных методов и классов "под капотом".

Библиотека не входит в список стандартных модулей для Python 3, поэтому ее требуется установить:

pip install netmiko

В первую очередь рекомендовано ознакомиться со списком поддерживаемых сетевых ОС, из стабильных это:

• Arista vEOS

• Cisco ASA

• Cisco IOS

• Cisco IOS-XE

• Cisco IOS-XR

• Cisco NX-OS

• Cisco SG300

• HP ProCurve

• Juniper Junos

• Linux


Синтаксис и логика.

Напомню, в Python3 есть удобная возможность тестировать команды, для этого достаточно лишь вызвать сам интерпретатор:

python3

Первично, нужно импортировать функцию ConnectHandler и подготовить переменную типа словарь, в котором будут заданы необходимые параметры для SSH-подключения. 

In [1]: from netmiko import ConnectHandler             

In [2]: cisco = { 

   ...:   "device_type": "cisco_ios", 

   ...:   "host": "cisco.domain.com", 

   ...:   "username": "admin", 

   ...:   "password": "cisco123", 

   ...:   }  

После того, как определили "device_type": "cisco_ios", можем создавать соединение с устройством. Список поддерживаемых видов ОС доступен по ссылке.

Для удобства передадим функцию в переменную "net_connect", ее будет использовать далее при отправке команд и т.д.

In [3]: net_connect = ConnectHandler(**cisco)

С помощью ** мы передаем ключ-значение в функцию ConnectHandler, более подробно о теории по ссылке. Альтернативно возможно отправить параметры функции вручную:

net_connect2 = ConnectHandler(device_type="cisco_ios", host="cisco.domain.com", username="admin", password="cisco123") 

После создания переменной  "net_connect" и загрузки в нее параметров, можно убедиться что SSH-соединение установлено:

In [5]: net_connect.find_prompt()

Out[5]: "cisco3#" 

Получен ответ (Out[5]:) от сетевого устройства, сессия активна, находимся в режиме enable (Cisco OS). 

Thursday, 23 September 2021

Автоматизация сетевых задач - Paramiko.

Всем привет.

Сегодня транслирую вам материал Никиты Туркова про автоматизацию работы сетевого администратора  с использованием пакетов Paramiko и Netmiko.

Автоматизация процесса обслуживания сетевых устройств невозможна без использования хтоя бы одного из языков программирования. Для 2021 года базовое знание Python это уже не преимущество кандидата (системного администратора, или сетевого инженера) , а одно из требований при трудоустройстве на работу.  Одно из весомых преимуществ языка Python - большое количество сторонних библиотек для решения задач из различных областей. Естественно, энтузиасты и разработчики в рамках работы с сетью и сетевым оборудованием написали достаточное количество модулей. Перечислим те из них, которые поддерживают режим взаимодействия CLI:

• telnetlib - встроенная библиотека, она используется для обеспечения доступа к сетевому устройству и отправке команд по Telnet протоколу (не является безопасным).

• pexpect - внешняя библиотека работает для передачи данных по протоколам: ssh, telnet, sftp и др. Считается универсальным инструментом для передачи команд как в ОС, так и на сетевое оборудование. Логика работы основана на ожидании получения соответствующей строки от устройства и дальнейшей отправки команды. 

• paramiko - внешняя библиотека, обеспечивающая организацию SSH-соединения. Работает в режиме клиента и сервера, соответственно в качестве передачи данных может использоваться только протокол SSH.

• netmiko - внешняя библиотека от сообщества сетевых инженеров и администраторов, была разработана специально для взаимодействия с сетевым оборудованием различных производителей (адаптация под сетевую ОС). Netmiko включает в себя paramiko, описанный раннее.

Наиболее популярные из них это Paramiko и Netmiko. Сегодня мы рассмотрим модуль Paramiko.

SSH и Paramiko.

Paramiko - это реализация протокола SSHv2 на Python. Paramiko предоставляет функциональность клиента и сервера. В рамках статьи будет рассматриваться лишь функциональность клиента, серверную часть возможно изучить самостоятельно.

Библиотека Paramiko не входит в список стандартных модулей для Python 3, поэтому ее требуется установить:

pip install paramiko

В Python3 есть отличная возможность тестировать ваши скрипты, отправляя одиночные команды, для этого достаточно лишь вызвать сам интерпретатор:

python3

Логика работы Paramiko: 

1. создание клиента подключения SSH;

2. настройка клиента подключения SSH;

3. выполнение подключения SSH;

4. переход в интерактивный режим отправки команд для подключения SSH.

Tuesday, 6 April 2021

Механизм Low Level Discovery.


Всем привет. 

Для всякого администратора на начальном этапе развития инфраструктуры все просто. Есть  десяток серверов и для мониторинга их в Zabbix все настройки можно проставить вручную. Но любая система постепенно, но неумолимо растет. И вот серверов уже не десять, а пятьдесят или сто! Опять описывать их в Zabbix? Или к примеру мониторинг файловых систем и разделов в Linux в тех случаях когда количество дисков может меняться от сервера к серверу. Т.е. случай на случае когда заранее доподлинно неизвестны характеристики сервера. 

Справиться с такой ситуацией как раз и помогает механизм Low Level Discovery. Низкоуровневое обнаружение (LLD) дает возможность автоматизировать создание метрик (элементов данных), хостов, триггеров и графиков для разных объектов в системе мониторинга.  

Ниже приведу три примера написания правил LLD из онлайн-библиотеки Вячеслава Лохтурова:

  • автоматическое добавление Cisco devices by SNMP.
  • статистика дискового ввода/вывода.
  • мониторинг свободного места на дисках, которые монтируются в процессе работы.

1. Автоматическое добавление Cisco устройств которые мониторятся по SNMP.

1.1. Добавляем правило обнаружения обьекта по SNMP.

Configuration->Discovery

Discovery rules

  Name: Local network

  IP range: 192.168.1.10-20

  Checks: 

    Check type: SNMPv2 agent 

    SNMP community: public

    SNMP OID .1.3.6.1.2.1.1.5.0

      или

             SNMPv2-MIB::sysName.0

    Add

  Update interval: 5m

  Device uniqueness criteria: IP address  

  Enabled: yes

Saturday, 3 April 2021

Мощное средство Cisco NBAR.

Всем привет.

До недавних пор считалось что анализировать сеть с помощью NetFlow - это вполне современно и функционально. Действительно, анализизаторы NetFlow многими считаются полезными инструментами для мониторинга и анализа сетевого трафика. Анализаторы NetFlow позволяют вам определить те машины и устройства, которые негативно влияют на пропускную способность вашей сети, найти узкие места в вашей системе, а также, в конечном счете, повысить общую эффективность функционирования вашей сети.

Напомню как можно задействовать  сбор данных в критических точках для обнаружения угроз в исходящем сетевом трафике через Cisco NetFlow. 

Шаблон для IOS системы:

 # conf t

(config)# mls netflow interface

(config)# mls flow ip interface-full

(config)# ip flow-export source <interface x/x>

(config)# ip flow-export version <#>

(config)# ip flow-export destination <ip address | esl record> <port>

(config-int)# ip flow ingress

#

Шаблон для NX-OS:

# conf t

(config)# feature netflow

(config)# flow record <record-name>

(config)# match ip ipv4 source address

(config)# match ip ipv4 destination address

!

(config)# flow exporter <exporter-name>

(config)# destination <ip address | esl-record>

(config)# transport UDP 2055

(config)# version <#>

(config)# source <interface>

(config)# flow monitor <monitor-name>

(config)# record <record-name>

(config)# exporter <exporter-name>

(config-int)# ip flow monitor <monitor-name> input

(config)# end

#

Friday, 22 January 2021

Дублирование netflow и syslog-событий на два адреса.

Всем привет.

Повторение - мать учения. Или мучения, а кому как. Так вот, на днях поступила команда где с маршрутизатора Cisсo в срочном порядке надо перевести все события на новый NetFlow-сервер.

В приницпе с этим не должно возникнуть никаких проблем. Я об этом писал ранее.

Но меня вчера заинтересовал вопрос возможности дублирования как syslog-событий так и netflow на два, или больше, адреса (сервера). Так как старый log-сервер у нас продолжал успешно работать как и раньше.

Оказалось что для  Cisсo надо просто указать адресацию повторно той же командой (веделено жирным шрифтом). Но всем на заметку пишу весь блок команд для настройки  syslog и netflow протоколов.

# Syslog ################################

Отправка логов на syslog сервер:

Asa53xx231#conf t

Asa53xx231(config)#logging facility local0

Asa53xx231(config)#logging host server1

Asa53xx231(config)#logging host server2

Asa53xx231(config)#exit

ИЛИ

Asa53xx231#conf t

Asa53xx231(config)#logging trap ?

  <0-7>          Logging severity level

  alerts         Immediate action needed           (severity=1)

  critical       Critical conditions               (severity=2)

  debugging      Debugging messages                (severity=7)

  emergencies    System is unusable                (severity=0)

  errors         Error conditions                  (severity=3)

  informational  Informational messages            (severity=6)

  notifications  Normal but significant conditions (severity=5)

  warnings       Warning conditions                (severity=4)

Sunday, 3 January 2021

Менеджер событий Cisco EEM.


Всем привет.

Сisco IOS Embedded Event Manager (EEM) - это подсистема Cisco IOS, которая позволяет создавать апплеты EEM. Аплеты EEM состоят из операторов, которые обнаруживают событие, произошедшее на устройстве IOS или в подключенной сети, и действий, которые должны выполняться при обнаружении события. В IOS доступен ряд детекторов событий, количество которых может варьироваться в зависимости от версии IOS. Действия EEM включают выполнение команд IOS, создание ловушки SNMP (SNMP trap), выполнение других политик EEM или отправку уведомления по электронной почте на адрес, указанный в политике и другие.

Следущая команда показывает какая версия EEM используется в вашем IOS и какие события (events) доступны:

R3#sh event manager version 

Далее рассмотрим несколько примеров использования апплетов ЕЕМ. Создадим резервироваие нашего канала в интернет и мониторинг сети с уведомлением администратора по email.

Для проверки доступности интернет будем пинговать DNS-сервер google 8.8.8.8 через ip sla если у нас два провайдера. Предварительно необходимо прописать маршрут, чтобы трафик до них всегда шел через нужного нам провайдера (ip route 8.8.8.8 255.255.255.255). Итак, запустим echo-запросы с таймаутом в 500 ms и проверкой раз в час.

ip sla 1
icmp-echo 8.8.8.8
timeout 500
frequency 3600
ip sla schedule 1 life forever start-time now
track 1 rtr 1 reachability

#1. Резервироваие канала интернет.

Создаем событие - если google не пингуются, в свойствах VPN-туннеля в качестве источника указываем WAN-интерфейс второго провайдера

event manager applet ISP1-DOWN
event track 1 state down
action 0.9 cli command "enable"
action 1.0 cli command "conf t"
action 1.1 cli command "int tu0"
action 1.2 cli command "tunnel source FastEthernet0/2/0"
action 1.3 syslog msg "ISP1 is Down"
action 1.4 cli command "end"
action 1.5 cli command "exit"

Теперь создаем событие - если google доступен, то возвращаемся обратно к первому провайдеру.

event manager applet ISP1-UP
event track 1 state up
action 0.9 cli command "enable"
action 1.0 cli command "conf t"
action 1.1 cli command "int tu0"
action 1.2 cli command "tunnel source FastEthernet0/1/0"
action 1.3 syslog msg "ISP1 is Up"
action 1.4 cli command "end"
action 1.5 cli command "exit"

Monday, 23 November 2020

Пользовательский модуль в Ansible.


Всем привет.

На данный момент вам может начать казаться, что управление сетевыми средствами в Ansible во многом зависит от обнаружения правильного модуля для своего устройства. Модули предоставляют некий способ абстрактного взаимодействия между управляемым хостом и самой управляющей машиной, в то время как он делает для вас возможным сосредоточиться на самой логике вашей работы. До этого момента мы знаем что все основные производители предоставляют некий широкий диапазон поддержки модулей для Cisco, Juniper и Arista.

Рассмотрим в качестве примера модули Cisco Nexus - помимо конкретных задач, таких как управление соседним BGP (nxos_bgp) и сервером aaa (nxos_aaa_server), большинство производителей также предоставляют способы исполнения произвольного отображения (nxos_config) и настройки (nxos_config) команд. 

Но что если используемое нами в настоящий момент устройство не имеет прямо сейчас никаких модулей, которые мы бы могли найти в сети? 

Поэтому мы рассмотрим способ которым можно устранить такую ситуацию написав свой собственный пользовательский модуль.

1-й пользовательский модуль.

Написание некоторого пользовательского модуля не обязательно усложнять, на самом деле он даже не обязан быть на Python. Но сегодня мы будем использовать Python для наших пользовательских модулей. Мы предполагаем, что данный модуль это то, что мы будем применять самостоятельно и в своей команде не обращаясь дополнительно к Ansible, таким образом игнорируя некое документирование и форматирование. По умолчанию, если вы создаёте некую папку библиотеки в том же самом каталоге, что и ваш плейбук, Ansible включит этот каталог в путь поиска модуля. Такие модули должны возвращать некий вывод JSON обратно в свой плейбук.

Saturday, 13 June 2020

Домашний полигон.

Всем привет.

Пользуясь моментом и прелестями удаленной работы решил я соорудить себе дома полигон для отработки некоторых сетевых нюансов. По большому счету мне надобилась VirtualBox в которой была развернута виртуальная Debian Linux на которой, в свою очередь, поднят GNS3 с эмуляцией 3-х маршрутизаторов Cisco. Такой каламбур вышел по причине тестирования двух технологий одновременно: Ansible и Zabbix. Собственно основная задача - весь полигон должен видеть интернет и сервер Zabbix, который находится в первой подсети 192.168.1.0/24. Схемка полигона ниже и что мне для этого понадобилось.


В качестве Cloud-1 выступает Debian VM. Ее сетевые настройки получились следующие.

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:f0:ae:b2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.240/24 brd 192.168.1.255 scope global dynamic enp0s17
       valid_lft 85797sec preferred_lft 85797sec
    inet6 fe80::a00:27ff:fef0:aeb2/64 scope link
       valid_lft forever preferred_lft forever
3: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 82:f8:51:83:45:36 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.100/24 scope global br1
       valid_lft forever preferred_lft forever
    inet6 fe80::546c:a3ff:fe10:6b61/64 scope link
       valid_lft forever preferred_lft forever
6: gns3tap0-0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br1 state UNKNOWN group default qlen 1000
    link/ether 82:f8:51:83:45:36 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::80f8:51ff:fe83:4536/64 scope link
       valid_lft forever preferred_lft forever

$ip route
default via 192.168.1.1 dev enp0s17 proto static metric 100
192.168.1.0/24 dev enp0s17 proto kernel scope link src 192.168.1.240 metric 100
192.168.100.0/24 dev br1 proto kernel scope link src 192.168.100.100

Friday, 8 May 2020

GNS3 и устройство Host.

Всем привет.

В эмуляторе сетей GNS3 при добавлении своего компьютера в тестовую сеть можно столкнуться с отсутствием такого устройства как "Host" в наборе шаблонов. На самом деле вопрос его отсутствия там решается легко. 

Вначале надо создать на вашем реальном ПК loopback интерфейс (если его у вас нет то используйте утилиту Hdwwiz.exe для его создания или один из адаптеров VMNet от VMware). 

Далее по меню в gns3 >"new appliance template" > "Add a cloud" > "Run the cloud node om your local computer" > "Name: РС-1" (или другое произвольное). 

После заходим в редактор конфигурации данного хоста т.е. "edit"  >  в поле "Ethernet Interfaces" отмечаем внизу "Show special Ethernet interfaces" и из списка выбираем тот самый loopback из нашего реального ПК. 

В том же редакторе конфигурации данного хоста,  переходим на вкладку "Misc." и в поле Symbol меняем символ на "Сomputer", остальное можно оставить по умолчанию. 

Или еще легче - обратите внимание что вместо Host в более новых версиях GNS3 используется девайс Сloud. Там все так же - просто подключаетесь к loopback интерфейсу вашего ПК.


На этом все.

Monday, 17 February 2020

Бесплатные эмуляторы сети.

Всем привет.

Как-то разбираясь с мощным эмулятором GNS3 по видео-курсу Натальи Самойленко начал понимать разницу между симулятором и эмулятором для сети. К своему стыду раньше я даже не обращал на это свое внимание. Я тут же задался другим вопросом - а какие еще бывают бесплатные симуляторы/эмуляторы сетей кроме известных GNS3 и Cisco Packet Tracer? 

Недолго бороздя просторы сети нашел у одного парня (школа NetSkills) быстрый ответ. Далее текст автора.

1) Huawei eNSP - эмулятор сетевого оборудования Huawei. Можно эмулировать коммутаторы, роутеры и даже межсетевой экран. Ну очень похож на GNS3. Софт бесплатный, но требует регистрации на сайте. Сделан криво. Ссылка на него часто меняется.


2) HP Network Simulator - эмулятор сетевого оборудования HP. Продукт основан на новой сетевой операционной системе HP Comware v7 и предназначен для сетевого моделирования и изучения пользовательского интерфейса и функциональных возможностей ОС HP Comware. Так же бесплатен. Подробнее здесь.

Версия на печать

Популярное