Записки IT специалиста
8.83K subscribers
2.34K photos
57 videos
16 files
2.53K links
IT-канал, просто о сложном
https://interface31.ru

Купить рекламу:
https://telega.in/c/interface31
Download Telegram
RDP-сервер в GNOME

Мало кто знает, но начиная с версии GNOME 46 в составе этой графической оболочки появился свой RDP-сервер. Теперь вы можете полноценно подключаться к своим Linux-системам привычным и удобным инструментом.

Данная возможность включается в разделе Система – Удаленный рабочий стол и предусматривает два режима работы.

🔹 Общий доступ к рабочему столу – позволяет подключиться к уже существующему сеансу пользователя, сеанс не блокируется, и пользователь видит все, что вы делаете, также вы видите все, что делает он. Разрешение экрана определяется разрешением сеанса пользователя. Это удобно для технической поддержки, контроля и обучения.

🔹 Удаленный вход – предусматривает создание отдельного удаленного сеанса, если был открыт локальный сеанс, то он будет не заблокирован, а завершен, все запущенные программы закрыты. Разрешение экрана устанавливается в настройках RDP-подключения.

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

По качеству работы данную реализацию можно назвать одной из лучших реализаций RDP для Linux. Плавность и качество картинки практически неотличимо от Windows RDP, работает буфер обмена, а вот с пробросом локальных ресурсов есть проблемы. Но в любом случае это на голову превосходит тот же XRDP и аналоги.

Будем надеяться, что проект продолжит развиваться и догонит по основным возможностям RDP для Windows, обеспечивая однотипную рабочую среду для обоих систем.
🔥50👍20👀64🤡3
Как обустроить современный корпоративный VPN

Сегодня многие пользователи сталкиваются со сложностями в работе VPN-соединений благодаря заботе о нас одного уважаемого ведомства.

Забота эта достаточно непредсказуема и может коснуться каждого. Поэтому у многих возникает вопрос: а как жить дальше в этом непредсказуемом мире. Причем мы говорим о сугубо законопослушном использовании VPN для корпоративных нужд.

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

Как показывает практика, наиболее устойчивы к блокировкам крупные российские датацентры. Поэтому возникает вполне закономерная схема их использования для размещения VPN-серверов.

Тот же Cloud.ru дает неплохую виртуалку бесплатно в рамках free tier, все что вам останется – это купить белый IP-адрес, который обойдется примерно в 150 руб./мес.

Также многие датацентры предоставляют IPsec соединения от облачной инфраструктуры к вашей сети, обеспечивая максимально быстрый и производительный канал для обмена данными.

Таким образом наша схема приобретает законченные очертания. Приобретаем виртуалку в крупном отечественном датацентре и разворачиваем там VPN-сервер для доступа удаленных сотрудников.

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

Задача выполнена. Удаленные клиенты соединяются с доверенным облаком, блокировки которого гораздо менее вероятны, нежели блокировки офисного адреса, а офис общается с удаленной площадкой по туннелю IPsec, который также имеет крайне невысокий риск блокировки.

Хотя как именно организовать канал – это дело сугубо личное. Но в любом случае перенастроить одно подключение проще, нежели чем десяток-другой клиентских.
👍29🤮5👎3🔥3
Как получить кучу проблем на ровном месте и ничего не понять

Прочитал сегодня за утренней чашкой кофе интересную и поучительную статью на Хабре:

Мой Хоррор: Как лишиться доступа к собственной инфраструктуре, расположенной в РФ

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

Поэтому снова пройдемся по списку типовых ошибок.

1️⃣ Самая критичная – все яйца в одной корзине, т.е. вся инфраструктура завернута на единственный домен. Так делать не надо. Домены нынче стоят копейки, поэтому для критической инфраструктуры (DNS, почта и т.д.) обязательно отдельный домен, желательно у другого регистратора и на другие учетные данные.

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

Для рабочих проектов – второй домен, для тестовых сред и разработки – третий. Разработка – вещь такая, можно и накосячить, поэтому лучше пусть в черные списки и т.п. неприятные вещи влетит отдельный домен, не связанный с рабочей нагрузкой.

Ну и обязательно разделять продуктивный и тестовый контур не только по домену, но и по IP-адресам. Ровно по тем же соображениям.

2️⃣ Вторая ошибка – размещать на основном домене потенциально опасные сервисы, а их там висело ровно три. Кроме легального с точки зрения регулятора VPN к своей инфраструктуре там же было два аналогичных сервиса выглядевших «нелегально», а именно туннели за пределы страны.

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

А далее бот РКН находит на одном домене несколько однотипных сервисов, причем ведущих за границу, и сразу делает стойку и три зеленых свистка, или не делает, а тупо ставит блок, по принципу, что если это был легальный сервис – то хозяин нарисуется, а нет – так нет. Основная задача выполнена, остальное – ерунда.

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

3️⃣ Третья ошибка – отсутствие дополнительной точки входа в инфраструктуру. Если мы размещаем в ДЦ свой сервер, то хотя бы об IP-KVM позаботиться не мешало бы. А также поднять (купить) там же отдельную виртуалку на отдельном IP-адресе на всякий пожарный случай. Поднять исходящий канал оттуда куда-нибудь к себе или к третьей площадке.

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

4️⃣ И, нестареющая классика – левые или неактуальные данные владельца домена. И ладно, если это домен технический, как говорится – помер дед Максим… Но если на домен завязана инфраструктура, то он должен быть в статусе VERIFIED и никак иначе.

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

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

Можно было ли всего этого избежать? Можно, если бы автор сразу подумал головой и предпринял простейшие меры по грамотному управлению и защите своих цифровых активов.
👍357🔥2🤔21
Forwarded from Dev2GIS
IT + Зимняя Олимпиада = ?

Запускаем конкурс: представьте, что вы — участники олимпийской айтишной сборной. В какой роли выступите?

Условия
1. Поставить на посте реакцию, которая связана с вашим любимым зимним видом спорта — посмотрим, сколько у нас тут лыжников, сноубордистов, фигуристов или любителей саней 🏂🎿🛷
2. Быть подписанным на канал @rnd2gis
3. Нажать кнопку «Участвовать»

Итоги 23 февраля 
3 участника получат промокоды по 3000 рублей на бронирование в Отелло. Будет приятная новость, если захотите сменить обстановку на Сочи или Шерегеш после спринта.

Реклама. ООО "ДУБЛЬГИС". ИНН 5405276278. erid: 2W5zFGWMDzQ
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡6🤮21
Блокировки 2026, путь к выживанию. Начало

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

👉 Начнем с блокировки домена, как это происходит и за что может прилететь.

Чаще всего источником проблем считают РКН, но это только верхушка айсберга. Действительно уважаемое ведомство бдит, но его интересует в основном только слово из трех букв и как пройти туда, не надо куда. Ну и что-то тому сопутствующее, дискредитирующее и распространяющее сами знаете что.

Но, справедливости ради скажем, что взаимодействие с РКН наиболее простое, прозрачное и эффективное, в отличии от ряда других угроз. Вот им и уделим внимание.

1️⃣ Нарушение авторских и смежных прав – на первый взгляд тут все понятно, явная пиратка – путь к проблемам. Но не все так просто. Понравилась вам фотография, свободно размещенная в интернете. Вы ее скопировали и использовали на своем сайте как КДПВ (картинка для привлечения внимания).

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

2️⃣ Бренды и товарные знаки, тоже очень скользкая тема. В большинстве своем бренды не против их упоминаний в публикациях третьих лиц. Но есть моменты, когда это может выйти боком.

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

У одного моего знакомого так заблокировали Youtube-канал (давно, еще до всех этих событий) за видео, где он сравнивал оригинальные картриджи HP с аналогами и пришел к выводу, что нет смысла переплачивать за оригинал.

3️⃣ Информация с возрастными ограничениями. Уже 16 лет как существует N 436-ФЗ "О защите детей от информации, причиняющей вред их здоровью и развитию". Многие считают, что это их не коснется, а зря.

Даже если у вас сугубо технический ресурс, но кто-то в комментариях выразится нецензурно, упомянет сигареты, алкоголь, психоактивные вещества или предложит «убиться головой об стену» - поздравляем, вы попали.

А возбудиться на эту тему может кто угодно и чаще всего прилетает оттуда, откуда не ждали: прокуратура Усть-Звездюйского района, участковый хутора Гадюкино и т.д. и т.п. Смысл этих деяний прост – нужно закрыть отчетность, и кто не спрятался – они не виноваты.

4️⃣ Запрещенная к распространению информация. А вот тут все гораздо серьезней, здесь кроме блокировки есть шанс получить реальную административку со штрафом, а то и чего похуже.

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

В сети бытует ошибочное мнение, что закон обратной силы не имеет, но для интернет-публикаций эта норма права неприменима.

Да, закон обратной силы не имеет и сам факт размещения вами информации, которая в последствии была признана противоправной нарушением не является, но, если вы не убрали ее из общего доступа после признания ее противоправной – это нарушение.

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

И здесь просто беда для постмодерируемых ресурсов, форумов, комментариев. Кто-то когда-то чего-то написал, а прилетит вам здесь и сейчас. Может ну ее, ту историю? Сносим и живем спокойно? Многие, кстати, так и делают.

👆 На этом сегодня все, в продолжении рассмотрим как все это происходит, к чему быть готовым и что делать надо, а что, наоборот, не надо.
👍24🤡11🤔63🥱1
Визуальный калькулятор подсетей

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

Обычно это решается графическими построениями на бумаге или в Excel, но есть способ лучше – использовать Visual Subnet Calculator, открытый продукт, распространяющийся под лицензией MIT.

Проще и быстрее всего запустить его в Docker:

docker run -d -p 8081:8080 --name visualsubnetcalc ckabalan/visualsubnetcalc:latest


Теперь открываем http://myhost:8081 и начинаем работать. Сначала задаем желаемую сеть верхнего уровня и начинаем делить ее мышкой. Нажатие на сеть нижнего уровня делит ее на две равных подсети, нажатие на сеть верхнего уровня сворачивает все подсети под ней.

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

Утилита имеет четыре режима работы: стандартный и специализированный расчет для AWS, Azure и Oracle Cloud.

Подобные инструменты вроде бы мелочь, но способны существенно упростить и облегчить жизнь, особенно если вы не постоянно занимаетесь расчетом сетей. Рекомендуем включить в собственный набор инструментов.
1👍36🔥7🥱41👌1
Контейнеры на Mikrotik

Функция запуска контейнеров формата OCI (Open Container Initiative) была добавлена в RouterOS 7 сравнительно недавно, но вызвала достаточно большой ажиотаж.

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

‼️ Начнем с безопасности. Разработчики предупреждают:

▫️Уровень безопасности устройства с RouterOS равен уровню безопасности того, что запускается в контейнере.

▫️При использовании контейнеров никаких гарантий безопасности не предоставляется.

Уязвимости в контейнере могут привести к получению root-доступа к устройству, а если вредоносный код будет внедрен в RouterBOOT, то вам не поможет даже Netinstall.

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

Пойдем дальше, контейнеры поддерживаются на устройствах с архитектурами arm, arm64 и x86, накопитель для размещения контейнеров должен поддерживать скорость не менее 100 МБ/с и не менее 10k IOPS, хотя сегодня это не проблема, справится любой SATA SSD.

👉 Но если мы посмотрим на роутеры начального уровня (да и не совсем начального), то увидим, что ряд из них не имеет на борту USB, чем сразу выпадают из подходящих для наших целей, а остальные имеют всего 1 ГБ оперативной памяти.

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

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

С контейнерами дело немного получше, но 1 ГБ – это всего 1 ГБ, что по нашим временам крайне мало. Поэтому если вы хотите запустить на ROS контейнер, это должно быть обосновано.

Имеет смысл разворачивать там дополнительные сетевые службы, которые туда напрашиваются логически: обратный прокси, фильтрующий DNS, VPN-сервер/клиент для неподдерживаемых ROS протоколов.

Это нормально и уместно. Но когда некоторые товарищи пытаются развернуть там тот же Nextcloud – это ускользает от нашего понимания. 🤦‍♀️

Если вам действительно нужен хост под контейнеризацию, то купите одноплатник – «малинка», «бананка», «репка» - их масса. Или мини-ПК на N100/150, там вообще раздолье по ресурсам.

Будьте благоразумны, не мучьте бедный роутер задачами ему несвойственными. Маршрутизатор должен заниматься маршрутизацией и предоставлением сетевых сервисов, а не быть универсальным сервером.
👍395🤝4🥱2🌭1
И что это было?

Третьего дня произошла одна не очень приятная история. Один наш заказчик собирался открыть еще одно направление бизнеса. Под это дело еще в далеком 2023 году закупил технику.

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

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

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

Ничто не предвещало беды, но при очередной перезагрузке ПК просто повис, не реагируя ни на что. Выключили их розетки, после чего он больше не включился.

В таких случаях надо проверять все, начиная с блока питания. Блок питания исправный, стартует, напряжения выдает. Отключаем и снимаем с материнской платы все, кроме процессора и памяти. Тишина.

Снимаем память, ноль реакции. Становится понятно, что основной подозреваемый – материнская плата, потому как платы AM4 включаются даже без процессора и показывают ошибку CPU диагностическим светодиодом, а многие дают даже прошить в таком режиме BIOS.

В общем все выкручиваем, разбираем, на всякий случай проверяем процессор и память на другой системе AM4 – все работает. Решаем на всякий случай проверить эту плату с другим процессором – неожиданно она включается и начинает работать.

Собираем на стенде все обратно как было – включается, работает. Гоняем всякие тесты более суток, выключаем, перезагружаем. Все работает. Собираем обратно в корпус, гоняем – все работает.

Во вторник система поедет к заказчику в работу и вроде бы все хорошо, но осадочек остался. Потому что доверять такой системе нельзя, период приработки она до сих пор не прошла. А гарантия на большинство компонентов заканчивается 26 апреля.

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

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

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

Поэтому такие системы становятся черным ящиком без гарантий чего-либо вообще. И в самый неподходящий момент может выясниться что резерв это совсем не резерв, а еще одна требующая ремонта система.
👍47💯125🤡2
Виртуализация, контейнеризация, докеризация

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

1️⃣ Начнем с виртуализации. Это наиболее старая и зрелая технология, достигшая к современному состоянию дел определенной стабильности и совершенства.

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

Но это влечет за собой максимально высокие накладные расходы, которые зависят от набора эмулируемого железа, в большинстве случаев они не превышают 10-15%, но могут оказаться и более высокими, особенно если нам нужно обеспечить высокую доступность.

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

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

2️⃣ Контейнеризация LXC на первый взгляд похожа на виртуализацию, вам также предоставляется как бы отдельный экземпляр операционной системы. Но мы не зря сказали «как-бы».

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

Но снаружи это выглядит как отдельный экземпляр операционной системы, причем мы можем таким образом запускать самые различные ОС на ядре Linux.

На самом деле контейнер предоставляет нам системное окружение выбранной ОС, работающей на ядре хоста и с ресурсами хоста.

Это эффективно решает задачу, что у нас есть софт, собранный под определенную ОС и нам надо его запустить. Нет проблем, запускаем контейнер с нужным системным окружением и работаем в нем с нашим экземпляром ПО.

ПО думает, что работает в среде нужной ему ОС, для администратора это выглядит также в итоге получаем привычную среду, которая похожа на виртуалку, но виртуалкой не является.

Что касается живой миграции таких контейнеров, то с этим есть определенные проблемы. Сам контейнер привязан к ядру хоста и просто так не может быть передан на другой узел. В рамках Proxmox миграция LXC-контейнеров возможна только с остановкой и перезапуском.

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

3️⃣ Теперь перейдем к докеризации. Докер представляет собой контейнер на уровне приложения. Накладные расходы минимальны – докер приложение исполняется на хосте в рамках установленных лимитов.

Также у докер совсем другая философия, контейнер атомарен и неизменяем, по сути, это некоторый черный ящик, к которому мы подключаем свои ресурсы и настройки.

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

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

👆 Что в итоге выбрать – смотрите сами. Все указанные технологии достаточно зрелые, каждая их них имеет свои особенности и недостатки. А грамотный администратор всегда умеет играть от сильных сторон решений.
👍37🥱102🤝1
Как в Linux узнать скорость USB-портов и их текущий режим работы

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

Воткнуть в синий порт давно уже не вариант, так как разновидностей стандарта USB 3.x сегодня несколько и скорость работы там может существенно отличаться.

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

Но в Linux указанную информацию получить не просто, а очень просто, достаточно выполнить команду:

lsusb -t


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

Расшифровать значения также не сложно, они соответствуют значениям скорости в МБ/с, а именно:

▫️12М - USB 1.0
▫️480M – USB 2.0
▫️5000M - USB 3.2 Gen 1 (USB 3.0)
▫️10000M - USB 3.2 Gen 2 (USB 3.1)
▫️20000M/x2 - USB 3.2 Gen 2x2

Реальный вывод команды показан на скриншоте из которого четко видны режимы работы концентраторов и портов.
👍32131👌1
Настраиваем таймеры systemd вместо заданий cron

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

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

Одна из таких технологий - таймеры systemd, которые позволяют по-новому взглянуть на некоторые классические задачи.

К systemd можно относиться по-разному, но нельзя отрицать, что данная подсистема вывела на новый уровень управление службами в системе Linux и сделала эту задачу гораздо более простой и удобной.

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

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

Да, сron многим привычен, но если рассматривать его сильные и слабые стороны, то в плюсы ему можно записать только простоту, все остальное - обратная сторона медали от этой простоты. Что умеет cron? Запускать задачи по расписанию и уведомлять администратора, если такой запуск завершился неудачей.

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

В остальном cron является достаточно сложным и недружественным сервисом. Одним из популярных запросов в поисковых системах является "скрипт не работает в cron", это действительно так, ваш скрипт может прекрасно работать интерактивно, но не работать через планировщик, либо работать, но приводить к неожиданным результатам.

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

Вторая проблема - тонкая настройка расписания. Хорошо, когда условие простое и задание можно проверить, просто уменьшив интервал, а если довольно сложное? Тогда вы все узнаете только по наступлению события.

Теперь посмотрим, что нам предлагает systеmd. Таймеры - это специальные триггеры, позволяющие запускать любые сервисы периодически, либо по наступлению какого-либо события.

Здесь кроется существенное отличие от cron, запись которого содержит и расписание, и действие, в systemd эта логика разделена: таймер отвечает за управление сервисом, который уже выполняет действие. Для таймеров используются юниты с расширением .timer, в то время как для служб с расширением .service. Чтобы управлять каким-либо сервисом вам понадобится создать для него одноименный таймер.

Читать далее
👍35🤮2
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Устали от рутины в Python? Автоматизируйте задачи с GPT за 90 минут

Собираем и забираем себе в пользование рабочее решение по практической автоматизации на стыке Python + ИИ.

🕑 Завтра | 12:00 или 19:00 (МСК)
на бесплатном вебинаре покажем, как с помощью GPT превращать Python-скрипты в умные сервисы.

За 90 минут вы:
🔹 разберёте базовую архитектуру «умных» сервисов и поймёте, как они устроены
🔹 увидите, как подключаться по API к GPT-моделям и интегрировать их в Python-проекты
🔹 получите готовый каркас автоматизационной системы, который можно забрать себе и дальше развивать: усложнять сценарии, расширять функциональность и автоматизировать рабочие задачи

Кому будет полезно:
— Python-разработчикам
— Data / ML-инженерам
— ИТ-руководителям и тимлидам
— всем, кто хочет применять GPT в реальных проектах

Получите бесплатный доступ к фрагменту курса и живые примеры.

🔗 Регистрируйтесь на вебинар
#реклама
О рекламодателе
🍌4👍2🔥1🤝1
Монтирование файловых систем при помощи systemd

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

Текущая система монтирования уходит корнями еще во времена UNIX и дошла до наших дней без серьезных изменений. Но мир с тех пор серьезно изменился, сегодня в широком ходу сетевые расположения и съемные устройства, работать с которыми классическим образом не слишком удобно.

И вот тут нам на помощь снова приходит systemd, предлагая современные методы монтирования файловых систем.

Читать далее
👍24👌3🤡1
Управление сетевыми настройками в Linux

Последние годы Linux проделал большой путь унификации, во многом благодаря systemd. Теперь вам не нужно вспоминать приемы работы со службами и автозагрузкой в том или ином дистрибутиве. Все везде делается одинаково.

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

Debian использует службу networking, которая управляет сетевой конфигурацией через ifupdown, надо сказать – порядком устаревший.

RHEL и производные полагаются на службу network, использующую скрипты ifup и ifdown. В принципе то же самое, что и в Debian, только все по-другому.

Arch и основанное на нем семейство использует netctl собственной разработки, а если вы решите освоить ALT, то познакомитесь с еще одной системой – Etcnet.

Ну и Ubuntu тоже не остался в стороне со своим netplan.

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

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

Это systemd-networkd, как и весь systemd он очень прост и также строится на основе юнитов соответствующего типа.

В простейшем случае нам достаточно создать юнит с типом network и внести в него следующее содержимое:

[Match]
Name=ens33

[Network]
Address=10.8.8.100/24
Gateway=10.8.8.1
DNS=10.8.8.1


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

При этом его основной плюс – унификация, он будет работать везде, где есть systemd.

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

Почему? Потому что это наиболее универсально и перспективно. Вам не нужно учить разные сетевые менеджеры, достаточно просто знать systemd-networkd.

Также отдельно хотелось бы отметить netplan от Ubuntu. Это не самостоятельный сетевой менеджер, а фронтенд, поддерживающий systemd-networkd и NetworkManager.

Netplan позволяет абстрагироваться от конкретного сетевого менеджера и описывать сети декларативно в формате YAML, после чего уже сам netplan сформирует конфигурацию для используемого сетевого менеджера.

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

Кроме того, у netplan есть интересные возможности, например, проверить сетевые настройки перед их применением. Если что-то пошло не так, то вы не потеряете сетевой доступ к узлу, так как все изменения будут автоматически откачены обратно.

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

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

Как и snap, netplan давно уже вышел за рамки мира Ubuntu и доступен практически в любом дистрибутиве, однако широкого распространения не имеет.
🔥28👍75👀2🥱1
Режимы выделения виртуальной памяти в Linux

Еще один вопрос, который вызывает ряд неверных толкований и ошибок в применении – это режим выделения виртуальной памяти в Linux. А именно политика overcommitment – избыточного выделения памяти процессам, нежели ее есть на самом деле.

Постойте, но зачем выделять памяти больше, чем ее есть на самом деле? Может быть надо жить по средствам? Но не все так просто. Многие процессы запрашивают памяти больше, чем используют на самом деле.

Объем заметки не позволяет углубиться в суть происходящих процессов, поэтому допустим определенные упрощения. Во-первых, процесс может резервировать память «на всякий случай», во-вторых – в память могут отображаться разреженные структуры, например, файл 1 ГБ, у которого реально занято 250 МБ, остальное нули (виртуальный диск).

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

Таким образом выделение памяти процессу не означает ее обязательного использования. Реальное использование физической памяти начинается только после обращения е ней. При этом для процесса не делается разницы между оперативной памятью и подкачкой, и то и другое – физическая память.

Выделение памяти – это, по сути, обещание ядра такую память предоставить, а не ее жесткое резервирование. В результате может сложиться ситуация, что сразу несколько процессов потребуют предоставить зарезервированную память, но ее не окажется в наличии. В этом случае на сцену выходит OOM-killer и убивает самый «негодный» процесс.

Режим работы этого механизма можно задать при помощи опции

vm.overcommit_memory


Которая может принимать одно из трех значений: 0, 1 и 2

🔹vm.overcommit_memory = 0 – значение по умолчанию, лимит выделения памяти рассчитывается ядром эвристически, с учетом реального ее использования. Такая стратегия позволяет наиболее эффективно использовать всю наличную память.

В таком режиме ядро обычно допускает умеренное избыточное выделение памяти, примерно до 50% от общего размера физической памяти (ОЗУ + подкачка).

Из минусов мы имеем некоторую неопределенность. Один и тот же запрос на выделение памяти, может быть, как одобрен ядром, так и отклонен. Также имеется возможность неожиданного срабатывания OOM-killer.

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

🔹 vm.overcommit_memory = 1 – выделение память происходит всегда, все лимиты отключены. Очень специфический режим, который тем не менее может оказаться полезным для процессов активно использующих потомков и общую память (веб-сервера).

Но включая данный режим нужно очень четко представлять, что вы делаете, так как очень высокий риск привести систему в нестабильное состояние из-за реального недостатка памяти, плюс крайне высок риск непредсказуемого срабатывания OOM-killer.

🔹 vm.overcommit_memory = 2 – жесткий лимит на выделение памяти, для этого режима используется еще одна опция:

vm.overcommit_ratio = 100


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

CommitLimit = swap_total + (RAM_total × vm.overcommit_ratio / 100)


По умолчанию vm.overcommit_ratio = 50 и поэтому если вы его не зададите явно, то лимит будет меньше имеющейся в наличии оперативной памяти.

Данный режим рекомендуется использовать вместе с приложениями, которые сами управляют выделением памяти, например, СУБД. В документации PostgreSQL такая настройка указана явно.

Причина здесь проста. В случае тяжелого запроса лучше получить явный отказ в выделении памяти и выдать пользователю ошибку «недостаточно памяти», нежели процесс СУБД окажется завершен OOM-killer и потребует аварийного перезапуска.

В ряде систем с высокими требованиями к стабильности рекомендуется уменьшить лимит выделения до 70-80%.
👍25🔥3🤮1
Что такое Magic SysRq и чем он может быть полезен

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

Неприятно, да. Что делать? Обувать ботинки и спешить в место физического расположения сервера? Не спешите, попробуйте Magic SysRq – это специальные низкоуровневые команды, которые позволяют взаимодействовать даже с наглухо повисшей системой, работало бы ядро.

Чтобы перейти в этот режим отправьте:

echo 1 > /proc/sys/kernel/sysrq


А затем обычно следует команда жесткой перезагрузки системы:

echo b > /proc/sysrq-trigger


Это эффективно и позволяет перезагрузить даже безнадежный сервер, но и достаточно жестко, так как эквивалентно нажатию кнопки Reset на корпусе.

Но ведь мы же висим? Висим, но ядро то работает. Поэтому давайте не будем рубить с плеча, а попробуем обойтись с системой более гуманно.

Прежде всего, если у вас система с графической оболочкой, то следует отключить от нее консоль ввода-вывода чтобы быть уверенным, что никто его не перехватит:

echo r > /proc/sysrq-trigger


Затем пробуем отправить SIGTERM всем процессам (попросим завершиться их по-хорошему). Некоторое время ждем, так как не все могут это сделать мгновенно.

echo e > /proc/sysrq-trigger


А дальше: кто не спрятался – я не виноват, приступаем к принудительному завершению всех активных процессов (посылаем SIGKILL):

echo i > /proc/sysrq-trigger


Чтобы не потерять данные в буферах и кешах принудительно пишем их на диск (посылаем fsync):

echo s > /proc/sysrq-trigger


После чего отмонтируем все файловые системы:

echo u > /proc/sysrq-trigger


А теперь можно и Reset нажать:

echo b > /proc/sysrq-trigger


Как видим – режим тот же, а действия разные. Поэтому не спешите жестко ребутить систему, попробуйте завершить работу по более мягкому варианту. И если ядро живое, то у вас с очень большой вероятностью все получится.
👍348🔥5
Наш резервный канал в MAX, на всякий случай, основное движение пока здесь.

https://max.ru/join/9O4RfUouLW10N1bPe9sM1iJ-CyRVJvi8WdjY2tZL_Cs
👎53👍35🤮18🤝5👌4
Низкоуровневые интерфейсы ядра Linux

В комментариях к заметке про Magic SysRq задали вопрос о том, что это за команды такие, которые отличаются одной буквой. Да, это действительно команды одного из низкоуровневых интерфейсов SysRq, которые состоят из одной буквы.

Но рассмотрим весь этот механизм более подробно. В Linux существуют две виртуальные файловые системы /proc и /sys для низкоуровневого взаимодействия с ядром системы. Они существуют в оперативной памяти и создаются динамически при загрузке системы, при выключении или перезагрузке их содержимое полностью теряется.

1️⃣ Файловая система /proc изначально подразумевалась для отображения информации о процессах, но со временем стала включать в себя инструменты управления и диагностики ядра.

Большая часть файловой системы доступна только для root и только на чтение, например, если мы хотим получить информацию о процессоре, то нам нужно прочитать файл /proc/cpuinfo, я думаю все знают команду:

cat /proc/cpuinfo


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

На запись, кроме /proc/sysrq-trigger, доступна только директория /proc/sys, которая позволяет менять некоторые параметры ядра, пользовательский интерфейс для нее предоставляет утилита sysctl и в большинстве случаев лучше использовать ее.

2️⃣ Файловая система /sys появилась в ядре 2.6 как замена разросшейся /proc для работы с драйверами и оборудованием. Представляет ряд иерархических структур, группирующих устройства по физическому расположению, классам, шинам и т.п., а также инструменты управления некоторыми параметрами системы.

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

Пример работы с низкоуровневыми интерфейсами оборудования можно посмотреть в нашей статье:

NVMe-over-TCP - практическое знакомство с технологией

👆 В целом работа с низкоуровневыми интерфейсами ядра не представляет особой сложности, но требует определенных знаний и навыков, при этом в повседневной эксплуатации она не требуется, а нужное взаимодействие выполняют высокоуровневые утилиты.

Но общие принципы устройства данных интерфейсов и работы с ними должен знать каждый Linux-администратор.
👍30🤮1