Цель: Заменить уже работающий на сервере с Fedora 43 bind 9.18.44 на bind9-next 9.21.17 и использовать доступ к внешним DNS посредством TLS.
ВНИМАНИЕ! После удаления «старого» bind перестанут резольвиться узлы в интернете и установка bind9-next станет невозможна, поэтому варианты: 1. Сначала установить bind9-next, а потом уже удалять bind (не проверялось); 2. Временно прописать в /etc/resolv.conf внешние DNS (провайдера или общедоступные).
Удаление bind:
dnf remove bind-libs bind bind-utils bind-dnssec-utils
Установка bind9-next:
dnf in bind9-next-libs bind9-next-utils bind9-next-dnssec-utils bind9-next
Файлы конфигураций
# cat /etc/named.conf
tls comms-tls { remote-hostname "dns.comss.one"; };
tls yandex-tls { remote-hostname "common.dot.dns.yandex.net"; };
options {
listen-on { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost; 192.168.0.0/16; 172.17.0.0/24; };
recursion yes;
managed-keys-directory "/var/named/dynamic";
geoip-directory "/usr/share/GeoIP";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
dnssec-validation no;
forwarders port 853 {
83.220.169.155 tls comms-tls;
212.109.195.93 tls comms-tls;
77.88.8.8 tls yandex-tls;
2a02:6b8::feed:0ff tls yandex-tls;
2a02:6b8:0:1::feed:0ff tls yandex-tls;
};
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
zone "powernet" {
type forward;
forward only;
forwarders {
10.200.201.234;
10.200.201.162;
};
};
zone "powernet.com.ru" {
type forward;
forward only;
forwarders {
10.200.201.234;
10.200.201.162;
};
};
zone "local" {
type forward;
forward only;
forwarders {
10.200.201.234;
10.200.201.162;
};
};
zone "ok" {
type master;
file "ok.hosts";
};
include "/etc/named.lib.zone";
# cat /etc/NetworkManager/conf.d/ok.conf [main] dns=none
# cat /etc/resolv.conf search ok nameserver 127.0.0.1
# cat /etc/sysconfig/named OPTIONS="-4 -L /var/log/named/named.log"
# cat /etc/named.lib.zone
zone "lib" {
type forward;
forward only;
forwarders {
94.247.43.254;
194.36.144.87;
81.169.136.222;
195.10.195.195;
94.247.43.254;
185.181.61.24;
};
};
# cat /var/named/ok.hosts
$ttl 38400
@ IN SOA localhost. dns@kochkin.tk. (
1299154724
10800
3600
604800
38400 )
@ IN NS 192.168.1.2.
homeserver IN A 192.168.1.2
hs IN A 192.168.1.2
epsilon IN A 192.168.1.10
host IN A 192.168.1.10
smart IN A 192.168.1.11
fserver IN A 192.168.10.14
fs IN A 192.168.10.14
Запуск и включение службы:
systemctl enable --now named
Возможные проблемы:
systemctl disable --now systemd-resolved dnf remove systemd-resolved
Проверить занятые порты:
netstat -nlp
Проверить запросы к внешним DNS по 853-му порту - на сетевом интерфейсе смотрящем наружу смотреть:
tcpdump -i eth0 port 853
В KDE до сих пор нет нативного способа поместить выполняющуюся программу в трей. Ранее (в X11) использовался KDocker, он работает до сих пор с «костылями» в виде передачи переменных окружения QT_QPA_PLATFORM=xcb и GDK_BACKEND=x11, но с ним есть некоторые проблемы в wayland, и хотелось чего-либо менее «костыльного».
Отсюда получена наводка на kwin-minimize2tray. Процесс установки описан в readme:
git clone https://github.com/luisbocanegra/kwin-minimize2tray.git cd kwin-minimize2tray ./install.sh
Дополнительно были установлены пакеты:
cmake extra-cmake-modules qt6-qtbase-devel kf6-kpackage-devel kf6-kcoreaddons-devel qt6-qtdeclarative-devel kf6-kstatusnotifieritem-devel kf6-kservice-devel
ComfyUI - инструмент для локальной (и не только) генерации изображений, видео, аудио с помощью нейросетей.
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI python3 -m venv venv && source venv/bin/activate pip install -r requirements.txt cd custom_nodes && git clone https://github.com/ltdrdata/ComfyUI-Manager python main.py --lowvram
В основном, отсюда.
Если при попытке установки узлов (нод) с GIT выводится сообщение «This action is not allowed with this security level configuration.», изменить уровень безопасности в файле «ComfyUI/user/__manager/config.ini» в параметре «security_level» на «normal-» или «weak» (Отсюда).
Цель - запустить почтовый сервер со следующими возможностями:
В основном, отсюда
Установка:
dnf install postfix dovecot
Создание пользователя и хранилища виртуальных доменов и пользователей:
useradd -d /var/lib/vmail --uid 20000 --shell /sbin/nologin vmail
Изменить:
Разрешить внешние соединения:
inet_interfaces = all
Оставить только ipv4:
inet_protocols = ipv4
Если параметр просто закомментировать, виртуальные домены работать не будут, т.к. Postfix использует значение по умолчанию:
mydestination =
Хранилища виртуальных доменов и пользователей:
home_mailbox = /var/lib/vmail/%d/%n/Maildir
Добавить:
Обратная DNS запись для текущего внешнего реального IP адреса. Т.к. используется динамический адрес, то используется скрипт для замены обратного адреса в main.cf после смены IP. Данная опция необязательна:
rDNS = pat-31-128-130-116.pool.powernet.com.ru. smtpd_banner = $rDNS ESMTP
Включение TLS/SSL:
smtpd_use_tls = yes
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
Максимальный размер письма - 50 Мб:
message_size_limit = 51200000
Возможно, необязательные опции:
disable_vrfy_command = yes smtpd_helo_required = yes
Включение SMTP аутентификации через dovecot:
# SMTP-Auth settings smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject
Виртуальные домены, ящики и алиасы:
# Virtual domains & mailboxes
Перечень виртуальных доменов:
virtual_mailbox_domains = homeserver.ok kochkin.mooo.com kochkin.tk
Хранилища виртуальных доменов и пользователей:
virtual_mailbox_base = /var/lib/vmail
Файл алиасов почтовых ящиков:
virtual_mailbox_maps = hash:/etc/postfix/virtual-mailbox
Файл алиасов доменов:
virtual_alias_maps = hash:/etc/postfix/virtual virtual_uid_maps = static:20000 virtual_gid_maps = static:20000
Раскоментировать:
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_sasl_auth_enable=yes
Добавить:
smtps inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
Основной домен: kochkin.tk, основной почтовый ящик: postmaster@kochkin.tk
# После правки, запустить: # postmap /etc/postfix/virtual # Алиасы для доменов @homeserver.ok @kochkin.tk @kochkin.mooo.com @kochkin.tk # Почту ко всем неизвестным @kochkin.tk postmaster@kochkin.tk
# create new # user mailbox postmaster@kochkin.tk kochkin.tk/postmaster/Maildir/ # После правки запустить: # postmap /etc/postfix/virtual-mailbox
#!/bin/bash
# Заменяет значение обратной DNS записи в конфигурации Postfix. Запускать после смены реального динамического IP.
CF=/etc/postfix/main.cf
Prev=$(postconf rDNS | cut -d" " -f3)
IP=$(curl --retry 10 --retry-delay 1 --retry-max-time 15 -s http://ifconfig.io)
if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];then
Current=$(dig +short -x $IP)
if [[ $Current != $Prev ]];then
cp $CF $CF-$(date +%y%m%d-%H%M%S)
echo "Change:"
postconf rDNS
sed -i "s/^rDNS = .*/rDNS = $Current/" $CF
systemctl reload postfix
echo "to:"
postconf rDNS
fi
fi
Устарело (конфиг версии 2.3.xx)
/etc/dovecot/conf.d/10-auth.conf:
Закомментировать:
# !include auth-system.conf.ext
Раскомментировать:
!include auth-passwdfile.conf.ext !include auth-static.conf.ext
/etc/dovecot/conf.d/10-mail.conf:
Изменить:
mail_location = maildir:/var/lib/vmail/%d/%n/Maildir
/etc/dovecot/conf.d/auth-static.conf.ext:
Раскомментировать и указать путь к доменам/ящикам:
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/lib/vmail/%d/%n
}
/etc/dovecot/dovecot.conf:
Раскомментировать и слушать только ipv4:
listen = *
Забудьте все предыдущие конфиги для dovecot. С версии 2.4 всё изменилось и несовместимо с предыдущими версиями.
# doveadm config
# 2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf
# OS: Linux 6.17.8-300.fc43.x86_64 x86_64 Fedora release 43 (Forty Three)
# Hostname: homeserver.ok
dovecot_config_version = 2.4.1
dovecot_storage_version = 2.4.1
listen = *
mail_driver = maildir
mail_gid = vmail
mail_home = /var/lib/vmail/%{user|domain}/%{user|username}
mail_path = %{home}/Maildir
mail_uid = vmail
protocols {
imap = yes
lmtp = yes
pop3 = yes
}
ssl = required
ssl_cipher_list = PROFILE=SYSTEM
namespace inbox {
inbox = yes
separator = /
}
ssl_server {
cert_file = /etc/pki/dovecot/certs/dovecot.pem
key_file = /etc/pki/dovecot/private/dovecot.pem
}
passdb passwd-file {
passwd_file_path = /etc/dovecot/users
}
userdb static {
fields {
gid = vmail
uid = vmail
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
}
# create new
# user:password
# Шифрование пароля
# doveadm pw -p PASWWORD -s CRYPT
postmaster@kochkin.tk:{CRYPT}$k7IB4KsvOJPzZu4o2y$05$yAh5nnVVI8tOsBL5jVGgNbOtlmYTyH8Cg02U.
Запуск служб:
systemctl enable --now postfix dovecot
Сбор статистики:
dnf install postfix-perl-scripts pflogsumm -d yesterday /var/log/maillog
Создать MySQL базу «roundcube», пользователя «roundcube» с паролем «PASSWORD»:
mysql create database roundcube; grant all privileges on roundcube.* to roundcube@'localhost' identified by 'PASSWORD'; flush privileges; \q
Установить RoundCube из реп, инициализировать базу MySQL и использовать примерный конфиг:
dnf install roundcubemail mysql -u roundcube -D roundcube -p < /usr/share/roundcubemail/SQL/mysql.initial.sql cp -p /etc/roundcubemail/config.inc.php.sample /etc/roundcubemail/config.inc.php
В /etc/roundcubemail/config.inc.php изменить параметры подключения к MySQL базе:
$config['db_dsnw'] = 'mysql://roundcube:PASSWORD@localhost/roundcube';
Настройки WEB сервера в /etc/httpd/conf.d/roundcube.conf для доступа только из локалки 192.168.1.0/24:
Alias /mail /usr/share/roundcubemail <Directory /usr/share/roundcubemail/> Require ip 192.168.1.0/24 </Directory>
В основном, отсюда
POP3:
SMTP:
yum -y install certbot python-certbot-apache certbot --apache
Ввести адрес электронной почты.
Подтвердить условия использования.
Желаете-ли получать рассылку на указанный адрес.
Предоставляется выбор доменов, которые найдены в конфигурации httpd:
1: kochkin.tk 2: www.kochkin.tk 3: kochkin.mooo.com
Ввести номера через пробел или запятую, или ничего не вводить для выбора всех.
После чего будут получены сертификаты и в конфигурационные файлы httpd будут внесены измения для их использования. Также будет сделано перенаправление с http на https.
Для обновления сертификатов, включить системный таймер:
systemctl enable certbot-renew.timer
Просмотр сертификатов:
certbot certificates
Добавление домена к существующим:
certbot --expand -d kochkin.tk,kochkin.mooo.com,www.kochkin.tk,kochkin.us.to
Удаление доменов:
certbot delete
Файлы копируются в папку с Apache под Windows:
scp root@192.168.10.108:/etc/letsencrypt/live/YouDomain/fullchain.pem c:/redmine/apache2/conf/SSL/YouDomain/fullchain.pem scp root@192.168.10.108:/etc/letsencrypt/live/YouDomain/privkey.pem c:/redmine/apache2/conf/SSL/YouDomain/privkey.pem net stop redmineApache net start redmineApache
192.168.10.108 - Компьютер, который обновляет сертификаты для домена.
В конфигурационном файле, в которов указываются пути к сертификатам должно быть прописано:
SSLCertificateFile "c:/redmine/apache2/conf/SSL/YouDomain/fullchain.pem" SSLCertificateKeyFile "c:/redmine/apache2/conf/SSL/YouDomain/privkey.pem"
Необходимые сертификаты (точнее, симлинки) на компьютере, который обновляет сертификаты, находятся в
/etc/letsencrypt/live/<Ваш домен>
Это файлы «privkey.pem» и «fullchain.pem»
В указанной выше папке, запустить:
openssl pkcs12 -inkey privkey.pem -in fullchain.pem -export -out YouDomain.pfx -passout pass:
CMD файл запускаемый на Windows с установленным IIS. :
scp root@192.168.10.108:/etc/letsencrypt/live/YouDomain/YouDomain.pfx YouDomain.pfx certutil -delstore "WebHosting" "YouDomain" certutil -f -p "" -importpfx "WebHosting" "YouDomain.pfx" certutil -repairstore "WebHosting" "YouDomain"
192.168.10.108 - Компьютер, который обновляет сертификаты для домена.
systemctl disable --now firewalld dnf remove firewalld* dnf install iptables-services ipset-service systemctl enable --now ipset && systemctl enable --now iptables
Чтобы правила IPSET автоматически сохранялись в /etc/sysconfig/ipset при перезапуске или останове службы IPSET, необходимо добавить в файл /etc/sysconfig/ipset-config переменные:
IPSET_SAVE_ON_STOP=yes IPSET_SAVE_ON_RESTART=yes
В файле /etc/samba/smb.conf :
[global]
netbios name = lin-01 # Имя машины
workgroup = workgroup # Рабочая группа
server string = lin-01 # Строка сервера
security = share # Безовасность (свободный доступ)
[share] # Название ресурса
path=/media/disk_d/share # Папка
writable = yes # Запись разрешена
guest ok = yes # Разрешён доступ гостю
dnf copr enable polter/far2l
Для графического окружения:
dnf install far2l
Для консоли:
dnf install far2l-tty
Одновременно друг с другом не живут.