Rose debug info
---------------

IT science

тестируем китайский оптический патчкорд 10Гбит/с

Позарился я на дешевый оптический патчкорд на 10Гбит/с из Китая

2 SFP+ модуля и оптика всего за 1000 руб.

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

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

Честно, я переживал, так как у нас свитчи HP и получилось так, что я просто выкинул деньги.

После получения посылки проверить все равно решили, выкладываю результаты небольшого теста
в тесте участвовали две машины с сетевыми картами Asus 10-Gigabit XG-C100C, подключенные медью к свитчам HPE 1950 24G 2SFP+ 2XGT Switch и HPE 1950 48G 2SFP+ 2XGT Switch.

Первый iperf замер был произведен при соединении свитчей медью

результат со стороны клиента
результат со стороны сервера

Второй iperf замер был произведен при соединении свитчей оптикой

результат со стороны клиента
результат со стороны сервера

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

PS проверили соединение с еще одним свитчом D-Link DGS-1510-52X, уже без тестов скорости, по индикации свитчей поднялся линк 10Гбит/с.

создание пакетов synology (1 часть, подготовка рабочего пространства)

Сейчас я вам расскажу простым и доступным языком как создавать пакеты Synology. За основу возьму официальную статью с сайта https://help.synology.com/developer-guide/create_package/build_and_create_package.html

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

Для начала нам понадобится linux сервер, например Ubuntu

раскатываем малявку mini http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso

я делал виртуальный...

после установки работаем из под sudo (обязательно)

sudo su

устанавливаем python, git, gpg

apt install python git gpg

создаем папку toolkit в корне системы (для этого и нужны root права)

mkdir -p /toolkit
cd /toolkit

скачиваем toolkit

git clone https://github.com/SynologyOpenSource/pkgscripts-ng pkgscripts
cd /toolkit/pkgscripts/

готовим среду для сборки, например для DSM 6.x и архитектуры x64

./EnvDeploy -v 6.0 -p x64

посмотреть список доступных платформ можно так:

./EnvDeploy -v 6.0 --list

создаем GPG ключ

gpg --gen-key

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

все что мы сгенерировали попадает в папку /root/.gnupg/, которую надо скопировать сюда /toolkit/build_env/ds.x64-6.0/root/

теперь проверяем что у нас получилось

cd /toolkit/build_env/ds.x64-6.0/
chroot .
gpg -K

в результате видим примерно следующее:

/root/.gnupg/pubring.kbx
------------------------
sec   rsa3072/6BFF2816 2021-05-07 [expires: 2023-05-07]
uid       [ultimate] Aleksey Voronin <mail@domain.ru>
ssb   rsa3072/15BC6096 2021-05-07 [expires: 2023-05-07]

все получилось, выходим из chroot

exit

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

отслеживаем подключения по vpn на pfsense

Пандемия 2020 дала свои плоды: удаленная работа, массовое использование VPN. Конечно, любое руководство захочет контролировать удаленное подключение/отключение сотрудников. У себя в компании мы интегрировали VPN в пропускную систему создав виртуальный контроллер. Теперь отдел кадров видит кто посещал рабочее место зайдя в офис или подключался удаленно. Полностью расписывать весь механизм я не стану, лишь опубликую как можно организовать получение событий со шлюза на pfsense.

Для начала создаём сервер на ubuntu, например, виртуальный. Требования минимальны: 1 CPU, 256Мб памяти, 10Гб диск. Я щедро выделил 1Гб памяти и 100 Гб диска, вот что реально потребляет система:

Качаем минимальный дистрибутив в 74Мб http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso

устанавливаем syslog-ng

sudo apt update
sudo apt install syslog-ng

создаем конфиг /etc/syslog-ng/conf.d/external_log.conf

source s_udp {
    udp(port(514));
};
destination d_PFSENSE_VPN {
     program("/usr/bin/php /home/user/pfsense_vpn.php" );
};
filter f_PFSENSE_VPN {
    host("192.168.#.#");
    match(",l2tp," value ("MESSAGE"));
};
log {
    source(s_udp);
    filter(f_PFSENSE_VPN);
    destination(d_PFSENSE_VPN);
};
destination d_PFSENSE_OPENVPN {
     program("/usr/bin/php /home/user/pfsense_vpn.php" );
};
filter f_PFSENSE_OPENVPN {
    host("192.168.#.#");
    program("openvpn");
};
log {
    source(s_udp);
    filter(f_PFSENSE_OPENVPN);
    destination(d_PFSENSE_OPENVPN);
};

где 192.168.#.# — ip-адрес pfsense

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

в моём примере, мы создаем два фильтра f_PFSENSE_VPN и f_PFSENSE_OPENVPN для того чтобы скриптом обрабатывать только события связанные с подключением и отключением по протоколам l2tp и OpenVPN (актуально для формата логов pfsense версии 2.5.1

есть два destination, но по сути они ссылаются на один и тот же скрипт d_PFSENSE_VPN и d_PFSENSE_OPENVPN

со стороны pfsense настраиваем пересылку логов на наш сервер

Status -> System Logs -> Settings

указываем ip-адрес и порт нашего сервера и ставим галочку «VPN Events (IPsec, OpenVPN, L2TP, PPPoE Server)», т. к. нам нужны только события удаленных подключений

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

Jun 25 18:29:57 192.168.#.# openvpn: user ’user_name’ authenticated

отключение

Jun 25 18:57:34 192.168.#.# openvpn[16766]: user_name/132.252.198.166:6182 Connection reset, restarting [-1]

С l2tp еще проще:
подключение

Jun 25 18:29:57 192.168.#.# root: login,l2tp,192.168.111.#,user_name

отключение

Jun 25 18:57:34 192.168.#.# root: logout,l2tp,192.168.111.#,user_name

можно ли в synology создать один раздел на 2 устройства?

Собственно вопрос в заголовке, я понимаю, сейчас есть носители очень большой ёмкости и из них можно создать RAID тома запредельного размера, но все же. Мне было интересно возможно ли диски самого сервера и модуля расширения объединить в один том, на котором создать один раздел? ответ — можно.

Дальше делюсь опытом:
есть сервер RS4017xs+ и блок расширения RX1217rp, забитые под завязку дисками по 8Тб (7,3ТиБ);

на основном сервере существует пул хранения RAID5 из 15 дисков, 16 используется как Hot Spare, и том, растянутый на весь пул, радел с данными, как видно из скринов:

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

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

на изображении я уже добавил дисков и идет процесс расширения

процесс совсем не быстрый, занял около четырех дней

но оно стоило того, теперь доступный объем пула стал 167ТБ
и осталось растянуть том до максимального размера, а это заняло пару минут

Плюсы:

  • данные не пострадали
  • мы перешли границу одного сервера и создали единое пространство хранения
  • это можно сделать на «живой» машине

Минусы:

  • RAID5 может включать в себя максимум 24 диска
  • скорость работы тома ниже из-за ограничений соединения сервера и модуля расширения, но не менее 700 Мб/с, мы использовали для backup сервера, где скорость записи не критична, зато важен объем

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

отправка e-mail из командной строки

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

#!/bin/bash

# получаем прошлый месяц и год, название месяца на русском
past_month=$(LC_ALL=ru_RU.UTF-8 date -d "-1 month" +%B\ %Y)

# Отправляем письмо одной строкой через сервис яндекс
curl --url 'smtps://smtp.yandex.ru:465' --ssl-reqd --mail-from 'from@yandex.ru' --mail-rcpt 'to@gmail.com' --user 'from@yandex.ru:password' -T <(echo -e "From: encoded_sender_name <from@yandex.ru>\nTo: encoded_recipient_name <to@gmail.com>\nSubject: encoded_subject\n\nНапоминиание об оплате за $past_month!")

как работает:
в переменную $past_month получаем предыдущий месяц прописью и год, для этого включаем русскую локаль

следом отправляем письмо, авторизовавшись на сервере SMTP, используем подключение ssl, чтобы безопасно =) и построчно скармливаем команды серверу

encoded_sender_name, encoded_recipient_name и encoded_subject кодируйте, если используете не латинские символы https://en.wikipedia.org/wiki/MIME#Encoded-Word

 Нет комментариев    155   2 мес   bash   curl   SMTP
Ранее Ctrl + ↓