ServerAdmin.ru
30.9K subscribers
507 photos
45 videos
20 files
2.79K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
В Debian есть интересная библиотека libeatmydata, которая подменяет системные вызовы fsync, fdatasync, sync и некоторые другие на пустышки. Эти команды сразу выдают положительный результат, ничего не делая. То есть не работает подтверждение записи на диск.

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

Работает это примерно так:

int fsync(int fd) {
return 0;
}


Реально там ещё пару проверок с if, но по сути всё так и есть для всех системных вызовов, что она она перехватывает.

Эту возможность без особых опасений можно использовать во временных или тестовых средах, где не важна сохранность данных. Причём сделать это очень просто. Ставим пакет:

# apt install eatmydata

Запускаем через него любую команду. Я протестировал на старой виртуалке, которую давно не обновляли. Сделал запуск обновления без eatmydata и с ней. Разница получилась заметной.

Напомню, что реальной установкой пакетов занимается утилита dpkg, а не apt. Dpkg для надёжности выполняет все действия с подтверждением записи. Так что если запустить её через eatmydata, она отработает гораздо быстрее.

Я выполнил полное обновление пакетов в два этапа, откатив первое обновление на изначальный снепшот:

# time apt upgrade -y
Fetched 249 MB in 30s (8,183 kB/s)
real 1m 43.690s

# time eatmydata apt upgrade -y
Fetched 249 MB in 33s (7,671 kB/s)
real 1m 36.984s

Работа dpkg занимает где-то треть всего времени, ещё треть загрузка пакетов, и треть пересборка initramfs. Без eatmydata dpkg работала примерно 30 секунд, с ней – 20.

Или вот ещё более наглядный тест. Запускаем создание файла в режиме синхронизации и подтверждения записи каждого блока:

# dd if=/dev/zero of=/mnt/tempfile bs=1M count=512 oflag=dsync
536870912 bytes (537 MB, 512 MiB) copied, 1.95211 s, 275 MB/s

И то же самое через eatmydata:

# eatmydata dd if=/dev/zero of=/mnt/tempfile bs=1M count=512 oflag=dsync
536870912 bytes (537 MB, 512 MiB) copied, 0.343773 s, 1.6 GB/s

Эта возможность может пригодиться при сборке контейнеров, образов, раскатки тестовых сред. Можно запускать тестовую СУБД через eatmydata. Да всё, что угодно на тестовом сервере.

Если у вас есть какие-то скрипты, которые не хочется переделывать, добавляя в начало каждой команды eatmydata, можете просто задать переменную окружения, в том числе глобальную в /etc/environment:

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libeatmydata.so

И все процессы будут писать без подтверждения записи в кэш.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux
Открытый практикум Linux by Rebrain: Знакомство с LVM

После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.

👉 Регистрация

Время проведения:


7 мая (среда), 20:00 по МСК

Программа практикума:

▪️Старый подход к разметке пространства. Чем он плох?
▫️Базовые понятия о файловой системе
▪️Основы LVM

Кто ведёт?

Андрей Буранов — специалист по UNIX-системам в компании VK, входит в топ 3 лучших преподавателей образовательных порталов. 10+ лет опыта работы с ОС Linux и 8+ лет опыта преподавания.

Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!

Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFGwYtnC
Хочу обсудить с вами одну тему, так как думаю, она актуальна для многих читателей и в том числе для меня лично. По статистике сайта и ВК аудитория 35+ преобладает над всеми остальными. Это более 50% всех читателей. В TG нет такой статистики, но думаю, что она схожа.

Навеяло тему вот это видео:

Университет пережиток прошлого? Нужен ли вуз DevOps да и любому айтишнику.

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

1️⃣ Приведу первый свежий пример, который меня заставил в своё время призадуматься. Один знакомый, далёкий от айти, попросил совета по поводу сына. У него сын учился в 10-м классе. Самостоятельно увлёкся программированием. Сам обучался, освоил неплохо. Начал работать и зарабатывать приличные деньги. Стал писать софт под iOS. Уже в начале 11-го класса одними подработками он получал доход больше отца и полностью сам себя обеспечивал.

Собственно, отец ко мне и обратился с советом, как быть. Сын не хотел поступать в ВУЗ, а хотел продолжать учёбу по теме программирования и работать. А отец переживал, что сейчас врубят санкции, iOS заблокируют и сын останется ни с чем – без работы и без образования. Он не понимал, что это универсальный навык . Научившись реальному программированию, сын без работы уже не останется.

Я только успокоил, что переживать смысла нет. А что насчёт ВУЗа, не знаю. Да, лучше, наверное, отучиться, но насильно не заставишь, когда человек уже познал вкус заработка. К тому же есть явное увлечение своей деятельностью, способность к самообразованию, раз он сам всё освоил и развивается. Думаю, в таком случае продуктивнее реально начать работать, учиться где-то на специальных курсах, чтобы углубить свои навыки, и ВУЗ заканчивать заочно. Мне кажется, это будет более продуктивно, нежели идти на дневное обучение на 5,5 лет. Работать полноценно не получится. Я сам работал, знаю это. Да и по теме современной разработки он вряд ли что-то в ВУЗе узнает.

2️⃣ Второй пример – мой хороший знакомый. Пошёл куда-то учиться, с первого курса вылетел. Попал в армию. Пришёл из армии, начал самостоятельно осваивать 1С. Через некоторое время устроился программистом на небольшую зарплату. Так и раскрутился, стал нормальным 1С программистом. Неплохо зарабатывает этим на жизнь. Уже по ходу работы отучился где-то для корочки заочно да и всё. Возникает закономерный вопрос, нужен ли был ему ВУЗ, чтобы стать программистом 1С?

Я в итоге думаю так. Если нет каких-то особых событий в жизни, ребёнок планово учится в школе, ещё толком не знает, чем будет заниматься, но есть склонности к IT, то стоит идти, как и большинство, в ВУЗ. А если есть какие-то явные таланты, стремления, что человек в школе уже работает и зарабатывает, то можно отойти от этой линии и придумать какой-то альтернативный вариант. И та же история с приятелем. Если уж не получилось в своё время закончить ВУЗ, то можно не цепляться за очное обучение, а искать какие-то другие варианты. А корочку всегда можно заочно получить. Сейчас это вообще очень просто делается. Куча ВУЗов работают только на это – платишь деньги, платишь за написание диплома и спокойно получаешь корочку какого-то проходного заведения.

Что думаете по этому поводу? Особенно интересно мнение тех, у кого дети сейчас 15-16 лет и остро стоит подобный вопрос.

#дети
Please open Telegram to view this post
VIEW IN TELEGRAM
🔝 ТОП постов за прошедший месяц. Все самые популярные публикации по месяцам можно почитать со соответствующему хэштэгу #топ. Отдельно можно посмотреть ТОП за прошлые года: 2023 и 2024.

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

Пользуясь случаем, хочу попросить проголосовать за мой канал, так как это открывает некоторые дополнительные возможности по настройке: https://t.me/boost/srv_admin.

📌 Больше всего пересылок:
◽️Управление сохранёнными паролями в Windows (694)
◽️Подборка bash скриптов с канала (684)
◽️Как Windows определяет наличие интернета (574)
◽️Nginx UI для управления конфигурацией в браузере (517)

📌 Больше всего комментариев:
◽️Про высшее образование в IT (350)
◽️Выбор вентиляторов для системного блока (326)
◽️Вопросы на собеседованиях по базе (216)
◽️Ночные дежурства и переработки (135)

📌 Больше всего реакций:
◽️Как Windows определяет наличие интернета (385)
◽️Ночные дежурства и переработки (320)
◽️Управление сохранёнными паролями в Windows (297)

📌 Больше всего просмотров:
◽️Шутка на 1-е апреля про сисадминов (13448)
◽️Игра You're the OS! (10877)
◽️Управление сохранёнными паролями в Windows (10185)

#топ
🐳 Хотите стать экспертом по Docker и микросервисам? Освойте ключевые навыки для разработки, упаковки и развертывания приложений с Docker-образами!

На открытом вебинаре 13 мая в 20:00 мск мы разберём, как эффективно использовать Docker для контейнеризации и автоматизации процессов развертывания микросервисов. Вы познакомитесь с принципами создания и оптимизации Docker-образов, а также с лучшими практиками DevOps и CI/CD.

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

👉 Регистрируйтесь на открытый урок и получите скидку на программу обучения «DevOps-практики и инструменты»: https://clck.ru/3Lr69Q

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
После прошлой истории с ddos захотелось проработать какое-то готовое универсальное решение, чтобы можно было его быстро применить, а не придумывать разные способы. В комментариях люди писали, что надо было установить fail2ban, какой-нибудь WAF или что-то в этом роде. Это всё слабо поможет, если идёт большая нагрузка. Fail2ban сразу мимо, забываем про него. А WAF или какой-то фильтрующий сервер надо настраивать заранее, а не когда у вас единственную машину ддосят.

Я взял наиболее простой и быстрый с точки зрения производительности вариант: ipset + iptables. Если ваш канал и сервер в целом вывозят нагрузку и вас не блокирует провайдер, указанная связка будет наиболее лёгкой и эффективной с точки зрения потребления ресурсов.

Сначала хотел что-то простое набросать, но потом всё расширял и расширял возможности. В итоге родился довольно большой bash скрипт с некоторыми проверками и логированием. Рассказываю, что он делает:

1️⃣ Проверяет установку ipset, создаёт списки.
2️⃣ Проверяет установку rsyslog, чтобы логировать заблокированные подключения. Это нужно на момент отладки и в обычное время, когда нет ддоса. Если начали ддосить, логирование надо отключить.
3️⃣ Создаёт конфигурацию rsyslog для хранения логов в отдельных файлах. Настраивает ротацию через logrotate.
4️⃣ Дальше идут переменные, касающиеся правил iptables: имя и ip адрес WAN интерфейса, белый список IP, с которых разрешено всё, разрешённые TCP и UDP порты, на которые мы принимаем соединения. Всё остальное блокируем.
5️⃣ Дальше идут наборы правил:
- очистка всех правил
- запрет всего, что не разрешено явно
- разрешаем установленные соединения
- разрешаем localhost и icmp
- разрешаем исходящие соединения сервера
- разрешаем все соединения от белого списка
- блокируем неопознанные и нулевые пакеты
- блокируем новые соединения без статуса NEW
- блокируем списки ipset, которые формируются ниже
- добавляем в список тех, кто открывает более 10-ти соединений с сервером в течении секунды, логируем таких товарищей
- разрешаем доступ к открытым портам, в данном примере это порты 80, 443 TCP и 443 UDP
- тех, кто обращается к другим портам, добавляем в список ipset
- сохраняю все правила в файл

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

Для проверки работы надо установить на сервере iptables, ipset, rsyslog:

# apt install iptables ipset rsyslog

Скопировать и заполнить переменные в bash скрипте. Особое внимание уделить переменным WAN, WAN_IP, WLIST, WPORT_TCP, WPORT_UDP. На основе них будут сформированы правила iptables. Отдельного правила для SSH я не делал. Подразумевается, что подключаться куда-либо кроме открытых 80 и 443 портов можно только из списка WLIST. Туда можно добавлять IP адреса или подсети через запятую.

После выполнения скрипта, смотрим правила iptables:

# iptables -L -v -n

Проверял работу так. Установил веб сервер. Попробовал с другой машины подключиться к серверу через telnet на любой отличный от HTTP порт:

# telnet 85.143.173.182 23

Получил бан с занесением в список BANPORT. Смотреть этот список так:

# ipset -L BANPORT

Далее установил ab и попробовал спам запросов в 50 потоков к веб серверу:

# ab -c 50 -n 30000 "http://85.143.173.182/"

Получил бан с занесением в список BANDDOS. Оба бана были отражены в лог файлах ipset_portscan.log и ipset_ddos.log. При этом если ничего из описанного выше не делать, а просто ходить на веб сайт, доступ открыт, всё работает нормально.

⚡️На работающем сервере запускать такие скрипты не рекомендую, особенно если нет доступа к консоли. Сначала проверьте и отладьте на тестовой виртуалке. Убедитесь, что не отрубаете себе доступ. В целом, тут небольшой и относительно простой набор правил.

Забрать скрипт iptables.sh

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#iptables #ipset #ddos
Please open Telegram to view this post
VIEW IN TELEGRAM
Почтовый сервер postfix позволяет очень гибко управлять транспортом почты во всех направлениях. Меня не раз спрашивали, можно ли сделать так, чтобы на какой-то домен почта не отправлялась, но при этом клиент во время отправки не получал никакой ошибки. То есть он как-будто всё отправил, но письмо реально не ушло.

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

Это не всегда удобно. Можно подумать, что это нужно для того, чтобы ввести в заблуждение пользователя почты, чтобы он не знал, что письмо реально не доставлено. Но на самом деле нет. Это чаще всего нужно не для этого. Например, может быть софт, который делает какие-то отправки по определённому набору доменов. И отправлять ему можно только туда. Если в его список рассылки по какой-то причине попадут другие домены, а вы настроите smtpd_recipient_restrictions, то его завалит обратными письмами с ошибками.

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

Настраиваем параметр transport_maps, добавляя в /etc/postfix/main.cf:

transport_maps = hash:/etc/postfix/transport_map

Создаём файл /etc/postfix/transport_map следующего содержания:

example.com   discard: Not allowed destination

Создаём индексированный файл и перечитываем конфигурацию:

# postmap /etc/postfix/transport_map
# postfix reload

Теперь при отправке письма на домен example.com клиент не получит никакой ошибки. Он будет считать, что письмо нормально отправлено. При этом в логе postfix это отразится вот так:

2025-05-06T11:41:29.689884+03:00 mailsrv postfix/discard[3974535]: 887AA11B319: to=<user@example.com>, relay=none, delay=0.18, delays=0.17/0.01/0/0, dsn=2.0.0, status=sent (Not allowed destination)

Отправки реально не было, так как relay=none. Можно сделать и обратную ситуацию. Отменить отправку на все домены, кроме example.com. Тогда файл transport_map будет выглядеть так:

example.com :
* discard: Not allowed destination

Для example.com обычная доставка, для всех остальных - discard. Поясню, как это работает. Данный параметр я знаю давно и активно использую. Пример файла transport_map из моей практики:

websrv.site.ru local
backupmail.ru relay:[backupmail.ru]:25
* relay:[smtp.yandex.ru]:465

Первый домен websrv.site.ru используется как локальный. Вся почта для этого домена отправляется только локально в рамках данного сервера. Второй домен backupmail.ru используется для бэкапа всей корреспонденции. Ящики из этого домена настроены как сборщики копий через bcc_maps всей входящей и исходящей почты. Третья строчка указывает отправлять всю остальную почту через smtp сервер Яндекса.

Подробно я эту тему рассматривал в отдельной статье:

Postfix - выбор сервера для отправки в зависимости от получателя

Там как раз рассматривается параметр transport_maps, но не в контексте задачи скрытого запрета отправки писем. Для запрета мы просто указали соответствующий транспорт - discard, вместо relay. И письма в итоге не отправляются.

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

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#postfix
Открытый практикум Linux by Rebrain: LVM — снапшоты, отказоусточивость, кэширование

После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.

👉Регистрация

Время проведения:


14 мая (среда) в 20:00 по МСК

Программа практикума:

▪️ Что такое снапшот?
▫️ Как реализовать отказоустойчивость LVM?
▪️ Кэш в LVM

Кто ведёт?

Андрей Буранов — специалист по UNIX-системам в компании VK, входит в топ 3 лучших преподавателей образовательных порталов. 10+ лет опыта работы с ОС Linux и 8+ лет опыта преподавания.

Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!

Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFJPhhct
▶️ Очередная подборка авторских IT роликов, которые я лично посмотрел и посчитал интересными/полезными. Это видео из моих подписок за последнее время (обычно беру период в 2 недели), что мне понравились.

Файловый сервер Linux. Корзина (Recycle) №4
Продолжение цикла видео про настройку файлового сервера Linux. Ранее я уже публиковал видео из этого цикла, можно посмотреть их в канале автора. Хороший разбор функциональности корзины Samba с примерами и разбором конфигурации. Хорошая серия получилось, её бы в текстовый формат перевести.

Angie VS HAProxy: кто быстрее?
Сравнение производительности двух указанных продуктов в режиме прокси. Как и ожидалось, однозначный вывод и сравнение сделать трудно, так как всё сильно разнится в зависимости от шифрования, размера передаваемых данных и т.д. Каких-то явных преимуществ одного над другим нет.

FreeIPA - Powerful User and Device Control through Identity, Permissions, and Auditing
Очень подробный обзор FreeIPA фактически с нуля для новичков. Автор взял голую VPS и всё там настроил от IP адреса и до Firewall и доступа по VPN внешним клиентом для управления службой каталогов.

Как измерить скорость локальной сети? Локальный speedtest
Автор показал пример использования локальных iperf, openspeedtest и librespeed для тестирования скорости в локальной сети.

How To Install Zabbix 7.4 With PostgreSQL and TimescaleDB
Свежее подробное руководство по настройке указанного стека. Если у вас нет реальной нужды в TimescaleDB, то лучше не используйте её. Я сначала для экономии места везде стал втыкать, но это осложняет эксплуатацию. С обновлением возникают нюансы. Если у вас база небольшая и по нагрузке нормально всё вытягиваете, не включайте расширение TimescaleDB.

Бюджетный wi-fi 7! миф или реальность? #xiaomi be3600
Интересное видео на тему того, как автор решал вопрос полного покрытия Wifi в арендованной квартире, где нельзя тянуть кабели. Плюс обзор xiaomi be3600, который стоит сейчас 3-4 т.р.

Jellyfin - медиа сервер. Домашний кинотеатр. Удобный, простой и современный. Обзор и настройка.
Обзор медиасервера для дома Jellyfin. Я лично дома уже лет 15 использую встроенный от Synology. Меня устраивает для обычного просмотра фильмов на телевизоре по сети.

Протокол TCP: установка соединения | Компьютерные сети 2025 - 30
Протокол TCP - скользящее окно | Компьютерные сети 2025 - 29
Очередные обновлённые уроки хорошего бесплатного курса по сетям от Созыкина Андрея.

ТЕСТИРУЕМ последние Нейросети для программирования! Апрель 2025
Очередной ролик про тестирование нейронок в написании реального ПО. Мне уже не очень интересно было, так как смотрел на такую же тему предыдущие видео. Если вы их не видели, возможно вам будет интересно. Сейчас можно писать простые прикладные программы вообще не разбираясь в программировании. Только силами ИИ. Многие уже этим пользуются, читал такие истории.

What software runs in my HomeLab in 2025?
В прошлой подборке был обзор железа этого блогера, теперь софт в его домашней лаборатории. Интересное и информативное видео. В принципе, там всё плюс-минус как у всех: Proxmox, Docker, Kubernetes (k3s), Sophos в качестве файрвола, Unraid для хранения (грузит его с usb), Traefik, Prometheus, Gitlab и т.д.

What's on my Home Server 2025
Ещё один обзор домашнего софта популярного блогера. Тут очень хорошо всё оформлено: название продукта и обзор интерфейса. По 2-3 минуты на каждый. Тут тоже привычный набор: Homepage, Immich, Jellyfin, Nextcloud, Uptime Kuma, Vaultwarden и т.д. Из любопытного, автор рассказал, что для своего окружения он отказался от Ansible после перехода на NixOS, где состав и настройка системы описывается конфигурационным файлом. По этой же причине он не использует контейнеры, а вместо них модули NixOS. Вообще, интересный опыт. Я особо не погружался в NixOS. Надо будет посмотреть.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
Настраивал на днях арендованный сервер без прямого доступа к консоли. Ещё и конфигурация была нестандартная, так что техподдержка вручную установила туда ОС и отдала мне с доступом по SSH. Нужно было настроить дополнительные диски и добавить их в fstab. Несмотря на то, что в современных ОС реально монтирует диски systemd, я по старинке предпочитаю добавлять новые точки монтирования в fstab.

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

Я обычно добавляю новые диски в систему следующим образом. Смотрю список дисков через fstab:

# fdisk -l | grep /dev/

Сразу видно диски без разметки. Добавлять разделы предпочитаю в cfdisk, а не напрямую в консоли через fstab. В TUI как-то нагляднее, меньше шансов ошибиться.

# cfdisk /dev/sdb

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

# mkfs -t ext4 /dev/sdb1

Монтирую в систему:

# mkdir /mnt/disk1
# mount /dev/sdb1 /mnt/disk1

Теперь нам надо добавить эту точку монтирования в fstab. По имени диска категорически нельзя добавлять. Диски могут менять свои имена. Причём это стало актуально в какой-то момент с очередным обновлением железа. Когда я только начинал изучать Linux, спокойно монтировал по именам дисков и проблем не было. В какой-то момент они начались. И сейчас я сам часто наблюдаю, что диски, как и сетевые интерфейсы, могут изменить свои имена после перезагрузки. Если используете LVM, то можно добавлять точки монтирования по имени LV.

Смотрим UUID раздела:

# blkid | grep /dev/sdb1

Добавляем его в fstab отдельной строкой:

UUID=eaf5c153-08b7-4ea8-8037-e6baad4cac0d /mnt/disk1 ext4 errors=remount-ro 1 0

А теперь проверяем, всё ли мы правильно добавили.

# findmnt --verify --verbose

Findmnt проверил все монтирования. В моём случае я получил предупреждение на /media/cdrom0.

[W] unreachable source: /dev/sr0: No such file or directory

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

Более кратко можно получить информацию только об ошибках:

# findmnt -x

☝️Отдельно обращаю внимание на такой момент. До перехода управления к systemd было критически важно оставлять в fstab в конце файла переход на новую строку. Сейчас даже если этого не сделать, то проблем не будет. Всё нормально загрузится. Насколько я понимаю, это тянется из далёкого прошлого и POSIX-совместимой практики, когда файлы конфигурации заканчивались переходом на новую строку. Я лично до сих пор на всякий случай везде этой практики придерживаюсь.

Ещё один способ проверить корректность записей в fstab – использовать mount. Можно не монтировать вручную новый диск, а сразу добавить его в fstab. Потом запустить:

# mount -a -v

Утилита смонтирует все записи из файла, где не указан параметр noauto. Если вы всё верно добавили, то ошибок не увидите и получите смонтированным новый диск.

Расскажу, что будет, если, к примеру, ошибётесь с диском в fstab или он просто перестанет быть видим в системе. Я лично с этим не раз сталкивался. А однажды это привело к дальней дороге. Добавили наживую новый диск в сервер, я его добавил с ошибкой в fstab и не проверил. Сервер аварийно перезагрузился через полгода из-за обесточивания серверной. Возникли какие-то проблемы с доступом туда, ещё и сервер по неизвестной на тот момент мне причине не стартанул. Приехал туда ножками и увидел примерно то же самое, что вы видите на втором скрине.

Сразу понял, в чём дело, зашёл в режим обслуживания и поправил fstab. Так что внимательно относитесь к его настройке. Этой проблемы можно избежать, если использовать nofail в параметрах монтирования. Но с ним могут быть нюансы. Иногда лучше не загрузиться, если с разделом проблемы.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux
🖥 Надёжный хостинг — это когда всё просто работает. В том числе поддержка 24/7.

В IHC мы знаем, что для вашего проекта важны скорость, стабильность и гибкость. Поэтому предлагаем всё необходимое — от хостинга и VPS с мощными процессорами до размещения серверов в ЦОД и лицензий для популярных CMS.

⚡️А теперь ещё и новая услуга — хостинг облачной 1С. Работайте из любой точки мира, экономя время и ресурсы!

Серверы в России и Европе. Всё прозрачно, в рублях, без скрытых платежей и с приятными бонусами:

— тест 7 дней
— домен в подарок
— скидки при оплате на год
— участие в партнёрской программе

Подберите тариф и убедитесь сами, почему нас выбирают тысячи клиентов!🤝🏻

👉 Перейти на ihc.ru

Реклама, ООО «Интернет-Хостинг», ИНН 7701838266.
Please open Telegram to view this post
VIEW IN TELEGRAM
Я написал большую и насколько смог подробную статью по настройке кластера на базе Proxmox VE. По современным требованиям законодательства я вынужден промаркировать её как реклама, так как сервера для её написания мне предоставил хостер Selectel, а я оставил на него ссылки. Никаких требований непосредственно по рекламе предъявлено не было, кроме одного – в статье должно быть показано, как я заказываю услуги через панель управления. По содержанию и тексту не было ни единой правки. Всё продумал, настроил и написал лично я от и до.

Статья получилась универсальной без привязки к конкретным услугам, так как я использую обычные арендные сервера с установленной бесплатной версией Proxmox VE, а в качестве общих хранилищ для кластера – сетевые диски, подключаемые через iSCSI интерфейс. Настройка подобных дисков плюс-минус везде одинаковая. Разница если и будет, то в типе аутентификации или её отсутствии.

В статье отражены следующие моменты:

▪️Настройка Proxmox VE на серверах с двумя NVMe M.2 дисками, объединёнными в программный RAID1 на базе mdadm для отказоустойчивости на уровне дисков.
▪️Объединение трёх идентичных серверов в обычный кластер с локальными дисками и ручной миграцией виртуальных машин без их остановки.
▪️Настройка сети виртуальных машин с VLAN с помощью встроенной Proxmox SDN.
▪️Подключение к серверам сетевых дисков по iSCSI, добавление их в Proxmox и создание на их базе общих хранилищ для дисков виртуальных машин в формате LVM.
▪️Настройка HA (High Availability) на примере виртуальной машины и LXC контейнера. Я настраиваю HA, аварийно выключаю одну из нод кластера и показываю, как с неё автоматически переезжают ресурсы на работающие ноды.

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

Остались нерассмотренными пара других полезных конфигураций:

◽️Репликация виртуальных машин в кластере на базе файловых хранилищ в формате zfs.
◽️Использование кластера Ceph для виртуальных машин, построенного на базе этих же трёх нод кластера.

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

Установка и настройка кластера Proxmox VE

Настройка кластера высокой доступности на базе Proxmox VE представляет из себя относительно простую, рядовую задачу. При этом выполнить её можно на любом железе, от самого бюджетного десктопного оборудования до серверных платформ. Сочетание софтовых решений по отказоустойчивости дисков на базе mdadm или zfs вкупе с функциональностью HA кластера Proxmox позволяют реализовать относительно (!) высокую доступность на любом поддерживаемом этой системой оборудовании. А так как сама система на базе ОС Debian и ядра Linux, поддерживает она практически любое более-менее современное железо.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#proxmox #статья
Расскажу кратенько с конкретными примерами, как я настраиваю ограничение на доступ к серверам и сервисам по статическим IP адресам и потом подключаюсь к ним, используя некоторое количество арендованных VPS для этих целей.

Я уже давно практикую и остальным советую не оставлять публичный доступ через интернет к сервисам, которые не являются публичными. Например, тот же SSH я открываю только для белого списка своих IP адресов. Для iptables это обычно выглядит так:

SSH_WLIST=100.189.229.125,141.73.66.12,187.91.13.196,83.208.103.44,194.139.219.214
iptables -A INPUT -i enp5s0 -s $SSH_WLIST -p tcp --dport 22 -j ACCEPT

В скрипте с правилами задана переменная со списком моих IP адресов и правило для SSH на его основе.

На VPS с перечисленными IP адресами настроены сервера OpenVPN. Они используются для различных задач, в том числе в качестве шлюзов для подключения к закрытым серверам. При подключении со своих рабочих машин я не направляю весь трафик в VPN. Это неудобно и мешает работе. В общем случае я использую прямой выход в интернет для типовых задач в виде сёрфинга в интернете, просмотра видео и т.д.

При подключении по VPN я получаю только те маршруты, что мне нужны. Например, я хочу подключаться к серверу c IP адресом 233.129.58.85 через конкретный OpenVPN сервер. Я иду на него и добавляю на сервере к конфигурации, привязанной к сертификату, который я использую при подключении, следующую настройку:

push "route 233.129.58.85 255.255.255.255"

При подключении по VPN ко мне в систему приедет маршрут до 233.129.58.85 через этот сервер. Подключение по SSH к этому серверу пойдёт через VPN. В настройке маршрута можно указать не только IP адрес, но и DNS имя. Примерно так:

push "route ya.ru 255.255.255.255"

Чтобы это сработало, в конфигурации клиента, для которого добавлен такой маршрут, должен быть добавлен параметр:

allow-pull-fqdn

В итоге на рабочей машине у меня настроен клиент OpenVPN с готовыми подключениями к различным VPN серверам. Когда мне надо подключиться к той или иной инфраструктуре, я подключаюсь к нужному VPN серверу и получаю маршруты только туда. Всё остальное остаётся неизменным. Весь трафик в VPN я не направляю, уже существующие соединения не рвутся. Одновременно могут быть активны разные OpenVPN соединения. Все маршруты управляются с серверов. На самом клиенте я ничего не меняю.

В такую схему легко добавляются новые VPS, новые пользователи (❗️), новые сертификаты со своими привязанными к ним настройками, и всё это управляется централизованно через сервера. Сами клиенты трогать не надо.

📌 Полезные ссылки по теме:

▪️Основные преимущества OpenVPN сервера
▪️Настройка allow-pull-fqdn
▪️Одновременный запуск нескольких клиентов OpenVPN
▪️Запуск OpenVPN сервера на разных внешних IP адресах
▪️Запускаем OpenVPN сервер за 443 портом веб сервера

На днях на одном из моих серверов протух CA, который был выпущен 10 лет назад. Такие встречаются долгожители. И это не первый случай. Писал и заметки здесь по этой теме, и статья на сайте есть.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#openvpn
Открытый практикум Linux by Rebrain: RAID массивы

После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.

👉Регистрация

Время проведения:

21 мая (среда) в 20:00 по МСК

Программа практикума:

▫️Что такое RAID массив?
▪️Некоторые типы RAID массивов
▫️Практика работы с RAID массивами

Кто ведёт?

Андрей Буранов — специалист по UNIX-системам в компании VK, входит в топ 3 лучших преподавателей образовательных порталов. 10+ лет опыта работы с ОС Linux и 8+ лет опыта преподавания.

Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!

Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFHHfSaL
Я анонсировал ранее подборку сайтов IT блогеров со статьями на различные темы, связанные с настройкой и эксплуатацией IT систем. Собралось небольшое сообщество авторов. Полный список сайтов есть в прошлой подборке. А пока анонс новых статей тех авторов, кто согласился участвовать и прислал свои материалы. 

Разрабатываем мини-автоматизацию по оповещению администратора о факте НСД в Astra Linux
Оповещения администратора безопасности при попытках подключения незарегистрированных носителей информации к Astra Linux. Реализовано через правило udev, которое запускает скрипт при подключении носителя, скрипт отправляет запись в локальный syslog сервер, а тот пересылает в удалённый.

Человеческий фактор или вредные советы по Astra Linux
Несколько примеров из практики на тему того, как не работают внедрённые регламенты и правила.

Установка Astra Linux 1.8. Как установить и что нового?
Подробная статья на тему установки новой Astra Linux 1.8 от создания загрузочной флешки до разбивки диска и начальной настройки.

🔥 Windows и оперативная память
Подробная статья на тему работы с памятью в Windows: чем виртуальная отличается от физической, как происходит выделение памяти процессам, что такое рабочий набор, swap и др. Работа с утилитами RAMMap, Process Explorer, Testlimit, Strings, NotMyFault и poolmon. Кому не интересно всё это, можете перемотать в раздел Диспетчер задач Windows и память и посмотреть описание метрик памяти в диспетчере задач.

Как установить сертификат ECC (Elliptic Curve Cryptography) в Exchange Server
ECC сертификаты приехали в Exchange. Я давно начал их использовать для SSH и вам советую. Если быть точным, ECC - это алгоритм Elliptic Curve Cryptography (криптография на эллиптических кривых), а я имею ввиду ключи на базе алгоритма Ed25519, который основан на эллиптических кривых.

Как установить RSAT на Windows 11
Установка Remote Server Administration Tools для управления различными ролями Windows Server: AD, DNS, DHCP и другие.

Как исправить спам-сообщения в средстве просмотра очереди Exchange Server
Письма, отправленные на несуществующие адреса в вашем домене, обрабатываются, формируются отчёты о недоставке (NDR) и отправляются обратно отправителю. В статье рассказано, как с этим бороться.

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

Установка контроллера ZeroTier на свой сервер с помощью ZTNET
Selfhosted размещение ZeroTier контроллера со встроенной панелью администратора.

Построение защищенных виртуальных сетей с помощью Nebula
Объединение распределенных устройств в отдельную изолированную сеть с помощью Nebula.

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

Поднимаем свой DNS сервер Unbound и блокировщик рекламы Pihole в docker
К собранному ранее образу с Unbound добавляется Pi-hole для блокировки рекламы.

Пользователи в Linux
Небольшая справочная статья по работе с пользователями в Linux - создание, удаление и т.д.

Использование sudo в Linux
База по установке и настройке Sudo. Кому любопытно, когда-то давно я написал статью Sudo не нужен при работе в консоли сервера.

SSH – Тонкая настройка клиента в Linux: config файл и ssh-agent
Примеры некоторых настроек клиента SSH, а также использование ssh-agent.

Ollama — Локальный ИИ на вашем Linux ПК
Установка Ollama и запуск на ней бесплатных моделей разной сложности.

RabbitMQ. Практика. Troubleshooting. CLI. Отсутствует утилита rabbitmqadmin
Небольшая заметка по установке консольной утилиты rabbitmqadmin.

Как полностью удалить Microsoft Office с компьютера
Использование утилиты Office Scrubber для очистки компа от следов офиса.

Основы SQL на примере PostgreSQL
База по синтаксису SQL на основе примеров в PostgreSQL.

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

Вам нужно узнать, есть ли необходимый модуль в составе Nginx. По идее всё просто:

# nginx -V

На выходе портянка, в которой глазами трудно что-то найти. Пробуем грепнуть:

# nginx -V | grep http_realip_module

Вообще ноль изменений. И причины тут на самом деле не одна, а сразу две:

1️⃣ nginx -V выводит информацию не в стандартный поток с данными stdout, с которым работает grep и прочие консольные утилиты, а в stderr;

2️⃣ все модули перечислены одной строкой, так что грепнуть её содержимое не получится.

Показываю решение обоих проблем:

# nginx -V 2>&1 | tr ' ' '\n' | grep http_realip_module
--with-http_realip_module

Видим нужный нам модуль. Я сначала через 2>&1 направил поток stderr в stdout, чтобы с ним можно было работать консольными утилитами, а затем с помощью tr заменил все пробелы символами перехода на новую строку \n. В итоге у нас весь вывод nginx -V разбился на отдельные фразы, каждая в новой строке и после этого успешно грепнулся.

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

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#bash
Please open Telegram to view this post
VIEW IN TELEGRAM