пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ 5 пїЅпїЅпїЅпїЅпїЅ
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Мы продолжим рассмотрение вопроса об устранении неполадок в объявлениях о маршрутах BGP. Все маршрутизаторы будут иметь рабочие соседние узлы BGP. Рекомендуем также почитать первую часть статьи по траблшутингу протокола BGP. Видео: Основы BGP за 7 минут Урок 1 Новый сценарий. R1 и R2 находятся в разных автономных системах. Мы пытаемся объявить сеть 1.1.1.0 / 24 от R1 до R2, но она не отображается на R2. Вот конфигурации: На первый взгляд, здесь все в порядке. Однако R2 не узнал никаких префиксов от R1 Может быть, используется distribute-list. Но нет, это не тот случай. Это означает, что нам придется проверять наши все команды network. Проблема заключается в команде network. Она настраивается по-разному для BGP и нашего IGP. Если мы применяем команду network для BGP, она должна быть полной. В этом случае забыли добавить маску подсети R1(config)#router bgp 1 R1(config-router)#network 1.1.1.0 mask 255.255.255.0 Мы должны убедиться, что ввели правильную маску подсети. Итак, видно, что мы узнали префикс, и R2 устанавливает его в таблицу маршрутизации ... проблема решена! Итог урока: введите правильную маску подсети ... BGP требователен! Урок 2 Давайте перейдем к следующей проблеме. Системный администратор из AS1 хочет объявить summary в AS 2. Системный администратор из AS 2 жалуется, однако, что он ничего не получает..., давайте, выясним, что происходит не так! Вот конфигурация. Вы можете увидеть команду aggregate-address на R1 для сети 172.16.0.0 / 16. Жаль ... префиксы не были получены R2. Здесь мы можем проверить две вещи: Проверьте, не блокирует ли distribute-list префиксы, как это мы сделали в предыдущем занятии. Посмотрите, что R1 имеет в своей таблице маршрутизации (Правило: "не могу объявлять то, чего у меня нет!"). Давайте начнем с таблицы маршрутизации R1. Из предыдущих уроков вы знаете, как выглядит distribute-list. Здесь нет ничего, что выглядело бы даже близко к 172.16.0.0 /16. Если мы хотим объявить summary, мы должны сначала поместить что-то в таблицу маршрутизации R1. Рассмотрим различные варианты: R1(config)#interface loopback 0 R1(config-if)#ip address 172.16.0.1 255.255.255.0 R1(config-if)#exit R1(config)#router bgp 1 R1(config-router)#network 172.16.0.0 mask 255.255.255.0 Это вариант 1. Создам интерфейс loopback0 и настроим IP-адрес, который попадает в диапазон команды aggregate-address. Теперь мы видим summary в таблице маршрутизации R2. По умолчанию он все равно будет объявлять другие префиксы. Если вы не хотите этого, вам нужно использовать команду aggregate-address summaryonly! Второй вариант объявления summary: R1(config)#ip route 172.16.0.0 255.255.0.0 null 0 R1(config)#router bgp 1 R1(config-router)#network 172.16.0.0 mask 255.255.0.0 Сначала мы поместим сеть 172.16.0.0 / 16 в таблицу маршрутизации, создав статический маршрут и указав его на интерфейсе null0. Во-вторых, будем использовать команду network для BGP для объявления этой сети. Итог урока: Вы не можете объявлять то, чего у вас нет. Создайте статический маршрут и укажите его на интерфейсе null0, чтобы создать loopback интерфейс с префиксом, который попадает в диапазон суммарных адресов. Урок 3 Следующая проблема. Вы работаете системным администратором в AS 1, и однажды получаете телефонный звонок от системного администратора AS 2, который интересуется у вас, почему вы публикуете сводку для 1.0.0.0 / 8. Вы понятия не имеете, о чем, он говорит, поэтому решаете проверить свой роутер. Это то, что видит системный администратор на R2. Мы видим, что у нас есть сеть 1.0.0.0 / 8 в таблице BGP на R1. Давайте проверим его таблицу маршрутизации. Сеть 1.1.1.0 / 24 настроена на loopback интерфейс, но она находится в таблице BGP как 1.0.0.0 / 8. Это может означать только одну вещь ... суммирование. Беглый взгляд на выводы команды show ip protocols показывает, что автоматическое суммирование включено. Отключим это: R1(config)#router bgp 1 R1(config-router)#no auto-summary Мы отключим его на R1. Теперь мы видим 1.1.1.0 / 24 на R2 ... проблема решена! Итог урока: если вы видите classful сети в своей таблице BGP, возможно, вы включили автоматическое суммирование. Некоторые из проблем, которые были рассмотрены, можно легко решить, просто посмотрев и/или сравнив результаты команды "show run". И это правда, но имейте в виду, что у вас не всегда есть доступ ко ВСЕМ маршрутизаторам в сети, поэтому, возможно, нет способа сравнить конфигурации. Между устройствами, на которых вы пытаетесь устранить неисправности или которые вызывают проблемы, может быть коммутатор или другой маршрутизатор. Использование соответствующих команд show и debug покажет вам, что именно делает ваш маршрутизатор и что он сообщает другим маршрутизаторам. Урок 4 Та же топология, другая проблема. Персонал из AS 2 жалуются, что они ничего не получают от AS 1. Для усложнения проблемы, конфигурация не будет показана. Для начала, мы видим, что R2 не получает никаких префиксов. Так же можем убедиться, что R1 не имеет каких-либо distribute-lists. Мы видим, что R1 действительно имеет сеть 1.1.1.0 /24 в своей таблице маршрутизации, так почему же он не объявляет ее в R2? Давайте посмотрим, может на R1 есть какие-то особенные настройки для своего соседа R2: Будем использовать команду show ip bgp neighbors, чтобы увидеть подробную информацию о R2. Мы видим, что route-map была применена к R2 и называется "NEIGHBORS". Имейте в виду, что помимо distribute-lists мы можем использовать также route-map для фильтрации BGP. Существует только оператор соответствия для prefix-list "PREFIXES". Вот наш нарушитель спокойствия ... он запрещает сеть 1.1.1.0 / 24! R1(config)#router bgp 1 R1(config-router)#no neighbor 192.168.12.2 route-map NEIGHBORS out Удалим route-map И наконец R2 узнал об этом префиксе ... проблема решена! Итог урока: убедитесь, что нет route-map, блокирующих объявление префиксов. BGP иногда может быть очень медленным, особенно когда вы ждете результатов, когда вы работаете на тестовом или лабораторном оборудовании. "Clear ip bgp *" - это хороший способ ускорить его ... просто не делайте этого на маршрутизаторах в производственной сети) Урок 5 Наконец, третий участник выходит на арену, чтобы продемонстрировать новую проблему. R1-это объявляемая сеть 1.1.1.0 / 24, но R3 не изучает эту сеть. Здесь представлены конфигураций: Соседство настроено, R1 - объявляемая сеть 1.1.1.0 / 24. R3#show ip route bgp Мы можем видеть сеть 1.1.1.0 / 24 в таблице маршрутизации R2, но она не отображается на R3. Технически проблем нет. Если вы внимательно посмотрите на конфигурацию BGP всех трех маршрутизаторов, то увидите, что существует только соседство BGP между R1 и R2 и между R2 и R3. Из-за split horizon IBGP R2 не пересылает сеть 1.1.1.0 / 24 в направлении R3. Чтобы это исправить, нам нужно настроить R1 и R3, чтобы они стали соседями. R1(config)#ip route 192.168.23.3 255.255.255.255 192.168.12.2 R3(config)#ip route 192.168.12.1 255.255.255.255 192.168.23.2 Если мы собираемся настроить соседство BGP между R1 и R3, нам нужно убедиться, что они могут достигать друг друга. Мы можем использовать статическую маршрутизацию или IGP ... чтобы упростить задачу, на этот раз мы будем использовать статический маршрут. R1(config)#router bgp 1 R1(config-router)#neighbor 192.168.23.3 remote-as 1 R3(config)#router bgp 1 R3(config-router)#neighbor 192.168.12.1 remote-as 1 Примените правильные настройки команды neighbor BGP. И R3 имеет доступ к сети 1.1.1.0 / 24! Итог урока: соседство по IBGP должно быть полным циклом! Другим решением было бы использование route-reflector или confederation. Урок 6 Очередная проблема. R3 является объявляемой сетью 3.3.3.0 / 24 через EBGP, а R2 устанавливает ее в таблицу маршрутизации. R1, однако, не имеет этой сети в своей таблице маршрутизации. Вот конфигурации: Вот конфигурации. Для простоты мы используем IP-адреса физического интерфейса для настройки соседей BGP. Мы можем проверить, что сеть 3.3.3.0 / 24 находится в таблице маршрутизации R2. R1#show ip route bgp Однако в таблице маршрутизации R1 ничего нет. Первое, что мы должны проверить - это таблицу BGP. Мы видим, что он находится в таблице BGP, и * указывает, что это допустимый маршрут. Однако мы не видим символа >, который указывает лучший путь. По какой-то причине BGP не может установить эту запись в таблице маршрутизации. Внимательно посмотрите на следующий IP-адрес прыжка (192.168.23.3). Доступен ли этот IP-адрес? R1 понятия не имеет, как достичь 192.168.23.3, поэтому наш следующий прыжок недостижим. Есть два способа, как мы можем справиться с этой проблемой: Используйте статический маршрут или IGP, чтобы сделать этот next hop IP-адрес доступным. Измените next hop IP-адрес. Мы изменим IP-адрес следующего прыжка, так как мы достаточно изучили применение статических маршрутов и IGPs. R2(config)#router bgp 1 R2(config-router)#neighbor 192.168.12.1 next-hop-self Эта команда изменит IP-адрес следующего перехода на IP-адрес R2. Теперь мы видим символ >, который указывает, что этот путь был выбран как лучший. IP-адрес следующего перехода теперь 192.168.12.2. Ура! Теперь он есть в таблице маршрутизации. Мы уже закончили? Если наша цель состояла в том, чтобы она отобразилась в таблице маршрутизации, то мы закончили...однако есть еще одна проблема. Наш пинг не удался. R1 и R2 оба имеют сеть 3.3.3.0 / 24 в своей таблице маршрутизации, поэтому мы знаем, что они знают, куда пересылать IP-пакеты. Давайте взглянем на R3: R3 получит IP-пакет с пунктом назначения 3.3.3.3 и источником 192.168.12.1. Из таблицы маршрутизации видно, что она не знает, куда отправлять IP-пакеты, предназначенные для 192.168.12.1. Исправим это: R2(config)#router bgp 1 R2(config-router)#network 192.168.12.0 mask 255.255.255.0 Мы будем объявлять сеть 192.168.12.0 / 24 на R2. Теперь R3 знает, куда отправлять трафик для 192.168.12.0 / 24. Проблема устранена! Итог урока: убедитесь, что IP-адрес следующего перехода доступен, чтобы маршруты могли быть установлены в таблице маршрутизации, и чтобы все необходимые сети были достижимы.
img
В нашей прошлой статье мы рассмотрели, как OSPF может автоматически фильтровать маршруты с помощью специальных областей и типов LSA. Но как насчет вариантов ручной фильтрации маршрутов в OSPF? В этой статье мы рассмотрим методы, которые можно использовать в различных точках топологии. Предыдущие статьи: Расширенные возможности OSPF: Области OSPF: создание конкретных типов областей Видео: протокол OSPF (Open Shortest Path First) за 8 минут Фильтрация на ASBR Одним из простых и эффективных методов фильтрации на ASBR является использование распределенного списка. Здесь мы определяем правила идентификации маршрута со списком доступа, а затем ссылаемся на этот список доступа в списке распространения. Рисунок 1. Топология OSPF В этом примере наша область 1 настроена как нормальная, не являющаяся магистральной областью. Вы можете увидеть это, при просмотре таблицы маршрутизации на ORL. show ip route Обратите внимание на два префикса (E2) 192.168.10.0 и 192.168.20.0. Давайте отфильтруем 192.168.10.0 на ASBR ATL. ATL# configuration terminal Enter configuration commands , one per line . End with CNTL/Z . ATL(config)#access-list 1 deny 192.168.10 .0 0.0.0.255 ATL(config)#access-list 1 permit any ATL(config)#router ospf 1 ATL(config-router)#distribute-list 1 out eigrp 100 ATL(config-router)#end ATL# Обратите внимание, насколько проста эта конфигурация. Давайте посмотрим, сработало ли это, еще раз изучив таблицу маршрутов ORL: show ip route Конфигурация работет отлично, и 192.168.10.0 больше не доступен на ORL. Другой простой метод - использовать команду summary-address на ASBR и использовать ключевое слово not-advertise. Вот пример из нашей топологии. Обратите внимание, что был удален предыдущий список рассылки из конфигурации ATL до этой настройки здесь: ATL#conf t Enter configuration commands, one per line. End with CNTL/Z . ATL(config)#router ospf 1 ATL(config-router)#summary-address 192 .168.10.0 not-advertise ATL(config-router)#end ATL# Проверка на ORL доказывает успешную фильтрацию сети 192.168.10.0. show ip route Нет ничего удивительного в том, что вы можете использовать подход route map для фильтрации в ASBR. Ведь route map невероятно полезны и гибки. Здесь мы определим правила со списком доступа (еще раз) и используем их в логике route map: ATL#conf t Enter configuration commands, one per line . End with CNTL/Z . ATL(config)#access-list 1 deny 192.168.10.0 0.0.0.255 ATL(config)#access-list 1 permit any ATL(config)#route-map МУМАР permit 10 ATL(config-route-map)#match ip address 1 ATL(config-route-map)#router ospf 1 ATL(config-router)#redistribute eigrp 100 metric 1000 route-map МУМАР subnets ATL(config-router)#end ATL# Как вы можете догадаться, проверка на ORL показывает отличную работу. show ip route Фильтрация на ABR Вы также можете фильтровать на ABR. Наиболее распространенным методом является использование списка префиксов, как показано здесь: ATL2#conf t Enter configuration commands, one per line. End with CNTL/Z. ATL2 (config)#ip prefix-list 1 deny 192.168.10.0/24 ATL2 (config)#ip prefix-list 1 permit 0.0.0.0/0 ATL2 (config)#router ospf 1 ATL2 (config-router )#area 1 filter-list prefix 1 out ATL2 (config-router )#end ATL2# show ip route Мы фильтруем префикс 192.168.10.0, но мы делаем это на ABR, и мы фильтруем по Type 3. Это контрастирует с фильтрацией типа 5 (для того же префикса!) Мы уже делали это раньше в ASBR. Фильтрация в роутере Имейте в виду, что вы можете легко фильтровать на любом спикере OSPF внутри самого маршрутизатора. Например, вы можете настроить подход к распределению списка и фильтровать входящие сообщения с его помощью. В этом примере мы еще раз остановимся на 192.168.10.0. Мы заблокируем его в ACL и будем использовать этот ACL в списке рассылки. Обратите внимание, что мы находимся на ORL: ORL#conf t Enter configuration commands , one per line . End with CNTL/Z . ORL(config) #access-list 1 deny 192.168.10.0 0.0.0.255 ORL(config) #access-list 1 permit any ORL(config)#router ospf 1 ORL(config-router)#distribute-list 1 in ORL(config- router)#end ORL# И снова наш желаемый результат проверки: show ip route
img
Благодаря росту объема данных и развитию технологий Data Science набирает популярность. Компании в разных отраслях — от ритейла до банков — нуждаются в специалистах, которые могут работать с данными, создавать модели и внедрять их для решения бизнес-задач. Это делает область Data Science одной из самых востребованных в мире. Наша статья поможет вам разобраться в профессиях, связанных с этой сферой, какие навыки нужны и на какие зарплаты можно ориентироваться. Кратко про Data Science Data Science — это область, которая объединяет обработку, анализ и интерпретацию данных. Она включает в себя программирование, статистику и машинное обучение, чтобы выявить закономерности в данных и превратить их в полезную информацию. Примеры использования Data Science можно увидеть в разных сферах — от прогнозирования продаж и создания рекомендаций в онлайн-магазинах до диагностики заболеваний и оптимизации бизнес-процессов. Главная цель — помочь принимать обоснованные решения на основе данных. Топ-5 профессий в сфере Data Science Сфера Data Science охватывает множество направлений — это Data Scientists, аналитики данных, инженеры данных, специалисты по машинному обучению и другие. Согласно исследованиям рынка труда и IT-отрасли в 2024 году в России в этой сфере работает порядка 50–70 тысяч человек. А теперь рассмотрим профессии подробнее.  №1. Data Scientist   Data Scientist или дата-сайентист анализирует данные, разрабатывает модели машинного обучения и помогает бизнесу принимать решения на основе прогнозов.  Основные навыки, которые пригодятся дата-сайентисту Программирование: языки Python и R – основные инструменты для анализа данных. Вместе с Python применяются библиотеки для анализа (Pandas, NumPy) и машинного обучения (TensorFlow, Scikit-learn). А еще понадобится знание SQL для работы с базами данных. Математика и статистика: понимание основ статистики, теории вероятностей и линейной алгебры. Визуализация данных: превращение сложных аналитических результатов в понятные отчеты. Инструменты Tableau и Power BI помогают строить интерактивные графики и дашборды для анализа данных в реальном времени. Для работы с графиками в Python пригодятся Matplotlib и Seaborn: Matplotlib подходит для построения базовых графиков, а в Seaborn можно наглядно визуализировать корреляцию и распределение данных. Машинное обучение:  позволяет решать задачи прогнозирования, классификации и автоматизации. Например, библиотека TensorFlow подходит для построения нейронных сетей, которые можно использовать для распознавания изображений или прогнозирования спроса. PyTorch, благодаря гибкости, удобен для исследований и создания прототипов, например, при разработке моделей для предсказания ценовых изменений. Scikit-learn, в свою очередь, обеспечивает простоту реализации традиционных алгоритмов, таких как регрессия или кластеризация. Софт-скилы : аналитическое мышление, коммуникация и умение учиться самостоятельно. Важно не просто уметь анализировать данные, но и понимать, как они помогают бизнесу, объяснять результаты сложного анализа простыми словами и быть готовым учиться новому. Сколько получает дата-сайентист Средняя зарплата варьируется от 150 до 250 тысяч рублей.  Junior: 60–80 тыс. руб. Middle: 100–250 тыс. руб. Senior: от 250 тыс. руб. (до 500 тыс. руб. в крупных компаниях). №2. Data Analyst или аналитик данных Работа аналитика данных состоит из сбора, обработки, анализа и интерпретации данных, а также их визуализации в понятные отчеты и графики. Его цель — помочь компании принимать обоснованные решения на основе фактов, а не догадок. Например, аналитик данных может изучить клиентскую базу, чтобы выделить сегменты, склонные к покупкам, или провести исследование эффективности рекламных кампаний для оптимизации затрат. Скиллы для работы аналитиком данных  Технические навыки: важно уметь работать с базами данных и знать SQL. Для аналитика данных нужны продвинутые функции Excel: сводные таблицы, макросы для анализа данных. Визуализация: пригодятся инструменты Tableau или Power BI для создания наглядных отчетов и дашбордов. Статистический анализ: знание базовых методов статистики (регрессия, корреляция), которые помогают находить закономерности в данных. Программирование: навыки работы с Python или R для анализа данных, включая использование библиотек Pandas, NumPy и Matplotlib. Мягкие навыки : умение представить сложные данные доступным языком и работа в команде. Сколько зарабатывает дата-аналитик Зарплаты варьируются в зависимости от города, уровня квалификации и компании. Средняя зарплата аналитика данных в России составляет: Junior: 70 000–100 000 рублей в месяц. Middle: 120 000–180 000 рублей в месяц. Senior: 200 000–300 000 рублей в месяц. № 3. Machine Learning Engineer  Инженер машинного обучения разрабатывает и внедряет модели машинного обучения (ML). Инженеры ML занимаются построением, обучением и оптимизацией моделей, которые позволяют компьютерам прогнозировать данные, анализировать изображения, понимать текст или рекомендовать товары. Основные навыки инженера машинного обучения Программирование: владение языками Python или R, и библиотеками машинного обучения Scikit-learn, TensorFlow и PyTorch. Опыт работы с большими данными с помощью Apache Spark или Hadoop. Алгоритмы и модели ML: понимание основных методов машинного обучения: классификации, регрессии, кластеризации. Навыки работы с нейронными сетями и глубоким обучением. Математика и статистика : хорошее знание линейной алгебры, теории вероятностей и статистики, которые используются при разработке моделей. Обработка данных: умение готовить и очищать данные с помощью Pandas и NumPy и навыки работы с базами данных (SQL). Разработка и внедрение моделей: создание моделей, их тестирование и оптимизация. Использование контейнеризации (например, Docker) и технологий для развёртывания моделей в продакшн-среде. Soft skills: Работа в команде, так как ML-инженеры взаимодействуют с аналитиками, разработчиками и бизнес-отделами. Умение объяснять сложные технические концепции бизнес-пользователям. Сколько зарабатывает инженер машинного обучения Junior ML-инженер может зарабатывать от 80 000 до 120 000 рублей в месяц. Специалисты со средним уровнем опыта могут рассчитывать на зарплату в диапазоне от 150 000 до 250 000 рублей в месяц. Senior получает от 330 тысяч рублей и выше, особенно если он работает в крупной ИТ-компании. №4. Data Engineer (инженер данных) Инженер данных проектирует и поддерживает инфраструктуру для обработки больших объемов данных. Он ответственен за то, чтобы данные компании, были доступными, структурированными и готовыми для использования аналитиками и моделями машинного обучения. Основные навыки инженера данных Работа с базами данных: владение SQL для управления реляционными базами данных (например, MySQL, PostgreSQL). Плюс опыт работы с NoSQL базами, такими как MongoDB или Cassandra. Облачные технологии и большие данные: навыки работы с платформами, такими как AWS, Google Cloud или Azure, а также инструментами обработки больших данных (Apache Spark, Hadoop). Программирование: языки Python и Java, которые используются для автоматизации и построения пайплайнов данных. Знание Scala для работы с большими данными. Инструменты ETL и оркестрация : умение настраивать процессы извлечения, трансформации и загрузки данных с помощью Airflow, Apache NiFi или Talend. Инфраструктура и DevOps: знание контейнеризации (Docker, Kubernetes) и CI/CD-подходов для поддержки и развертывания инфраструктуры данных. Мягкие навыки: работа в команде, чтобы координировать задачи с аналитиками и ML-инженерами. Аналитическое мышление и способность решать проблемы. Зарплата Data Engineer Junior получает от 100 000 до 150 000 рублей в месяц. Зарплата Middle Data Engineer составляет от 150 000 до 250 000 рублей в месяц. Senior получает от 250 тысяч рублей до 400 тысяч рублей в месяц. Руководитель направления (Lead Data Engineer/Head of Data Engineering) — от 400 000 рублей и выше. #5. Data Arhitect  Дата-архитектор обеспечивает доступность, надежность и безопасность данных. Его основная задача — проектировать, внедрять и поддерживать системы обработки и хранения данных.  Основные навыки архитектора данных Дизайн баз данных и хранилищ: проектирование реляционных (PostgreSQL, MySQL) и NoSQL (MongoDB, Cassandra) баз данных. Знание принципов построения хранилищ данных (Data Warehouses) и озёр данных (Data Lakes). Интеграция данных: работа с ETL-инструментами (Talend, Apache NiFi) для интеграции данных из разных систем. Разработка архитектуры потоков данных в реальном времени (например, с помощью Apache Kafka). Облачные технологии: работа с облачными платформами AWS, Google Cloud или Azure для построения масштабируемой инфраструктуры данных. Безопасность данных и соответствие стандартам: обеспечение защиты данных, включая шифрование и контроль доступа. Знание нормативов GDPR или ФЗ-152 (о персональных данных). Аналитическое мышление и системный подход: умение анализировать потребности бизнеса и создавать архитектуру, которая будет устойчивой к изменениям и масштабируемой. Soft skills: сюда входит координация работы с разными командами проекта и умение представлять сложные технические концепции понятным языком. Сколько зарабатывает архитектор данных: Начинающий специалист зарабатывает от 100 000 до 150 000 рублей в месяц. Опытные архитекторы данных могут получать от 200 000 до 300 000 рублей. В крупных международных компаниях доход может достигать 400 000 рублей и выше. Подведем итоги Data Science — это перспективная сфера с большим выбором профессий и высоким уровнем доходов. Вы можете выбрать профессию, которая соответствует вашим интересам, от анализа данных до построения сложных моделей машинного обучения. А ещё можете начать карьеру дата-сайентиста с нуля на курсе от Merion!
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59