суббота, 18 октября 2025 г.

Обновление записей в DNS (Windows) c Linux-хостов в домене

Такая ситуация: Linux-хост введен в домен AD, но при смене ip-адреса на хосте, A запись не обновляется автоматически.

Скрипт dns_update.sh который обновляет A, AAA, PTR записи:

#!/bin/bash
# Prepare with some variables
#
# Change to your DNS admin file location
dns_admin_file="/path/to/pass"
dns_admin=`cat $dns_admin_file | awk 'NR==1 {print; exit}'`
dns_admin_pw=`cat $dns_admin_file | awk 'NR==2 {print; exit}'`
# ipv4 may need some adjustment in case of multiple eth interfaces
# In default case we assume that you have only one eth interface
ipv4=`/bin/ip -o -4 addr list | grep -v 127.0.0.1 | awk '{print $4}' | cut -d/ -f1`
rev_ipv4=`echo $ipv4 | awk -F. '{print $4"."$3"." $2"."$1}'`.in-addr.arpa.
fqdn=`hostname --fqdn`
# Get old ipv4 for future deletion
old_ipv4=`dig $fqdn |grep 'ANSWER SECTION' -A1 | grep 'IN' | awk '{print $5}'`
rev_old_ipv4=`echo $old_ipv4 | awk -F. '{print $4"."$3"." $2"."$1}'`.in-addr.arpa.
domain=`echo $fqdn | sed 's/^[^.]*.//g'`
dom_up_case=`echo $domain | tr [:lower:] [:upper:]`
kdc=`cat /etc/krb5.conf | grep 'admin_server =' | awk '{print $3}' | tr [:upper:] [:lower:]`
# Change the ttl to your liking
ttl=3600
# Change file location to your liking
keytab_file="/etc/krb5.keytab"
# Check if DNS update is needed
if [[ "$ipv4" != "$old_ipv4" ]]; then
# Create/update keytab file
ktutil <<EOF
addent -password -p $dns_admin@$dom_up_case -k 1 -e rc4-hmac
$dns_admin_pw
write_kt $keytab_file
quit
EOF
# Get ticket for DNS admin
kinit -k $dns_admin
# Create file for forward zone update
/bin/echo "gsstsig
server $kdc
zone $domain
update delete $fqdn a
update add $fqdn $ttl a $ipv4
send
" > /tmp/ad_dns_fw
# Create file for reverse zone update
/bin/echo "gsstsig
server $kdc
update delete $rev_old_ipv4 PTR
update add $rev_ipv4 $ttl PTR $fqdn.
send
" > /tmp/ad_dns_rev
# Run reverse zone update first
/usr/bin/nsupdate /tmp/ad_dns_rev
# And then run forward zone update
/usr/bin/nsupdate /tmp/ad_dns_fw
fi

Файл /path/to/pass, (см. dns_admin_file="/path/to/pass"), содержащий логин и пароль учетки в AD, которая может удалять/добавлять, читать/записывать в нужной зоне, или (это небезопасно) учетка входящая в группу DNSAdmins в Active Directory.
Содержимое /path/to/pass:


dns_adm1
3215178

Права на чтение только для владельца:
chmod 400 /path/to/pass

Можно добавить скрипт длы выполнения в cron, но лучше обернуть его в systemd юнит.
Создадим файл /etc/systemd/system/ad_dns_update.service, и добавим в него следующее содержание:

[Unit]
Description=AD DNS entries updater
Wants=network-online.target
After=network.target network-online.target
[Service]
ExecStart=/path/to/dns_update.sh
[Install]
WantedBy=multi-user.target

После этого:
systemctl daemon-reload && systemctl enable ad_dns_update.service




среда, 27 марта 2024 г.

Перенос почты в Iredmail.

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

НА СЕРВЕРЕ ПОЧТЫ

1. cd iRedMail-1.6.8/tools

2. Создать одну запись в файл. password обязательно в одинарных кавычках 

bash create_mail_user_SQL.sh admin@domain.ru 'password' > /tmp/users.sql 

3. Чтобы дополнить файл /tmp/users.sql формируем и запускаем скрипт.

#!/bin/sh

bash create_mail_user_SQL.sh    user@domain.ru        'password'     >> /tmp/users.sql;
bash create_mail_user_SQL.sh    user1@domain.ru       'password'     >> /tmp/users.sql;
bash create_mail_user_SQL.sh    user2@domain.ru       'password'     >> /tmp/users.sql; 


4. mysql -uroot -p

sql> USE vmail;

sql> SOURCE /tmp/users.sql; 

создадутся учетки. можно проверить в СУБД и в web почты. Теперь можно переносить почту.


НА МАШИНЕ С Imapsync (промежуточная машина для переноса почты).


1. Формируем файл вида:

172.16.20.49;user@domain.ru;password;172.16.20.5;ert@domain.ru;password;
172.16.20.49;user1@domain.ru;password;172.16.20.5;wem@domain.ru;password;
172.16.20.49;user2@domain.ru;password;172.16.20.5;qan@domain.ru;passwords; 

Важно! Следим что нет пробелов, что все разделено точка с запятой ;
host1;user1_1;password11_1;host2;user2_1;password2_1;   #описание


2. редактируем perenos.sh users.txt - файл сформированный пунком выше его имя users.txt

#!/bin/sh
{ while IFS=';' read h1 u1 p1 h2 u2 p2 fake
do
imapsync --host1 "$h1" --user1 "$u1" --password1 "$p1" \
--host2 "$h2" --user2 "$u2" --password2 "$p2" "$@"
done
} < users.txt

3. Запускаем perenos.sh. imapsync и perenos.sh должны быть в одном каталоге.

https://docs.iredmail.org/sql.create.mail.user.html

пятница, 8 декабря 2023 г.

KVM джентельменский набор команд

 Создание ОС Windows 10:

virt-install -n Win10-test -r 4096 --vcpus=4 \

--arch=x86_64 \

--disk pool=images,size=110,bus=virtio,format=qcow2 \

--disk /kvm/iso/Windows_10_sborka-Luca.iso,device=cdrom \

--disk /kvm/iso/virtio-win-0.1.229.iso,device=cdrom \

--network bridge:br0,model=virtio \

--os-variant=win10 \

--graphics vnc,listen=0.0.0.0,port=5901,password=@dmLuCa \

--boot cdrom,hd,menu=on


Создание ОС Debian:

virt-install \

--name debian_test \

--ram=4096 \

--vcpus=2 \

--arch=x86_64 \

--os-variant=debian11 \

--disk pool=images,size=30,bus=virtio,format=qcow2 \

--disk /kvm/iso/debian-11.0.0-amd64-netinst.iso,device=cdrom \

--network bridge=br0,model=virtio \

--graphics vnc,listen=0.0.0.0,password=@dmLuCa \

--boot cdrom,hd,menu=on 


Создание ОС Ubuntu:

virt-install \

--name timetable \

--ram=8192 \

--vcpus=4 \

--arch=x86_64 \

--os-variant=ubuntu22.04 \

--disk pool=images,size=50,bus=virtio,format=qcow2 \

--disk /kvm/iso/ubuntu-22.04.2-live-server-amd64.iso,device=cdrom \

--network bridge=br0,model=virtio \

--graphics vnc,listen=0.0.0.0,port=5907,password=@dmLuCa \

--boot cdrom,hd,menu=on 


Создание ОС Astra:

virt-install \

--name 1C-BD \

--ram=16384 \

--vcpus=8 \

--arch=x86_64 \

--os-variant=alse17 \

--disk pool=images,size=300,bus=virtio,format=qcow2 \

--disk /kvm/iso/1.7.4-24.04.2023_14.23.iso,device=cdrom \

--network bridge=br0,model=virtio \

--graphics vnc,listen=0.0.0.0,port=5903,password=@dmLuCa \

--boot cdrom,hd,menu=on 


Создание RouterOS:

virt-install \

--name Routeros \

--ram=256 \

--vcpus=1 \

--arch=x86_64 \

--os-variant=debian2.0 \

--graphics vnc,listen=0.0.0.0,port=5905,password=@dmLuCa \

--boot hd \

--disk path=/kvm/images/chr-7.10.2.img \

--network bridge=br2 


Создание Centos:

virt-install \

--name luka-mis \

--ram=48000 \

--vcpus=22 \

--arch=x86_64 \

--os-variant=centos7.0 \

--disk pool=storage_lsi,size=800,bus=virtio,format=qcow2 \

--disk /kvm/iso/CentOS-7-x86_64-Minimal-2009.iso,device=cdrom \

--network bridge=br0,model=virtio \

--graphics vnc,listen=0.0.0.0,port=5906,password=@dmLuCa \

--boot cdrom,hd,menu=on 


Для запуска ОС с использованием UEFI (пример):

<os>

    <type arch='x86_64' machine='pc-q35-7.2'>hvm</type>

    <loader readonly='yes' type='rom'>/usr/share/ovmf/OVMF.fd</loader>

    <boot dev='hd'/>

</os>


конфиг ВМ:

/etc/libvirt/qemu/...


версии ОС:

osinfo-query os


удаление ОС:

virsh list

virsh destroy win10_test2

virsh undefine win10_test2

rm -r /path/to/image


редактировать параметры ВМ в xml:

virsh edit 1C-App


выключить загрузку с boot cd:

<!-- <boot dev='cdrom'/> -->

<!-- <bootmenu enable='yes'/> -->


увеличить объем жесткого диска:

1.остановить ВМ

2.qemu-img resize /kvm/images/Win10-test.qcow2 +5G


увеличить объем ОЗУ, CPU:

virsh edit Win10-test

<topology sockets='1' cores='4' threads='2'/>

</cpu> 

 

Снепшот сделать:

virsh snapshot-create-as --domain Win10-test --name "7.6.23"


Список снепшотов:

virsh snapshot-list --domain Win10-test


Удалить снепшот:

virsh snapshot-delete <vm_name> <snapshot_name>


Возврат к снепшоту:

virsh snapshot-revert --domain Win10-test --snapshotname 7.6.23_2 --running 

virsh snapshot-revert --domain Win10-test --snapshotname 7.6.23_2 --shutoff 


Информация о машине:

virsh dominfo debian_test


Пометить ВМ для автостарта:

virsh autostart Win10-test


Отменить автостарт ВМ:

virsh autostart Win10-test --disable


Приостановить ВМ:

virsh suspend vm_name


Возобновление ВМ:

virsh resume vm_name


добавить сетевой интерфейс:

virsh attach-interface 1C-App --type bridge --source br3 --persistent 


ПРОВЕРКА SMART дисков:

1 cd /opt/MegaRAID/MegaCli

2 ./MegaCli64 -LdPdInfo -aALL | grep Id

3 smartctl -d megaraid,8 -a /dev/sda

  smartctl -d megaraid,4 -a /dev/sda

  smartctl -d megaraid,5 -a /dev/sda  #etc

вывод Device ID дисков:

./MegaCli64 -PDList -aAll | grep Id:

  

Перенос виртуалки с ESXi:

1. scp -r root@172.31.4.204:/vmfs/volumes/5e53a708/migration_test/ /migration

2. qemu-img convert -p -O qcow2  ./migration_test-flat.vmdk  ./migration_test-flat.qcow2

3. создать виртуальную машину с дисками, подменить диски

________________________________________________________

Создать диск:

qemu-img create -f qcow2 /kvm/images/for_tib_with_astra.qcow2 20G


Подключить диск:

virsh attach-disk astra-1.7.3-test --source /kvm/images/for_tib_with_astra.qcow2 --target vdb --persistent --subdriver qcow2


Вывести список поключенных к ВМ дисков:

virsh domblklist astra-1.7.3-test


Отключить диск:

virsh detach-disk --domain luka-mis --target vdb

___________________________________________________________

создание пулов дисков.

смотрим все пулы:

virsh pool-list --all


создаем новый пул:

virsh pool-define-as storage dir --target /kvm_ssd_lsi/images_lsi/


помечаем пул для автостарта:

virsh pool-autostart storage_lsi


Стартуем пул

virsh pool-start storage_lsi


проверяем пул

virsh pool-list –all

--------------------------------------------------------------------------

удаление дисковых пулов

virsh pool-destroy storage_lsi

virsh pool-delete storage_lsi

virsh pool-undefine storage_lsi

смотрим:

virsh pool-list --all

________________________________________________________________________________________


конвертация qcow2 в raw:

выключить машину

сконвертировать диск командой:

qemu-img convert /kvm/images/luka-mis-backups.qcow2 /kvm/images/luka-mis-backups.raw

изменить пути в xml-файле,

включить машину





пятница, 4 августа 2023 г.

Добавить новый iscsi target не перезагружая tgt сервис.

Формируем нужный конфиг (new_target.conf), типа:

<target iqn.2023-01.corp.firma:storage-fs-target>

   backing-store /dev/vg01/lv03

   initiator-address 10.10.12.1

</target>

И подгружаем его командой:

tgt-admin --update ALL -c /etc/tgt/conf.d/new_target.conf

суббота, 26 марта 2022 г.

Запуск Docker внутри LXC контейнера (Debian, Ubuntu).

 1. В конфиге контейнера /var/lib/lxc/name_container/config в низ файла добавляем строки:

lxc.apparmor.profile = unconfined

lxc.cgroup.devices.allow = a

lxc.cap.drop =

2. Подгружаем модули ядра:

modprobe aufs

modprobe overlay

Вносим записи в файл: 

/etc/modules-load.d/modules.conf

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

aufs

overlay

3. Внутри контейнера с установленным Docker создаем файл:

/etc/docker/daemon.json

в который добввляем:

{

  "storage-driver": "overlay2"

}

4.Проверяем работу Docker:

docker run hello-world


вторник, 15 марта 2022 г.

Конвертация vhdx (Hyper-V) в vmdk(ESXi), и не только.

Например для использование в windows. Нужперейти в папку с распакованной программой:

cd C:\users\user\Downloads\qemu-img-win-x64-2_3_0 qemu-img.exe convert -p D:\old_disk.VHDX -O vmdk D:\new_disk.vmdk

где опции -p – показывать прогресс, -O – выходной файл

Скачать можно здесь.

четверг, 17 февраля 2022 г.

Добавление объема в LUN (LVM) отдаваемого в iSCSI target и добавление полученного места в Esxi Storage.

 1. lvextend -L+1Tb /dev/vg01/lv02
Увеличиваем место на один терабайт для нужной области.


2. systemctl restart tgt
Рестартуем iSCSI таргет


3. esxcli storage core adapter rescan --all
Подключаемся по SSH к ESXI, выполняем команду.


4. Затем в web Esxi Storage, выбираем нужный storage делаем rescan, затем Action -> Increase capacity -> Expand an existing VMFS datastore extent ->Выбираем наш IET iSCSI Disk и расширяем место, далее все интуитивно понятно.


Все это можно делать "на лету", не отмонтируя storage, не выключая виртуалки расположенные на нем расположенныe.


И еще: глупо в конфигах и конфигурациях писать емкость storage, как у меня напр. - storage-10Tb.conf, я уже не стал менять названия и содержание файлов во избежание возможных сюрпризов. Короче - емкость storage нужно смотреть по факту, в Esxi в Datastores -Capacity, и в lvdisplay.