21.07.2023

Из далекого 2010

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

Настройка BIND9 для работы с LEGO по RFC2136 TSIG для TEGU

Давеча решил скрестить lego и bind9. Чтобы все это дело хорошо работало с Tegu.

Что имеем:

Ubuntu 23.04

BIND 9.18.12

lego 4.9.1-1

Создание TSIG.


tsig-keygen supa-dupa-plex-mega-key-name

Вывод:

key "supa-dupa-plex-mega-key-name" {

algorithm hmac-sha256;

secret "Bt8ScaBQzs2Kn0U4qkVNGWiZg6/fxMYqkgNf7IWUpf8=";

};

Добавляем в /etc/bind/named.conf:

// TSIG for LEGO

key "supa-dupa-plex-mega-key-name" {

    algorithm hmac-sha256;

    secret "Bt8ScaBQzs2Kn0U4qkVNGWiZg6/fxMYqkgNf7IWUpf8=";

};

// Разрешаем подключения только на 953 порт и только с 127.0.0.1(localhost) с ключом.

controls {

inet 127.0.0.1 port 953

allow { 127.0.0.1; } keys { "supa-dupa-plex-mega-key-name"; };

};

Разрешаем нашему ключу supa-dupa-plex-mega-key-name обновлять данные в нашей зоне, вот вся зона в /etc/bind/named.conf.local:

zone "example.com" {

    type master;

    file "db.example.com";

    update-policy {

        grant supa-dupa-plex-mega-key-name name _acme-challenge.mx.example.com. TXT;

    };

};

Настройка LEGO.

Устанавливаем:

apt-get install lego

Создаем сервис systemd:

Для работы сервиса нужно 2 файла:
/etc/systemd/system/lego-mx.example.com.service
/etc/systemd/system/lego-mx.example.com.timer

Первый - сам сервис, второй - таймер который его запускает.

Для удобства внутри файла сервиса есть несколько вариантов:

Запрос сертификата с stage сервера:

#ExecStart=lego --server="https://acme-staging-v02.api.letsencrypt.org/directory" --accept-tos --email="user@example.com" --key-type="rsa4096" --domains="mx.example.com" --dns="rfc2136" run

Запрос сертификата с боевого сервера:

#ExecStart=lego --accept-tos --email="user@example.com" --key-type="rsa4096" --domains="mx.example.com" --dns="rfc2136" run

Запрос перевыпуска существующего сертификата с боевого сервера:

#ExecStart=lego --accept-tos --email="user@example.com" --domains="mx.example.com" --dns="rfc2136" renew

Выбрать нужно что-то одно и раскомментировать.

Полученные сертификаты сохранятся по пути WorkingDirectory=/opt/lego а лежать будут в /opt/lego/.lego/certificates/

Мы копируем их в каталог сертификатов Tegu - /opt/tegu/certs/ автоматически в рамках сервиса:

ExecStartPost=cp /opt/lego/.lego/certificates/mx.example.com.crt /opt/tegu/certs/

ExecStartPost=cp /opt/lego/.lego/certificates/mx.example.com.key /opt/tegu/certs/

И назначим им права доступа, также в рамках сервиса:

ExecStartPost=chown mail:mail /opt/tegu/certs/mx.example.com.crt

ExecStartPost=chown mail:mail /opt/tegu/certs/mx.example.com.key


Переменные окружения и связка с BIND

Имя ключа TSIG, алгоритм шифрования и сам секрет указываем в переменных:

Environment="RFC2136_TSIG_KEY=supa-dupa-plex-mega-key-name"

Environment="RFC2136_TSIG_ALGORITHM=hmac-sha256"

Environment="RFC2136_TSIG_SECRET=Bt8ScaBQzs2Kn0U4qkVNGWiZg6/fxMYqkgNf7IWUpf8="

Также рекомендую указать следующие значения для более стабильного получения сертификата.

Environment="RFC2136_PROPAGATION_TIMEOUT=3600"

Environment="RFC2136_POLLING_INTERVAL=300"

Environment="RFC2136_SEQUENCE_INTERVAL=600"

Environment="RFC2136_NAMESERVER=127.0.0.1"


Содержимое lego-mx.example.com.service:

[Unit]

Description=Lego mx.example.com


[Service]

Type=oneshot

WorkingDirectory=/opt/lego

# Uncomment if need request certs STAGE SERVER

#ExecStart=lego --server="https://acme-staging-v02.api.letsencrypt.org/directory" --accept-tos --email="user@example.com" --key-type="rsa4096" --domains="mx.example.com" --dns="rfc2136" run

# Uncomment if need request certs

#ExecStart=lego --accept-tos --email="user@example.com" --key-type="rsa4096" --domains="mx.example.com" --dns="rfc2136" run

# Uncomment if need renew certs

#ExecStart=lego --accept-tos --email="user@example.com" --domains="mx.example.com" --dns="rfc2136" renew

ExecStartPost=cp /opt/lego/.lego/certificates/mx.example.com.crt /opt/tegu/certs/

ExecStartPost=cp /opt/lego/.lego/certificates/mx.example.com.key /opt/tegu/certs/

ExecStartPost=chown mail:mail /opt/tegu/certs/mx.example.com.crt

ExecStartPost=chown mail:mail /opt/tegu/certs/mx.example.com.key

PrivateTmp=true

Environment="RFC2136_NAMESERVER=127.0.0.1"

Environment="RFC2136_TSIG_KEY=supa-dupa-plex-mega-key-name"

Environment="RFC2136_TSIG_ALGORITHM=hmac-sha256"

Environment="RFC2136_TSIG_SECRET=Bt8ScaBQzs2Kn0U4qkVNGWiZg6/fxMYqkgNf7IWUpf8="

Environment="RFC2136_PROPAGATION_TIMEOUT=3600"

Environment="RFC2136_POLLING_INTERVAL=300"

Environment="RFC2136_SEQUENCE_INTERVAL=600"


[Install]

WantedBy=multi-user.target

Содержимое lego-mx.example.com.timer:

[Unit]

Description=Run LEGO

Requires=lego-mx.example.com.service


[Timer]

OnCalendar=weekly

Persistent=true


[Install]

WantedBy=timers.target


Запускаем:

systemctl enable lego-mx.example.com.timer

systemctl enable lego-mx.example.com.service

systemctl start lego-mx.example.com.timer

07.08.2022

Добавление камеры Ezviz в Synology Surveillance Station DSM 7 RTSP

Версия DSM 7.1-42661 Update 1

Версия SS 9.0.1-7673

Версия Device pack 6.0.1-4402

Досталась мне камера CS-CV310-A01-B2WFR, решил я подключить ее к Surveillance Station на своем Xpenology. Но, так как никогда не работал с этими камерами, не знал с какой стороны подойти к этой камере, где веб интерфейс, какой логин, пароль и прочее.

Инструкцию переписывать не буду оставлю ссылку, спасибо ребятам.

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

Камера в SS добавилась, и при наведении мышкой на камеру превью картинка с нее появляется, но видео не показывается, архив пишется но пустой. Проблему решил установкой значения "Потоковой передачи" вместо "RTSP" параметра "Источник информации о потоковой передачи"в разделе "Настройка RTSP и RTP" раздела "Дополнительно" в настройках камеры. И все заработало.

На всякий оставлю тут мою строку подключения: rtsp://admin:password@192.168.252.8:554/Streaming/Channels/1


22.11.2021

Настройка сканирования в сетевую папку на Canon iR2022i

Приложение Color Network ScanGear версии 2.71 не захотело устанавливать драйвер сканера на винду 10 x64. А более ранняя версия драйвер установила но, не хотела искать принтер в сети, даже если носом тыкнуть. Поэтому начал настраивать сканирование в шару. Итог - инструкция у Canon оставляет желать лучшего, после перебора вариантов указания шары в настройках адресной книге был найден рабочий вариант:



Name: SomeName

Button Name: SomeBtnName

Protocol: SMB

Host Name: \\192.168.1.1\scan

File Path: НЕ ЗАПОЛНЯЕМ!

User Name: ShareUser

User Password: P@ssw0rd

23.08.2021

ssh-agent не сохраняет ключи добавленные через ssh-add при закрытии терминала в macOS

Если возникает вот такая ситуация:
В терминале добавляем ключ ssh-add ./ololo.key, ключ успешно добавлен о чем нам сообщает ssh-add -l. Затем закрываем терминал, открываем его снова, ssh-add -l говорит что ключей нет.

Заставляем ssh-agent хранить данные между сессиями терминала (и не только):
В файл ~/.ssh/config добавляем следующее:
Host *
    UseKeychain yes
    AddKeysToAgent yes

Сохраняем. Пробуем.

25.06.2020

1с 7.7 on MacOS through CrossOver

Появилась потребность в запуске 1с 7.7 на macos. Ставить виртуальную машину и работать в ней меня обломало, поэтому решил запустить с помощью CrossOver.

Небольшая, простейшая инструкция:
1) Создаем бутылку;
2) Выбираем установщик 1с 7.7;
3) Указываем тип бытулки Windows XP;
4) Устанавливаем дополнительно Microsoft Visual C++ 6.0 Redistributable;
5) Устанавливаем, все работает.

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

В работе использовались следующие версии ПО:
1С 7.7 релиз 7.70.027
CrossOver 19.0 релиз 19.0.0.32192 

01.06.2020

KVM Console IPMIView macOS Catalina app

Столкнулся с такой проблемой - не запускается KVM Console в IPMIView под macOS Catalina, пишет что-то вроде Cannot run program "./jre/Contents/Home/bin/java". Что-то в Java не нравится а потом и самой Java не нравится. Пытался починить дня 2, в итоге забил. Через некоторое время мне опять потребовалось KVM и я решил основательно засесть в компании Google. В итоге нашел статью в базе знаний одного облачного провайдера, ничего необычного - просто инструкция для своих пользователей как подключаться к ресурсам провайдера с помощью IPMI. Я бы и мимо прошел прочитав статью по диагонали, но взгляд зацепился за фразу "Note that this download was produced by Steadfast and is not supported by Supermicro.", и я решил попробовать любезно предложенный дистрибутив. Скачал, запустил, и о чудо - KVM Console в IPMIView работает!

Статья в базе знаний облачного провайдера: https://support.steadfast.net/Knowledgebase/Article/View/112

А раз это чудо инженерной мысли двух компаний работает - нужно засунуть его в красивую оболочку, чтобы под стать macOS было. Для этих целей существует wrapper https://github.com/TheCase/IPMIView.app

Который из стандартного пакета IPMIView под линукс делает .app для мака.

Согласно инструкции по wrapper нам нужен сам дистрибутив IPMIView в формате IPMIView*.tar.gz. Который мы можем скачать с зеркала http://mirror.steadfast.net/misc/IPMIView/MacOS/, на момент написания данной заметки файл был IPMIView_V2.11.0_bundleJRE_MacOS_x64_20151223.tar.gz от 14 марта 2016 года.

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

Для себя а также для истории, выложил у себя приложение и исходник.
Мой .app: https://mega.nz/file/gg5lCbAI#94PfmV9fD9YVyR7A2XXboQVeQUey66IZXY3GbFLv7ws
IPMIView_V2.11.0_bundleJRE_MacOS_x64_20151223.tar.gz:
https://mega.nz/file/lkhjiJaS#Kcfg89dCKkeNiR8o3_zmZC12AMuTXEl0xCtTkVG4N8Q

Надеюсь, это будет полезно не только мне.

20.06.2017

MDaemon, STARTTLS, Socket connection closed by the other side (how rude!)

Вот такая штука началась после борьбы со спамом включения STARTTLS в MDaemon:
--- Session Transcript ---
 Tue 2017-06-20 12:06:02: Parsing message
 Tue 2017-06-20 12:06:02: *  From: user@domain.com  Tue 2017-06-20 12:06:02: *  To: user@rambler.ru  Tue 2017-06-20 12:06:02: *  Subject: RE: RE: test  Tue 2017-06-20 12:06:02: *  Size (bytes): 7602  Tue 2017-06-20 12:06:02: *  Message-ID: <039201d2e971 c9ada1c0="" domain.com="" ede48b40="">
 Tue 2017-06-20 12:06:02: Attempting SMTP connection to [rambler.ru]  Tue 2017-06-20 12:06:02: Resolving MX records for [rambler.ru] (DNS Server: 8.8.8.8)...
 Tue 2017-06-20 12:06:02: *  P=005 S=000 D=rambler.ru TTL=(7) MX=[inmx.rambler.ru]  Tue 2017-06-20 12:06:02: *  P=010 S=001 D=rambler.ru TTL=(7) MX=[inmx.rambler.ru]  Tue 2017-06-20 12:06:02: Attempting SMTP connection to [inmx.rambler.ru:25]  Tue 2017-06-20 12:06:02: Resolving A record for [inmx.rambler.ru] (DNS Server: 8.8.8.8)...
 Tue 2017-06-20 12:06:02: *  D=inmx.rambler.ru TTL=(1273) A=[81.19.78.65]  Tue 2017-06-20 12:06:02: Attempting SMTP connection to [81.19.78.65:25]  Tue 2017-06-20 12:06:02: Waiting for socket connection...
 Tue 2017-06-20 12:06:02: *  Connection established (127.0.0.1:3259 -> 81.19.78.65:25)  Tue 2017-06-20 12:06:02: Waiting for protocol to start...
 Tue 2017-06-20 12:06:22: <-- --="" 12:06:22:="" 2017-06-20="" 220="" nbsp="" ok="" resmtp1.mail.rambler.ru="" ue=""> EHLO domain.com  Tue 2017-06-20 12:06:42: <-- --="" 12:06:42:="" 2017-06-20="" 250-8bitmime="" 250-pipelining="" 250-resmtp1.mail.rambler.ru="" 250-size="" 250-starttls="" 250="" 31457280="" enhancedstatuscodes="" nbsp="" ue=""> STARTTLS  Tue 2017-06-20 12:06:42: <-- 12:06:42:="" 2017-06-20="" 220="" 8.8.8.8="" a="" ahead="" attempting="" by="" closed="" connection="" for="" go="" how="" inmx.rambler.ru:25="" inmx.rambler.ru="" nbsp="" other="" p="" record="" resolving="" rude="" server:="" side="" smtp="" socket="" the="" to="" ue=""> Tue 2017-06-20 12:06:42: *  D=inmx.rambler.ru TTL=(1273) A=[81.19.78.65]  Tue 2017-06-20 12:06:42: Attempting SMTP connection to [81.19.78.65:25]  Tue 2017-06-20 12:06:42: Waiting for socket connection...
 Tue 2017-06-20 12:06:42: *  Connection established (127.0.0.1:3260 -> 81.19.78.65:25)  Tue 2017-06-20 12:06:42: Waiting for protocol to start...
 Tue 2017-06-20 12:07:03: <-- --="" 12:07:03:="" 2017-06-20="" 220="" nbsp="" ok="" resmtp2.mail.rambler.ru="" ue=""> EHLO domain.com  Tue 2017-06-20 12:07:23: Возраст этого сообщения равен 0 дням; для его доставки осталось 2 дней
--- End Transcript ---

Решение проблемы простое - нужно добавить хост inmx.rambler.ru в белый список STARTTLS тем самым подключение к этим доменам будет проходить без использования технологии STARTTLS.

В MDaemon - Безопасность -> Параметры безопасности -> SSL & TLS -> Белый список.
Регулярные выражения у меня не заработали, поэтому варианты *.rambler.ru и прочие не рекомендую, хотя, проверьте вдруг у Вас заработает. Мне же пришлось добавить хост целиком.

19.06.2017

Convert vmdk to vhdx (VMware to Hyper-V)

Возникла потребность произвести конвертацию vmdk файла жёсткого диска виртуальной машины в vhdx с дальнейшем подключением к гипервизору Hyper-V.

Для решения поставленной задачи компания Microsoft разработала утилиту Microsoft Virtual Machine Converter скачать можно на официальном сайте.

В пакете идёт утилита и довольно подробное руководство об её использовании.

В моём же случае после установки утилиты потребовалось всего две команды в PowerShell:

Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "D:\TEMP\disk1.vmdk" -DestinationLiteralPath "D:\TEMP\"

Нужно прикрутить подсветку синтаксиса, а то порнография какая-то получается.

Deploy .NET Framework 3.5 (include 2.0 and 3.0) dism

Постоянно забываю эту строку:
C:\> dism /online /enable-feature /featurename:netfx3 /all /limitaccess /source:d:\sources\sxs

17.06.2017

Mac os fix key exchange method with their offer: diffie-hellman-group1-sha1

Вот такая картина при подключении с mac os к cisco 877W по ssh:
#ssh user@10.0.0.1
Unable to negotiate with 10.0.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
#

Лечение:
Для запуска без внесения изменений:
#ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 user@10.0.0.1

Запуск с внесением изменений:
#sudo vi /private/etc/ssh/ssh_config
1) Раскомментируем строку:
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
2) В конец файла добавляем две строки:
HostkeyAlgorithms ssh-dss,ssh-rsa
exAlgorithms +diffie-hellman-group1-sha1

Пробуем: #ssh user@10.0.0.1

04.08.2011

PKGBUILD для RuLex

# Maintainer: Istokin
pkgname=RuLex
pkgver=1.1_18.01.2006
pkgrel=1
pkgdesc="RuLex -Russian pronunciation dictionary for ru_tts."
url="ftp://ftp.rakurs.spb.ru/pub/Goga/projects/speech-interface/rulex/"
depends=('ru_tts')
license=('custom')
arch=('x86_64' 'i686')
makedepends=('bash')
source=("ftp://ftp.rakurs.spb.ru/pub/Goga/projects/speech-interface/rulex/rulex-1.1.tar.gz")
md5sums=('81824ba5556302cd9d234465dfbdf218')

build() {
cd $startdir/src/rulex-1.1
make prefix=$startdir/pkg/usr install
}