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
Для работы сервиса нужно 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
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"
Содержимое 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
25.06.2020
1с 7.7 on MacOS through CrossOver
01.06.2020
KVM Console IPMIView macOS Catalina app
Статья в базе знаний облачного провайдера: 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!)
--- 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="">039201d2e971>
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)
Для решения поставленной задачи компания 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
#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
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
}
