По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Привет, Мир! Сейчас расскажем об одном полезном методе траблшутинга и поиска проблем на роутерах MikroTik. Суть данного метода заключается в том, чтобы отлавливать (“сниффить”) пакеты, проходящие через определённые интерфейсы нашего роутера и анализировать их сразу же при помощи Wireshark. Prerequisites Итак, для того, чтобы воспользоваться данным методом нам понадобится: Роутер MikroTik (в нашем случае использовался RB951Ui-2HnD с версией прошивки RouterOS 6.40.2 ) Программа Wireshark (в нашем случае версия 2.4.1) Компьютер или сервер, находящийся в одной сети с роутером с запущенным Wireshark’ом Настройка Первым делом открываем Wireshark, выбираем интерфейс, на котором хотим “сниффить” (в нашем случае это Ethernet, то есть интерфейс, с помощью которого компьютер подключается к роутеру) и устанавливаем следующий фильтр - udp port 37008. Как показано на рисунке: Понятно, что если мы запустим захват пакетов без этого фильтра, то нам просто вывалится весь трафик, который проходит через этот интерфейс, а мы этого не хотим. Что же это за фильтр такой и что за порт - 37008? Дело в том, что MikroTik шлёт UDP дэйтаграммы, то есть весь перехваченный трафик, именно на этот порт streaming server’а, а в качестве этого стриминг сервера, как вы могли догадаться, у нас выступает наш компьютер с запущенным Wireshark’ом. Эти пакеты инкапсулируются по протоколу TZSP (TaZmen Sniffer Protocol), который используется для переноса в себе других протоколов. Итак, запускаем перехват пакетов на определённом интерфейсе с фильтром udp port 37008 и видим, что ничего не происходит и пакетов нет. А теперь самое интересное – подключаемся к MikroTik’у через WinBox, переходим в раздел Tools далее Packet Sniffer и видим следующее окно с настройками: На вкладке General можем оставить всё по умолчанию, переходим на вкладку Streaming: Ставим галочку в Streaming Enabled, в поле Server указываем IP адрес нашего компьютера, на котором запустили Wireshark и ставим галочку на Filter Stream, чтобы активировать фильтр, который будет настраиваться на следующей вкладке - Filter На данной вкладке мы можем отфильтровать интересующий нас трафик. Например, у нас в сети есть IP-АТС Asterisk и мы хотим посмотреть, какие пакеты он получает и отправляет через роутер MikroTik. Так, например, можно отследить коммуникацию IP-АТС с сервером провайдера VoIP услуг. Итак, выбираем интерфейсы, на которых хотим отлавливать пакеты (в нашем случае это bridge), далее отфильтруем трафик по определённому IP-адресу в поле IP Address (Наша IP-АТС), укажем протокол - 17 (udp) и порт 5060 (sip). Направление укажем любое - any и Filter Operation = or , то есть логика работы данного фильтра – “или”. Если вы хотите отлавливать пакеты только по жёстко определённому фильтру, то логику следует указать and, то есть – совпадение всех условий фильтра. Далее нажимаем Apply и Start и видим, что сниффер перешёл в статус “running” Отлично, теперь отправляемся в Wireshark и видим, что он нам уже наловил нужных пакетов в соответствии с правилами фильтра. В нашем случае – это коммуникация IP-АТС Asterisk с сервером провайдера VoIP услуг, запрос на регистрацию и подтверждение с обратной стороны. Обратите внимание, что тип инкапсуляции - TZSP, однако, Wireshark смог правильно деинкапсулировать эти пакеты и отобразить нам пакеты SIP.
img
Windows 10 предлагает встроенный инструмент сетевого анализатора PktMon.exe для мониторинга внутреннего распространения пакетов и отчетов о сбрасывании пакетов. Этот инструмент может помочь вам исследовать сеть и помочь устранить причину задержки в сети, выявить уязвимые приложения и, при использовании с дополнительным набором инструментов, может предоставить представление о главных показателях. В то время как пользователи Linux всегда имели инструмент tcpdump для отслеживания сети, пользователям Windows приходилось устанавливать сторонние программы, такие как Microsoft Network Monitor и Wireshark. Сетевой анализатор пакетов pktmon.exe в Windows 10 PktMon или Packet Monitor - это новый сетевой анализатор (сниффер) или средство диагностики сети и мониторинга пакетов. Он находится в папке System (C:Windowssystem32pktmon.exe.), что означает, что вы можете вызвать его из командной строки, при помощи утилиты Run или PowerShell. Как запустить Packet Monitor в Windows 10? Для запуска Packet Monitor сначала необходимо открыть окно командной строки. Нажмите Ctrl + R, чтобы открыть Run и введите cmd, затем нажмите Enter или нажмите кнопку OK. В командной строке введите pktmon.exe и нажмите Enter. Что может PktMon? Если вы запустите справку PktMon, введя в командной строке pktmon help, вот что вы получите: filter: управление фильтрами пакетов comp: управление зарегистрированными компонентами reset: сброс счетчиков до нуля start: начать мониторинг пакетов stop: остановить мониторинг format: преобразовать файл логов в текст unload: выгрузить драйвер PktMon. И если вам нужна дополнительная помощь по конкретной команде, вы можете запустить справку для этой команды. Вот как это выглядит: pktmon filter help pktmon filter { list | add | remove } [OPTIONS | help] Commands list Display active packet filters. add Add a filter to control which packets are reported. remove Removes all filters. Как использовать PktMon для мониторинга сетевого трафика Рассмотрим как использовать PktMon. В этом примере предполагается, что вы хотите отслеживать порт на компьютере, который часто имеет проблемы. Для этого необходимо: Создать фильтр для мониторинга порта Начать мониторинг Экспортировать логи в читаемый формат Создание фильтра Основная опция, которая позволяет вам отслеживать трафик - это filter. Используя эту опцию, вы можете создать фильтр, чтобы контролировать, какие пакеты будут под наблюдением, на основе кадра Ethernet, заголовка IP, заголовка TCP и инкапсуляции. Если вы запустите нижеупомянутую команду, вы получите полную информацию о том, что вы можете сделать с фильтром. pktmon filter add help Итак, возвращаясь к нашей теме, давайте предположим, что нам нужен порт TCP 1088. Это может быть порт, используемый вашим пользовательским приложением, который начал сбоить. Откройте командную строку или PowerShell с правами администратора и создайте фильтр пакетов с помощью команды: pktmon filter add -p [port] pktmon filter add -p 1088 Чтообы удалить все фильтры, выполните команду pktmon filter remove Начать мониторинг Поскольку это не автоматическая программа, работающая в фоновом режиме, а работающая по требованию, вам нужно запустить мониторинг вручную. Запустите следующую команду, чтобы начать мониторинг пакетов: pktmon start --etw - p 0 Она запустит мониторинг и создаст файл с логами в указанном месте. Вам нужно будет вручную останавливать мониторинг, используя аргумент stop, чтобы остановить ведение лога, или это само закончится, когда компьютер выключится. Если вы запустите команду с -p 0, то она будет захватывать только 128 байтов пакета. После выполнения pktmon записывает все пакеты на ВСЕХ сетевых интерфейсах устройства. Чтобы захватывать весь пакет и только с определенного устройства Ethernet, вы можете использовать аргументы -p 0 (захват всего пакета) и -c 13 (захват только с адаптера с идентификатором 13). Чтобы определить ID вашего адаптера, вы можете запустить команду pktmon comp list Log filename: C:Windowssystem32PktMon.etl Logging mode: Circular Maximum file size: 512 MB Экспорт лога в читаемый формат Файл журнала сохраняется в файле PktMon.ETL, который можно преобразовать в удобочитаемый формат с помощью следующей команды: pktmon format PktMon.etl -o port-monitor-1088.txt Таким образом мы на выходе получаем .txt файл с логами, который можно открыть в блокноте. Однако чтобы извлечь выгоду из полученных данных, стоит скачать и установить Microsoft Network Monitor и использовать его для просмотра файла ETL. Используя Network Monitor, вы можете увидеть полный пакет, который был отправлен, включая любую текстовую информацию. Мониторинг в реальном времени Вы можете включить мониторинг в реальном времени, используя аргумент -l real-time. Это приведет к тому, что захваченные пакеты будут отображаться непосредственно на экране, а также сохраняться в файле ETL. Microsoft также добавила возможность конвертировать файлы ETL в формат PCAPNG, чтобы их можно было использовать в таких программах, как Wireshark. pktmon pcapng help После преобразования файла в формат PCAPNG их можно открыть в Wireshark.
img
Основная цель любого проекта по разработке ПО – получить прибыль за счет автоматизации бизнес-процессов. Чем быстрее вы начнете выпускать новые версии, тем лучше для компании. Но как же научиться выпускать новые версии максимально быстро? Конечно же, все можно делать вручную. Например, подключить удаленный сервер через SSH, клонировать клонировать репозиторий с новым кодом, собрать его и запустить через командную строку. Да, такой способ работает, но он малоэффективен. Сегодня мы поговорим об автоматизации процесса разработки и выхода новых версий. CI и CD – это два сокращения, которые означают Continuous Integration (Непрерывная интеграция) и Continuous Delivery (Непрерывное развертывание). CI CI описывает процесс добавления изменений в репозиторий. Ниже схематически представлен простой пример коллективной разработки. Одновременно может работать целая группа людей, но все изменения передаются в главную ветку master поэтапно. Хотя даже в такой простой схеме возникает несколько вопросов. Как мы узнаем, что код, который идет в ветку master, компилируется? Мы хотим, чтобы разработчики писали тесты для кода. Как быть уверенными в том, что тестовое покрытие не уменьшится? Все сотрудники команды должны форматировать код в соответствие с определенным стилем. Как отследить возможные нарушения? Конечно же, все это можно проверить вручную. Но такой подход весьма хаотичен. Кроме того, по мере разрастания команды выполнять подобные проверки становится сложнее. CI используется для автоматизации выше обозначенных пунктов. Начнем с первого пункта. Как можно проверить, что новые изменения не сломают сборку? Для этого нам потребуется еще один блок в схеме. Большинство CI-процессов можно описать по следующему алгоритму. При открытии каждого Pull Request (запроса на включение изменений) и отправке новых изменений, Git-сервер отправляет уведомление CI-серверу. CI-сервер клонирует репозиторий, проверяет исходную ветку (например bugfix/wrong-sorting) и сливает ее с основной веткой master. Затем запускается скрипт сборки. Например ./gradlew build. Если команда возвращает код «0», то сборка прошла успешно. Все остальные значения считаются ошибкой. CI-сервер отправляет запрос на Git-сервер с результатом сборки. Если сборка прошла без ошибок, то Pull Request разрешается слить. В противном случае он блокируется. Данный процесс гарантирует, что код, попадающий в ветку master, не сломает дальнейшие сборки. Проверка тестового покрытия Давайте немного усложним задачу. Предположим, нам захотелось установить минимальный охват тестового покрытия. Это означает, что в любой момент времени покрытие ветки master должно быть не менее 50%. Плагин Jacoco идеально справляется с этой задачей. Вы просто настраиваете его так, чтобы при охвате тестового покрытия ниже допустимого, сборка уходила в ошибку. Реализовать такой подход проще некуда. Но есть небольшая оговорка. Этот метод работает только при условии, что плагин настраивался на старте проекта. Представим ситуацию: вы работаете над проектом, которому уже 5 лет. С момента первого коммита никто не проверял тестовое покрытие. Разработчики добавляли тесты в случайном порядке и без какой-либо организации. Но вот однажды вы решаете увеличить количество тестов. Вы настраиваете плагин Jacoco на минимальную планку в 60%. Спустя какое-то время разработчик открывает новый Pull Request. Затем разработчики вдруг понимают, что покрытие – всего лишь 30%. Так что для успешного закрытия задачи нужно покрыть не менее 30% кода продукта. Как вы можете догадаться, для проекта 5-летней давности – это практически неразрешимая проблема. Но что, если будут проверяться только будущие изменения в коде, а не весь продукт? Если в Pull Request разработчик изменит 200 строк, то нужно будет охватить не менее 120 из них (при тестовом покрытии в 60%). Тогда не придется проходить по множеству модулей, которые не относятся к задаче. В принципе, проблема решаема. Но как применить все это к проекту? К счастью, есть решение. Отчет Jacoco отправляется на сервер тестового покрытия. Одно из самых популярных решений – SonarCloud. Сервер хранит статистику по предыдущим вычислениям. Это очень удобно: вычислять тестовое покрытие не только всего кода, но и будущих изменений. Затем результат анализа отправляется на CI-сервер, который перенаправляет его на Git-сервер. Такая рабочая модель позволяет применять культуру обязательного тестирования на любой стадии развития продукта, поскольку проверяется лишь часть изменений. Если говорить о стиле оформления кода, то отличий практически нет. Можете попробовать плагин Checkstyle. Он автоматически отклоняет сборку, которая нарушает любое из заявленных требований. Например, в коде есть неиспользованный импорт. Кроме того, вы можете присмотреться к облачным сервисам, которые выполняют анализ кода и визуально отображают результаты в виде графиков (SonarCloud это тоже умеет). CD CD описывает процесс автоматического развертывания новой версии продукта. Давайте еще немного подкорректируем схему CI. Вот так конвейерный процесс CI/CD мог бы выглядеть в реальном проекте. Первое отличие – теперь CI-сервер называется CI/CD-сервером. Дело в том, что зачастую оба процесса (CI и CD) выполняются одним и тем же диспетчером задач. Так что мы будем рассматривать именно этот случай. Но так бывает не всегда. Например, задачи по интеграции могут делегироваться на GitLab CI, а задачи по доставке – отдаваться в Jenkins. Правая часть схемы изображает CI. Мы обсудили ее выше. Слева показана CD. Задача по CD создает проект (или повторно использует артефакты, полученные на стадии CI) и развертывает его на конечном сервере. Стоит отметить, что сервер в нашем случае – это понятие абстрактное. Например, развертывание может выполняться в кластер Kubernetes. Так что самих серверов может быть несколько. Обычно после стадии развертывания на почту приходят сообщения о выполнении. Например, CD-сервер может уведомлять подписчиков об успешном развертывании/ошибках. В любом случае, возникает важный вопрос. В какой момент мы должны запускать задачи по CD? Триггеры могут быть разными. Развертывание после каждого слияния Pull Request. Развертывание по расписанию. Развертывание после каждого слияния Pull Request с определенной веткой. Сочетание нескольких вариантов. В первом пункте процесс выстроен так, что задачи по CI и CD всегда выполняются последовательно. Данный подход весьма популярен при разработке программ с исходным кодом. Библиотека Semantic Release помогает настроить проект для прозрачной интеграции данной модели. Важно помнить о трактовке понятия deploy (развертывание). Это не всегда «что-то где-то запустить». Например, при разработке библиотеки, нет никакого запуска. В данном случае процесс развертывания означает выпуск новой версии библиотеки. Второй пункт не зависит от процесса CI, ведь проект развертывается по определенному расписанию. Например, ежедневно в 01:00. Третий пункт аналогичен первому, но с небольшими отличиями. Предположим, в репозитории у нас есть 2 основные ветки: develop и master. В develop содержатся самые последние изменения, а в master – только релизы версий. Если мы хотим развертывать только ветку master, то не нужно вызывать CD-задачу по слиянию в develop. Последний пункт – это сочетание подходов. Например, ветку develop можно развертывать по расписанию в среду разработки. А ветку master – в реальную среду по каждому слиянию Pull Request. Инструменты На рынке доступно множество решений по автоматизации процессов CI/CD. Ниже представлено несколько продуктов. Jenkins. Один из самых востребованных инструментов CI/CD в мире. Свою популярность он заслужил, благодаря политике открытого кода (open-source). То есть вам не нужно ни за что платить. В Jenkins вы можете императивно описывать конвейеры сборки с помощью Groovy. С одной стороны это достаточно гибкое решение, но с другой – требует более высокого уровня квалификации. GitHub Actions. Этот инструмент для CI/CD доступен для GitHub и GitHub Enterprise. В отличие от Jenkins, GitHub Actions предлагает декларативные сценарии сборки с YAML-конфигурацией. Кроме того, в данном решении доступна интеграция с различными системами обеспечения качества (например SonarCube). Таким образом, сборку можно описать в нескольких текстовых строках. GitLab CI. Во многом похож на GitHub Actions, но со своими особенностями. Например, GitLab CI может указывать на определенные тесты, вызывающие ошибку в сборке. Travis CI. Облачный CI/CD-сервис. Предлагает множество возможностей, не требующих сложных настроек. Например, шифрование данных, которые следует скрыть в публичном репозитории. Есть и приятный бонус в том, что Travis CI можно совершенно бесплатно использовать в публичных open-source проектах на GitHub, GitLab и BitBucket.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59