Search
Write a publication
Pull to refresh
0
Окулов Виктор @okulusread⁠-⁠only

ИТ-специалист

Send message

Изолирование приложения с IP-адресом из VPN другой страны на примере Steam

Reading time7 min
Views71K
Abstract: Изоляция приложения на уровне сети использованием network namespaces Линукса. Организация SSH-туннелей.

Традиционно, большая часть статьи будет посвящена теории, а скучные скрипты — в конце статьи. В качестве субъекта для экспериментов будет использоваться Steam, хотя написанное применимо к любому приложению, включая веб-браузеры.

Вместо вступления. Я просто покажу эту картинку:

147%… Что-то мне это напоминает. Впрочем, хабр не для политики.

Цена на игры в Стиме зависит от региона. Регион — от IP'шника. Есть желание иметь цены в рублях, а не в евро.

Для этого мы используем VPN через SSH с использованием tun-устройств, плюс network namespaces для изоляции приложения от всех остальных сетевых устройств.

Network namespaces


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

Более того, большинство десктопных приложений вообще ничего не понимает в интерфейсах, так как предполагают, что у системы есть только один сетевой интерфейс и не даёт возможности указать, каким из интерфейсов надо пользоваться. Серверное ПО обычно имеет эту опцию (какой адрес использовать в качестве адреса отправителя), но для десктопов это непозволительная роскошь.

Если у нас есть несколько интерфейсов (один из которых относится к VPN), то нет штатных методов сказать стиму, что надо использовать его, а не eth0/wlan0. Точнее, мы можем «завернуть» весь трафик в VPN, но это не всегда желательно. Как минимум — рост latency и снижение скорости (даже если VPN ведёт на супербыстрый сервер, увеличение latency, оверхед от туннеля и фиксированная ширина локального канала ставят TCP в положение, когда приходится резать скорость). Как максимум — одно дело «покупать через русский VPN», другое дело — пускать туда весь трафик. Меня совсем не прельщает использование VPN для получения защиты роскомнадзором от оппозиции и вольнодумства.

В этих условиях возникает большое желание оставить один на один конкретное приложение и заданный сетевой интерфейс. Один. Сконфигурированный для нужд только этого приложения.

Для решения этой задачи в Linux, уже довольно давно (аж с 2007 года) существует технология, называемая network namespaces, то есть пространства имён для сетей. Суть технологии: над сетевыми интерфейсами создаётся подобие «каталогов», в каждом каталоге может быть несколько сетевых интерфейсов и приложений. Приложение, оказавшееся в заданном сетевом пространстве имён, может использовать (и видит) только те сетевые интерфейсы, которые отнесены к этому пространству.

Картинка ниже поясняет происходящее:

Читать дальше →

Так ли хорош ИИ-генератор изображений Grok 3?

Level of difficultyEasy
Reading time5 min
Views17K

Вчера Илон Маск и компания xAI объявили, что Grok 3 будет бесплатным для всех в течение ограниченного времени. Это означает, что вы можете использовать Grok 3 для обычных чатов, глубокого исследования темы и даже для создания изображений.

В этом посте я сосредоточусь на возможностях Grok 3 по созданию изображений. Я сравню, насколько он стал лучше по сравнению с Grok 2, и посмотрю, как он выглядит в сравнении с другими ИИ-генераторами изображений, такими как ChatGPT и Flux от Black Forest Labs.

Давайте начнем.

Читать далее

Пал Палыч против сил зла

Level of difficultyEasy
Reading time4 min
Views39K

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

Читать далее

Перепрограммируем заводской датчик CO2 Zigbee от компании Tuya

Level of difficultyEasy
Reading time3 min
Views16K

Предыдущий проект о перепрограммировании заводского термостата вызвал достаточно большой интерес у сообщества (ссылка будет в конце статьи). И вот поступило предложение проверить, можно ли таким же образом избавиться от спама на датчике CO2.

Читать далее

Избавляемся от головной боли: новый интерфейс для VPN-подключения

Level of difficultyEasy
Reading time2 min
Views66K

Наконец, и мы решили обратить свой взор на отечественный рынок программных решений, отразить немного общей боли и рассказать, о том, как мы с этой болью справились. Причины написания данной статьи давно витают в воздухе – зачастую отечественным решениям чего-то, да не хватает =) О всех нюансах работы с ипомпортозамещенными решениями говорить не будем, так как многие читатели, уверены, уже столкнулись с подобными вызовами.  

Сейчас же решили остановиться на том, что из разряда наших внутренних «костылей» перешло в удобный продакшн.  Речь пойдет про защищенное удаленное подключение из трех букв (начинается на «В»), которое строится на базе отечественных NGFW с использованием немного устаревших L2TP, IKEv1, общего ключа и обязательного второго фактора аутентификации в виде OPT.

Читать далее

До скольки доживали люди, до начала 20 века

Level of difficultyEasy
Reading time3 min
Views107K

Мы же частоможем встречать — «Вот раааньше...» Так вот, с научной точки зрения, по всем научным археологическим, антропологическим исследованиям, раньше жили мягко говоря меньше. Источник — исследования похороненных в Старой Ладоге, ранние средние века русской истории. В 2022 вышла в научный мир новая версия определения возраста по костям скелета, она основывается на одновременном анализе 74 признаков. Предварительно через компьютеры, после точных измерений, прогоняли много раз эти данные от 1600 разных, умерших людей, с важной поправкой — возраст каждого был точно известен. Метод назвали — ТАЗ, он не идеален пока, но уже точнее чем просто измерение антропологическое, когда по швам на черепе определяют возраст. Погрешность снижена с 10 до 5 лет.

Читать далее

Сервер автоматизации СА-02м. Linux + Armbian, SCADA, «Умный дом» и вот это вот все…

Level of difficultyMedium
Reading time2 min
Views6.8K

Разработали серийный корпус, плату, воткнули туда одноплаточник на Linux + Armbian, установили MasterSCADA4D и давай автоматизировать вентиляцию, освещение и другое инженерное оборудование.

Читать далее

Как Fix Price автоматизировал бизнес-процессы с помощью Camunda

Reading time13 min
Views8.9K

Привет, Хабр! Я Вадим Райский, руководитель на IT-проектах Fix Price. Сегодня я расскажу вам об оптимизации бизнес-процессов, которую наша команда выполнила при помощи движка Camunda.

Чтобы сократить время и финансовые затраты на решение корпоративных задач (например, открытия новых магазинов), необходимо периодически корректировать бизнес-процессы: что-то добавлять, что-то, наоборот, удалять. В качестве примера разберем одну из последних возникших перед нами задач: автоматизировать процесс обработки строительно-ремонтных заявок и смет через наше приложение «Смета». Здесь можно было пойти несколькими путями: разработать это с нуля, использовать готовые решения или low-code решения. В результате мы пришли к внедрению движка Camunda.

Читать далее

История бюджетной автоматизации отопления в Home Assistant

Level of difficultyEasy
Reading time12 min
Views17K

В этой статье хочу рассказать как я узнал что такое умный дом на примере управления отопительным котлом. Чтобы долго не подводить, скажу сразу, что статья о том, как мне удалось подключить электрический котел Protherm Ray 18, который работает по EBUS, к Home Assistant. Все сейчас работает хорошо, но некоторые проблемы еще не решил. О всем расскажу по порядку.

Читать далее

Как сделать идеальную вентиляцию в городе, где часто бывает смог: приточка, вытяжка, увлажнитель и кондиционеры

Level of difficultyEasy
Reading time10 min
Views20K

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

Александр установил мощную систему вентиляции, которая обеспечивает каждую комнату свежим, увлажненным и подогретым/охлажденным воздухом. Конечно, в квартире есть и другие инженерные системы: свет, отопление, шторы, видеонаблюдение, датчики.

Нам удалось побывать в умной квартире Александра, в статье подробно о ней расскажем.

Читать далее

Почему джуны путаются в асинхронном коде (и как научиться с ним работать)

Level of difficultyEasy
Reading time8 min
Views44K

Асинхронный код часто становится камнем преткновения для начинающих разработчиков. Почему функции выполняются не в том порядке, зачем нужны промисы, и что делает async/await? В статье я простыми словами объясняю:

Как работает Event Loop и почему это важно.
Какие ошибки чаще всего допускают джуны при работе с асинхронностью.
Как научиться писать понятный и предсказуемый асинхронный код.

Если асинхронность вызывает больше вопросов, чем ответов, загляните в статью - там всё по шагам. 🙂

Читать далее

Кто «ест» трафик в организации? Готовим пользовательский экспортер для Prometheus, мониторим сеть

Level of difficultyEasy
Reading time14 min
Views9.2K

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

Просмотреть кейс

Еще одна история про OpenTherm

Reading time5 min
Views29K

Предыстория


5-6 лет назад нужно было делать отопление в новом доме. В то время в нашу деревню обещали провести газ. Исходя из этого, было принято решение поставить газовый котел и переделать его на пропан в баллонах (2 пары по 2 баллона, авто-переключение между парами). Типа как временное решение, пока не проведут газ. Решение вполне работоспособно, если не жить на даче зимой. За эти годы магистральный газ так и не провели, а заправлять баллоны надоело. Вот я и решил добавить электрический котел вдобавок к газовому.


Вариации на тему “как подружить газ и электричество?”


Вариант 1 (самый простой): поставить электрические обогреватели в каждую комнату.


Вариант 2: (самый правильный): поставить электрический котел параллельно газовому (со своим насосом, своей группой безопасности и обратными клапанами на оба контура)


Вариант 3: Поставить самый простой электрокотел(электрочайник :) ) и использовать всю начинку (насос, группу безопасности и т.п.) от газового котла.


Я решил попробовать пойти по третьему варианту. Возникли следующие “вопросы”:


  1. Как заставить работать насос газового котла, но не включать горелку?
    • Можно разобрать котел и запитать насос отдельно. Решение выглядит стремным, а модифицировать котел кажется опасным.
    • Как-то объяснить котлу, что насос работать должен, а включать газ не нужно.
  2. Ввод электричества 1 фаза, 10 кВт. Т.е. ставить мощный электрокотел кажется потенциально проблемным. Значит, нужно “подружить” электричество и газ, чтобы они могли при необходимости работать вместе.

Тут я вспомнил, что у котла вроде как есть интерфейс OpenTherm и решил попробовать научиться общаться с котлом через него.

Читать дальше →

SmartTherm: управляем котлом по OpenTherm удаленно с персональным облаком

Level of difficultyEasy
Reading time1 min
Views3.9K

Разработка, когда-то начавшаяся с обсуждения на Хабре возможностями управления газовыми котлами с интерфейсом OpenTherm, привела с созданию не только прошивки для контроллера с процессором ESP32, но приложения для Android с персональным облачным сервером.

Читать далее

Как улучшить влажность в квартире: проверяем на практике

Level of difficultyEasy
Reading time3 min
Views23K

Холод, сухость и обманутые ожидания. Мы проверили бытовой увлажнитель в реальных условиях и готовы рассказать, почему простые характеристики могут ввести вас в заблуждение.

Увлажнить

Создаем Hamster Kombat почти с нуля. Практика по Vue 3 и Telegram Mini Apps

Reading time11 min
Views13K

Привет, Хабр! В этой статье-инструкции вы узнаете, как с нуля сделать свою собственную Telegram-тапалку на современном стеке. Важный дисклеймер: тапалка, кликер и прочее — это всего лишь форма. Цель статьи — дать всеобъемлющий практикум по современному стеку и деплою проектов в облако.

Внутри статьи — полноценный Serverless-подход, разработка бота на Node и полный цикл создания FE-приложения. А еще комментарии по архитектурным и тактическим решениям, чтобы вы прокачали уровень программирования и насмотренности. Подробности под катом!
Читать дальше →

Будущее микросервисов: уйдем ли мы к монолитам 2.0?

Level of difficultyEasy
Reading time8 min
Views46K

Микросервисы или монолит? Споры об архитектуре программного обеспечения не утихают, но с 2018-2020 годов наметился интересный тренд: компании начинают переоценивать сложность микросервисного подхода. Возвращение к монолитам, но уже с учетом современных инструментов, вызывает жаркие обсуждения в техническом сообществе.

В этой статье я не буду защищать какую-либо из сторон. И не буду обещать волшебных решений, которые решат все архитектурные проблемы. Вместо этого разберем, что стоит за модной концепцией «монолиты 2.0», как эволюция технологий меняет восприятие архитектуры и почему возвращение к упрощению может быть выгодным. Добро пожаловать в мир архитектурных компромиссов — подробности под катом.
Читать дальше →

Как я запустил 99* контейнеров с Oracle Database 21c Express Edition внутри Podman на отечественной ОС

Level of difficultyMedium
Reading time11 min
Views5.8K

В статье рассматривается пошаговое создание образов «с нуля» для контейнерного движка Podman. Внутрь контейнера «упакована» база данных Oracle Database 21c Express Edition. И всё это отечественной операционной системе РЕД ОС.

*2 контейнера

Зачем?

Виртуальный ПЛК – следующий шаг в цифровой трансформации архитектур автоматизации

Reading time7 min
Views8.5K

Статья Дэвида Хамфри (David Humphrey), директора по исследованиям аналитического агентства ARC Europe, в которой рассматривается появление программно-определяемой автоматизации на уровне контроллера и ее влияние на то, как АСУ ТП будут проектироваться, развертываться и управляться в будущем. Речь идет о виртуальных ПЛК (vPLC) – программных средств, эмулирующих функции физических программируемых логических контроллеров.

Читать далее

Собираем метрики с датчиков через Modbus и Telegraf

Reading time19 min
Views7.3K

Сборка макета для тестирования

Подготовка микрокомпьютеров и виртуального сервера

Установка утилиты mbpoll для тестирования датчиков

Установка InfluxDB

Установка Telegraf

Установка Grafana

Получаем данные от датчиков в Telegraf

Добавляем шаблон плагина датчика в конфигурацию Telegraf

Проверяем передачу данных в InfluxDB

Установка срока хранения данных в InfluxDB

Подключаем Grafana к InfluxDB

Тестирование Front Control Compact

Выводы

Полезные ссылки

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

В этой статье я расскажу о том, как можно сделать подобную систему сбора, используя очень гибкий агент сбора метрик и данных Telegraf, а также высокопроизводительную базу данных временных рядов InfluxDB. С целью визуализации и мониторинга данных, а также для оповещения об их критичных изменениях будет установлена популярная платформа Grafana.

Вы научитесь получать данные через протокол Modbus на примере датчиков XY-MD02 и PZEM-016, доступных на известных маркетплейсах. Первый из них измеряет температуру и влажность окружающей среды, а второй — параметры электрической сети, такие как напряжение, ток, мощность, потребляемая энергия и частота переменного тока. Используя полученные знания, можно будет подключать и другие аналогичные датчики.

Среди всех разновидностей протокола Modbus в этой статье будет использован Modbus RTU (Remote Terminal Unit), который применяется в промышленности для сбора данных через RS-485 или RS-232. Заметим, что длина линии RS-485 может достигать 1200 м.

Читать далее

Information

Rating
Does not participate
Location
Ревда (Свердловская обл.), Свердловская обл., Россия
Date of birth
Registered
Activity