Сетевик Джонни // Network Admin
رفتن به کانال در Telegram
Я Сетевик Джонни, моя цель в телеграме рассказать все о сетях в доступной форме! Сотрудничество: @stein_media
نمایش بیشتر5 811
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-47 روز
-2630 روز
آرشیو پست ها
🥷 Как работает DNS в Linux. Часть 1: обработка resolv.conf и что делает res_query()
Файл /etc/resolv.conf содержит основные настройки клиента DNS, а именно: список серверов, параметры, search-домены. Например:
nameserver 192.168.1.1
search dev.local
options timeout:2 attempts:3
— Glibc и libresolv парсят его вручную при необходимости.
Важные моменты и ограничения:
- опции вроде rotate, ndots, timeout и attempts влияют на поведение запроса;
- опция rotate используется для циклического выбора серверов из списка nameserver, но она не поддерживается в musl;
- search используется для автодополнения, например, если имя db01 не является FQDN, к нему будут по очереди подставляться домены из директивы search.
Важно отметить, что файл resolv.conf может быть динамически изменён DHCP-клиентом, NetworkManager или утилитой resolvconf, что может вызывать путаницу при решении проблем с DNS. Об этом мы поговорим в одной из следующих частей.Касательно
res_query(), это функция из libresolv, вызываемая внутренне в процессе разрешения имени. Она формирует DNS-пакет вручную и отправляет его на указанные в resolv.conf DNS-серверы. Её используют утилиты вроде nslookup, а также некоторые программы, которые обходят getaddrinfo().
Функция отправляет DNS-запросы с помощью res_send() по UDP, а при необходимости, например, при получении ответов, превышающих 512 байт, переключается на TCP.
🕹 Важно: при использовании res_query() вы не получите информацию из /etc/hosts, NSS или других источников. Это DNS-запрос в чистом виде. Поэтому dig или nslookup могут получить один результат, а, например, ping или curl — совсем другой.
1. res_query() считается устаревшей функцией, использовать ее не рекомендуется. Для более удобной и безопасной работы с DNS лучше отдать предпочтение getaddrinfo() или таким библиотекам, как c-ares или libdns.
2. c-ares — легковесная библиотека для асинхронных DNS-запросов, часто используется в высоконагруженных приложениях (например, curl и Node.js)
3. libunbound (из проекта Unbound) — более мощная библиотека с поддержкой DNSSEC и гибкой настройкой запросов.
В следующем посте расскажу о порядке реализации запросов и приоритетов, ожидайте, сегодня продолжение 🪳PT NGFW за стеклом. Этап 9. Секреты модулей безопасности
Всем привет! На связи наше технологическое реалити-шоу, где мы показываем, как на самом деле устроена магия внутри PT NGFW.
🔥 В новом эпизоде мы заглянем в самое СЕРДЦЕ системы — ее модули безопасности.
🗓 19 НОЯБРЯ 2025
⏰ С 14:00 до 15:00 мск
Наш резидент, Евгений Кутумин, эксперт группы разработки, расскажет, как рождается та самая интеллектуальная защита, которая предвосхищает угрозы.
🎯 В фокусе этого выпуска:
▪️ Предотвращение вторжений: десятки тысяч сигнатур и проверка расшифрованного трафика 💪
▪️ Контроль приложений: глубокое распознавание более 4000 приложений, включая уникальные для России 🕵️
▪️ Свой антивирус — свои правила. Быстрый и вшитый в ядро для мгновенной реакции ⚡️
▪️ Песочница: лаборатория для анализа угроз. Подозрительный файл? Мы его изолируем и посмотрим, не подвергая вашу сеть риску, что он сделает 🧪
▪️ Анализ угроз: прямая интеграция с PT Threat Intelligence Feeds 🚀
Регистрируйтесь, чтобы узнать, как создается производительный российский NGFW!
🥷 Как работает DNS в Linux. Часть 1: Библиотеки
Нижеперечисленные библиотеки экосистемы Linux являются ключевыми и предоставляют приложениям определенный набор функций, включая разрешение доменных имен.
1. Glibc — наиболее распространённая реализация стандартной библиотеки языка C, реализует высокоуровневые функции, такие как getaddrinfo(). Она взаимодействует с NSS (Name Service Switch) для определения источников разрешения имён (например, /etc/hosts, DNS) и использует библиотеку libresolv для выполнения DNS-запросов.
- Glibc может использовать системные вызовы, такие как sendto и recvfrom для отправки и получения DNS-запросов по UDP или TCP. Широко распространена в большинстве дистрибутивов Linux (Ubuntu, Debian, Fedora и др.)
2. Musl — альтернативная стандартная библиотека C, разработанная с упором на минимализм, производительность и совместимость со стандартами POSIX. Она используется в легковесных дистрибутивах, таких как Alpine Linux.
- Musl реализует разрешение доменных имён напрямую, без использования NSS, самостоятельно читает /etc/hosts и /etc/resolv.conf и отправляет DNS-запросы, не используя внешние библиотеки вроде libresolv. Однако musl имеет ограничения в поддержке некоторых параметров resolv.conf, таких как rotate или сложные search.
3. Libresolv.so — является частью glibc, реализующая низкоуровневую работу с DNS, выполняя такие запросы, как res_query() и res_send(), но может использоваться независимо в некоторых приложениях вроде nslookup (что позволяет выполнять DNS-запросы напрямую, минуя стандартные механизмы разрешения имен).
- Libresolv используется glibc для выполнения DNS-запросов, когда NSS указывает, что нужно обратиться к DNS. Она читает /etc/resolv.conf, формирует DNS-пакеты и отправляет их на указанные серверы по UDP или TCP.
Стоит отметить, что некоторые приложения, например, написанные на Go, могут полностью обходить glibc/musl и использовать собственные DNS-резолверы.
#DNS #Linux | 😏 @iscode
🥷 Как работает DNS в Linux. Часть 1: NSS
NSS реализован на основе подгружаемых модулей — динамических библиотек, соответствующих API glibc, таких как libnss_dns.so, libnss_files.so, libnss_myhostname.so и других. Они функционируют как плагины и подгружаются библиотекой glibc во время выполнения, отвечая за конкретные методы разрешения IP-адресов. Порядок и набор источников, используемых для разрешения имен, задается в конфигурационном файле /etc/nsswitch.conf.
Пример содержания nsswitch.conf:
# /etc/nsswitch.conf
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: files dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Например, строка в модулях с содержанием ``hosts: files dns`` говорит, что сначала ищется соответствие в локальном файле /etc/hosts, и если модуль files возвращает результат, то последующие модули, такие как dns (делающий DNS-запрос) не будут вызваны.
Соответственно, если в nsswitch.conf строка hosts не включает упоминание модуля dns, то конфигурационный файл resolv.conf, содержащий настройки обращения к DNS-источникам, проигнорируется, и DNS-запрос не будет сформирован.🕹 Также в NSS могут задействоваться модули mdns (для Zeroconf/Avahi), nis (в старых системах) и myhostname. Модуль myhostname является частью systemd и используется для разрешения локального имени хоста. Он не всегда присутствует в минималистичных системах, таких как Alpine Linux. В следующем посте расскажу о библиотеках экосистемы Linux, ожидайте, сегодня продолжение 🪳
🥷 Как работает DNS в Linux. Часть 1: от getaddrinfo до resolv.conf
Когда ты вводишь в браузере имя сервера или доменное имя сайта, pingуешь или запускаешь любое удаленное приложение, операционная система должна преобразовать указанные имена в IP-адреса. Этот процесс называется разрешением доменного имени. На первый взгляд он может показаться весьма прозрачным, однако за ним скрывается многослойный механизм.
Данный пост — начало серии, посвященной низкоуровневой архитектуре разрешения имен. Поговорим о том, как устроен этот процесс в Linux на уровне ядра, различных библиотек C и системных вызовов.
— Многие знают, что процесс разрешения имен в Linux — это не просто «вызов DNS», а цепочка из библиотек, конфигурационных записей и вызовов, зависящих от реализации конкретного приложения, используемых типов библиотек и системных настроек.
В этой части постараемся разобрать все по слоям и собрать некую фундаментальную базу в кратком и доступном виде.
Вершина айсберга: почти все современные приложения в Linux, от curl до systemd, используют функцию
getaddrinfo() из стандартной библиотеки C (glibc или musl). Именно она выполняет основную работу по переводу доменного имени в IP-адрес (A, AAAA-записи) в зависимости от настроек и запроса.
При этом она не только выполняет DNS-запросы, но и обрабатывает другие типы данных, такие как имена сервисов, например, преобразует имя сетевого сервиса “http” в порт 80, используя /etc/services. Это делает ее универсальным инструментом для сетевых приложений.
Функция getaddrinfo() возвращает список структур addrinfo, каждая из которых содержит IP-адрес, тип сокета, протокол и другие параметры. Это позволяет приложениям выбирать наиболее подходящий адрес для подключения.
Пример использования getaddrinfo() в псевдокоде:
```
struct addrinfo hints, *res;
zero_memory(hints);
hints.ai_family = ANY_FAMILY;
hints.ai_socktype = TCP;
err = getaddrinfo("example.com", "http", hints, &res);
if (err == 0) {
for each addr in res:
use(addr)
freeaddrinfo(res);
} else {
print(gai_strerror(err));
}
```
При этом getaddrinfo() — это вершина айсберга. Для получения IP-адреса она вызывает цепочку внутренних механизмов, прописанную в конфигурационных данных системы. Один из этих механизмов — NSS (Name Service Switch), о нём мы поговорим в следующем посте.
#DNS #Linux | 😏 @iscodeМы сидели в кафе. И через пару дней запись разговора всплыла в переписке. Ни телефона не трогал, ни диктофонов не видел.Это реальная история от знакомого, у которого в рюкзаке нашли AirTag. Случайность? Вряд ли. Сегодня, чтобы кого-то прослушать, не нужен спецдопуск. Достаточно смартфона с записью, диктофона с маркетплейса или маячка за 3000 рублей. Мы собрали в одном PDF-гайде то, что сам использую при проверке помещений, авто и техники — чтобы отследить прослушку, понять как устроены “жучки” и не попасться. 🌟 СКАЧАТЬ ГАЙД (сохраняйте, пригодится) ➡️ Хотите разобраться глубже? Ждем вас на курсе «OSINT: технология боевой разведки». Учимся находить нужную информацию в открытых источниках: от утечек и соцсетей до геолокации и метаданных. Всё — с практикой и фокусом на RU-сегмент. 🟢 Запись открыта до 30 октября 🟢 от 68 990 руб 🟢 Промокод на скидку в методичке! По всем вопросам: ⚡️ @CodebyManagerBot
Безопасно ли ваше облако?
8 октября на Selectel Tech Day эксперты расскажут, как обезопасить облачную инфраструктуру на практике и защитить данные от шифровальщиков и других угроз.
Присоединяйтесь, чтобы:
🔺Узнать о реальном опыте СТО и топ-менеджеров технологических компаний.
🔺Обсудить главные тренды и технологии с людьми, которые развивают IT-рынок.
🔺Познакомиться с экспертами и лично задать интересующие вопросы.
Участие бесплатное, нужно только зарегистрироваться →
Реклама. АО "Селектел". erid:2W5zFJmf79A
🥷 Джонни вещает: как провести стресс-тестирование вашей системы Linux
Стресс-тестирование Linux — ключевой этап подготовки серверов к реальной работе.
Оно позволяет выявить слабые места системы, проверить её устойчивость под высокой нагрузкой и подготовиться к неожиданным пиковым ситуациям. Разберем простые методы и мощные инструменты, которые помогут нагрузить систему и оценить её поведение.
Методы стресс-тестирования Linux
1. Нагрузка через циклы
Создание бесконечных циклов нагружает процессор. Это простой способ проверить систему.
Запуск нагрузки:
for i in 1 2 3 4; do while : ; do : ; done & done
Каждый цикл запускается в фоновом режиме и увеличивает нагрузку на ЦП.
Мониторинг нагрузки:
Запускайте команду uptime каждые 30 секунд, чтобы наблюдать за изменением средней загрузки:
while true; do uptime; sleep 30; done
Остановка нагрузки:
Чтобы завершить циклы, используйте kill, указав номера заданий:
kill %1 %2 %3 %4
2. Использование утилиты stress
stress — мощный инструмент, который позволяет создавать нагрузку на различные ресурсы системы: ЦП; память; ввод/вывод
Примеры использования stress:
• Нагрузка на процессор:
stress --cpu 4
Чем больше указано ядер (--cpu), тем выше нагрузка на систему.
• Нагрузка на память:
stress --vm 2
• Нагрузка на ввод/вывод (I/O):
stress --io 4
Для анализа работы ввода/вывода используйте iotop:
sudo iotop
3. Написание скриптов для мониторинга
Для удобного отслеживания нагрузки вы можете написать скрипт. Например, для мониторинга использования памяти:
#!/bin/bash
while true
do
free
sleep 30
done
Скрипт отображает использование памяти каждые 30 секунд. Вы можете адаптировать его под свои задачи.
Проведение стресс-тестов помогает: подготовиться к реальным пиковым нагрузкам; улучшить производительность системы; найти и устранить возможные проблемы на этапе разработки.
#Stress | ✋ @iscode
🥷 Джонни вещает: установка и настройка Sysmon
Установка и настройка простой и эффективной системы мониторинга за событиями на компьютере, в том числе и нарушения безопасности. На основе этой системы можно вытроить надежную и бесплатную систему защиты от хакерских атак и вирусного заражения. Так же она может служить источником данных для комплексных систем безопасности EDR и SIEM.
— Установка системы занимает считанные секунды и может быть полностью автоматизирована.
EDR (Endpoint Detection & Response) - система обнаружения вредоносной активности на конечных точках
SIEM (Security information and event management) - система анализа в реальном времени событий безопасности
#sysmon #EDR #SIEM | 😏 @iscode
📊 Статистика DDoS продолжает бить рекорды
1 сентября была зафиксирована крупнейшая атака этого года: 5,76 млн задействованных устройств из разных регионов.
Инцидент успешно отражён специалистами Curator, и это уже третий рекорд в 2025 году.
Подробный разбор атаки и методов защиты — в посте
MTC Engineer Hack — хакатон на стыке инженерии и ИТ от МТС. Реши технический кейс онлайн и получи приглашение в финал, где сможешь поработать на реальном оборудовании МТС. 12 победителей разделят призовой фонд в 500 000 рублей.
📎 Зарегистрироваться: https://cnrlink.com/mtsengineerhackiscode
🎯 Для кого: студенты и молодые инженеры в областях аппаратной разработки, радиоинженерии, сетевых технологий, DevOps.
💻 Формат: онлайн-тур + офлайн-финал в Москве
👤 Участие: индивидуальное
Приглашаем всех, кто интересуется телеком-отраслью, хочет прокачать навыки в инженерии и попробовать себя в задачах МТС. Будет отлично, если ты владеешь одним из навыков:
→ разбираешься в сотовых сетях и оборудовании базовых станций;
→ умеешь работать с данными и статистикой;
→ знаком с LTE/NR и схемотехникой;
→ интересуешься цифровой обработкой сигналов;
→ понимаешь маршрутизацию и пишешь скрипты для сетевого оборудования.
C 3 по 5 октября пройдёт онлайн-этап: участники готовят кейс по своему профилю. 11 октября — встреча финалистов на площадке и работа с настоящим оборудованием МТС, где эксперты компании помогут разобраться в деталях и дадут советы по доработке решений.
Что тебя ждёт:
🔺 Задачи, близкие к реальной работе инженеров МТС: от проектирования до оптимизации сетей.
🔺 Возможность познакомиться с экспертами компании и показать им свои решения.
🔺 Практика, которая позволит почувствовать себя частью технологической команды МТС.
🔺 Офлайн-финал в Москве: живое общение и защита проектов. Билеты и проживание оплатят организаторы.
Регистрация открыта до 1 октября включительно: https://cnrlink.com/mtsengineerhackiscode
Впервые на экранах! Онлайн-марафон «PT NGFW: исповедь инженеров» 😲
Пять дней инженерного хардкора: с 15 по 19 сентября, 11:00-13:00💪
Кажется, команда готова исповедоваться: за одну неделю расскажет не только, как работает PT NGFW, но и почему он работает именно так. Это будет не просто теория, а живой обмен опытом, разбор реальных кейсов и практические советы, которые можно сразу применить в работе.
В спикерах — вся команда PT NGFW.
🏆Головоломки от наших экспертов и шанс выиграть собственный PT NGFW*🏆
Регистрируйтесь на сайте
Информация о конкурсе
Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥
Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете:
1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц
2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект
3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате
Что будет на интенсиве?
🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python
🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др.
Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта
🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!
🥷 Джонни вещает: проброс авторизации
OpenSSH позволяет использовать сервера в качестве плацдарма для подключения к другим серверам, даже если эти сервера недоверенные и могут злоупотреблять чем хотят.
🆘 Для понимания ситуации, пример ниже будет ссылаться на вот эту схему (click)
Допустим, мы хотим подключиться к серверу 10.1.1.2, который готов принять наш ключ. Но копировать его на 8.8.8.8 мы не хотим, ибо там проходной двор и половина людей имеет sudo и может шариться по чужим каталогам.
— Компромиссным вариантом было бы иметь «другой» SSH-ключ, который бы авторизовывал user@8.8.8.8 на 10.1.1.2, но если мы не хотим пускать кого попало с 8.8.8.8 на 10.1.1.2, то это не вариант (тем паче, что ключ могут не только поюзать, но и скопировать себе «на чёрный день»).
⚙️ SSH предлагает возможность форварда SSH-агента (это такой сервис, который запрашивает пароль к ключу). Опция ssh -A пробрасывает авторизацию на удалённый сервер.
Вызов выглядит так: ssh -A user@8.8.8.8 ssh user2@10.1.1.2
Удалённый SSH-клиент (на 8.8.8.8) может доказать 10.1.1.2, что мы это мы только если мы к этому серверу подключены и дали SSH-клиенту доступ к своему агенту авторизации (но не ключу!).
#SSH #Authorization | 😊 @iscode
🛡Знаете ли вы, что до 90% уязвимостей в приложениях связаны не с кодом, а с людьми?
На открытом уроке «Awareness в DevSecOps» разберём, как повысить осведомлённость разработчиков о своей роли в безопасности и предотвратить ошибки ещё на этапе проектирования. Вы узнаете, что такое PCS, почему бизнес «запретил безопасности запрещать» и как выстроить культуру безопасности в команде.
Представьте, что каждый участник процесса разработки автоматически учитывает риски и умеет их снижать — скорость выпуска растёт, а количество инцидентов падает.
⚡️Посетите вебинар 13 августа в 20:00 МСК и получите персональную скидку на курс «Внедрение и работа в DevSecOps»: https://otus.pw/e19z/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Онлайн-конференция ИБ без фильтров
🔥Мероприятие, где говорим о реальных проблемах и ищем практические решения, возвращается!
🗓 14 августа 11:00-15:00 мск ждем на бесплатной онлайн-конференции «ИБ без фильтров»
Что будет полезного?
Честный диалог, нестандартные кейсы и полезный опыт — все без фильтров.
Кому стоит сходить?
Мероприятие для представителей бизнеса от экспертов в области информационной безопасности.
Какие темы затронем?
— Как оценить навыки ИБ-специалиста.
— Как снизить риски с помощью систем класса «менеджеры паролей».
— Как вовлечь разработчиков, сотрудников и бизнес в защиту компании.
— Чем важны разные источники данных при расследовании инцидентов ИБ.
Кто в спикерах:
— Анастасия Федорова. Руководитель образовательных программ, Positive Education
— Кира Шиянова. Менеджер продукта платформы Jet CyberCamp, «Инфосистемы Джет»
— Никита Вьюгин. Менеджер проектов «МКО Системы»
— Валерий Комягин. Генеральный директор BearPass
— и другие эксперты из крупных компаний рынка ИБ
▶️Регистрация по ссылке.
Ждем вас на самый честный диалог по теме ИБ
❓ Когда инфраструктура IT-отдела опирается на Windows, вы чувствуете себя ограниченным в возможностях?
Linux уже давно стал стандартом для серверных решений, контейнеров и облаков.
💪 Курс «Administrator Linux. Basic» погрузит вас в мир администрирования «с нуля»: от работы в терминале и Bash-скриптов до настройки веб- и MySQL-серверов, Docker-контейнеров, мониторинга через Grafana, Prometheus и ELK. На живых вебинарах вы посмотрите реальные сценарии — от установки Ubuntu в VirtualBox до развертывания микросервисов.
🚀 После курса вы сможете:
– уверенно работать в Bash и управлять пользователями, правами и пакетами;
– настраивать и оптимизировать Nginx/Apache, MySQL, создавать Docker-контейнеры и CI/CD-потоки через Git;
– подключать системы мониторинга: Grafana, Prometheus, ELK и настраивать тревоги;
– анализировать сетевой трафик и фильтровать пакеты через iptables.
👉 Пройдите бесплатное вступительное тестирование и получите персональную скидку на обучение: https://otus.pw/AkvnJ/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👉 Хотите начать карьеру в одной из самых востребованных IT-специальностей — сетевой инженерии?
Курс «Network Engineer. Basic» от OTUS даст вам все практические навыки для уверенного старта. Вы научитесь работать с CLI CISCO IOS, настраивать сети VLAN и маршрутизацию, работать с IPv4/IPv6, обеспечивать безопасность и проектировать сети.
После курса вы сможете претендовать на позицию Junior сетевого инженера в крупнейших технологических и финтех-компаниях. Программу составили опытные практики, а диплом OTUS ценится на рынке труда.
🎁 Пройдите короткое вступительное тестирование и получите запись вебинара "Что выбрать для маршрутизации VLAN: роутер на палочке или коммутатор третьего уровня?”
👉 Пройти тест: https://otus.pw/gDzz/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🤨 С Днём Сисадмина! А кто его сегодня отмечает?
Профессию сисадмина пытались забыть несколько раз: когда появились облака, когда рынок захватила автоматизация, когда страшно модным стал DevOps. 2020-2021 годы показали, что слухи об исчезновении системных администраторов в компаниях всего мира слишко преувеличены, а вот переход на удалёнку без них — вполне себе масштабная беда.
🤷 Мы не знаем, откуда берутся слухи, но уверены, что сисадминам ещё придётся администрировать роботов, разруливать проблемы с каналом до Луны и Марса и вообще как-то разгребать эту суету, наведённую неуёмными инженерами и программистами.
В общем, без сисадминов — никуда.
[Фото]Охота началась!
Призы за фото Eltex в эксплуатации
Дарим 24 приза:
🥇 Сеньорский MacBook Pro 14 M4 Pro 24Gb/512Gb
🥈 Портативная игровая консоль Steam Deck
🥉 Кресло с массажем. Благородное расслабление
...
Полный список призов>>
Пришлите больше РАЗНЫХ МОДЕЛЕЙ и победите!
Принимаются:
• 1 балл начисляется за каждую уникальную (не повторяющуюся) модель на одном узле связи. Любое кол-во повторяющихся моделей оценивается в 1 балл
• Коммутаторы агрегации, ЦОД, маршрутизаторы и некоторые другие устройства из списка оцениваются в 2 балла
📄Список оборудования для конкурса
Принимаем фото до 14 августа
Отправить своё фото:
@eltexcm_hunter
Укажите:
• Имя/Никнейм
• Модель(и) оборудования на фото
Не допускаем фото уже принятых устройств с прошлых конкурсов, в том числе и по конкурсу [Видео]Охота, в котором можно распознать ваш объект. Спасибо за понимание! ;)
#eltex #eltexcm #фотоохота
@eltexcm
#реклама
О рекламодателе
