Краткая памятка для настройки superslave в pdns

Краткая памятка для настройки superslave в powerdns.

Указываем следующие опции в файле /etc/powerdns/pdns.conf:
superslave=yes
launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-dbname=pdns
gmysql-password=123456


Создаём базу данных, пользователя и даём ему права на эту БД:
create database pdns DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_unicode_ci;
create user pdns@localhost IDENTIFIED BY '123456';
grant all on pdns.* to pdns@localhost;
flush privileges;


Создаём таблицы в БД из файла, который должен был быть установлен в комплекте с pdns:
mysql -u pdns -p pdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql


Добавить первичные ДНС-серверы для ваших доменов в таблицу supermasters (один раз, а не для каждого домена):
INSERT INTO `supermasters` VALUES ('10.1.1.1','ns1.domain.tld','internal');
INSERT INTO `supermasters` VALUES ('10.1.1.2','ns2.domain.tld','internal');


На этих серверах должен быть разрешён трансфер доменов для вашего superslave-сервера. Проверить можно как-то так:
dig -t axfr @ns1.domain.tld domain2.tld


Superslave-сервер откачает домен после получения notify — уведомления про изменения в домене, так что первичный сервер должен отправлять эти самые уведомления. Обычно, это надо настроить явным образом, т.к. по-умолчанию ДНС-сервер отправляет уведомления только серверам, указанным как авторитетные серверы для этого домена. В bind указать кому ещё отправлять уведомления можно при помощи опции also-notify.
На сервере с bind можно вручную, не производя изменения в домене, отправить уведомления командой rndc:
rndc notify domain2.tld


Если доменов много, то можно отправить уведомления однострочным скриптом типа такого:
grep "^zone " bind-zones-file.conf | sed -e's/zone "//' -e's/" {//' | while read i;do echo $i;rndc notify $i;sleep 2;done


Это работает если домены в файле bind-zones-file.conf описаны как-то вот так:
zone "domain2.tld" {
...
};


К сожалению, логи pdns указывают на причину проблемы не прямо, а какими-то намёками. Например, вот это, если не ошибаюсь, говорит о том, что нет прав на трансфер домена с мастера:
pdns_server[282496]: Error resolving SOA or NS for domain2.tld at: 10.1.1.1: Query to '10.1.1.1' for SOA of 'domain2.tld' produced a NS record


А вот это говорит о том, что нет подходящего мастера в таблице supermasters:
pdns_server[284836]: Unable to find backend willing to host domain2.tld for potential supermaster 10.1.1.1. Remote nameservers:
pdns_server[284836]: ns1.domain.tld
pdns_server[284836]: ns2.domain.tld

Уведомления с iPhone на Mi Smart Band 5

Купил я себе iPhone 13 mini, но об этом отдельно.
Как ни странно, на iPhone нет функции Always-on-Display, которая позволяет видеть полезную информацию на экране телефона, находящегося в спокойном состоянии. Несмотря на то, что едва ли не все Андроид-телефоны имеют эту функцию iPhone в спокойном состоянии показывает полное ничего. Глядя на него непонятно в каком он состоянии, есть ли пропущенные события и, вообще, не отключился ли он.
Кто знает по какой причине у iPhone нет этой функции, но, зная Apple, можно предположить шкурный интерес — чтобы у людей был ещё один стимул покупать часы Apple Watch.
Понятно, что я знал об этом особенности и надеялся, что фитнес-браслет Mi Smart Band 5 частично поможет мне не пропустить какие-либо события. Однако, подключив браслет к телефону я обнаружил, что уведомления на него не приходят. Всё остальное работает: данные передаются, циферблаты загружаются, а никакой информации о новых сообщениях или звонках нет.
Поиск в Интернете давал только стандартные инструкции о включении уведомлений. После некоторых логических умозаключений я предположил в чём может быть проблема и не ошибся :-)
Когда на телефоне происходит какое-либо событие, в частности приходит сообщение в мессенджере или SMS, то на экране даже не разблокированного телефона появляется уведомление с текстом сообщения. Получается, что посторонний человек может подсмотреть сообщение на вашем телефоне. Это может быть критично для SMS, т.к. у многих сервисов через SMS приходит код для двухфакторной авторизации и сброса пароля, а ещё банк может присылать коды подтверждения по SMS. В настройках телефона, и на Андроиде, и на iPhone есть опция, которая позволяет скрывать текст сообщения на экране блокировки — отображается уведомление только о том, что пришло сообщение. На Андроиде несмотря на включенную опцию текст сообщения передавался на браслет и я, как раз, думал про то, что это утечка информации, т.к. браслет никак не защищён. Но с учётом того, что браслет получает информацию с телефона по блютуф в относительной близости от телефона слишком большой опасности эта утечка не представляет. Если я потеряю браслет или его украдут, то как только он выйдет за пределы зоны действия блютуф на него перестанут приходить уведомления.
Так вот, подобная опция на iPhone, как раз, работает правильно и не позволяет передавать уведомления на браслет.
Я включил отображение уведомлений от мессенджеров, телефона и календаря, но оставил отключенным для SMS.
Кстати, эта опция на iPhone названа не совсем интуитивно понятно — «Показ миниатюр» (Настройки — Уведомления), как и её значения: Всегда, Без блокировки, Никогда. Чтобы текст сообщения не отображался надо выбрать «Никогда». Зато эту опцию можно регулировать отдельно для каждого приложения.

CentOS 8: sftp chroot для пользователя

Ничего сокровенного, просто заметка чтобы вспомнить если понадобится.

В файле /etc/ssh/sshd_config прописываем нужные настройки для группы, в которую включен нужный пользователь:
Match Group rock
        ChrootDirectory /data/%u
        ForceCommand internal-sftp


Мне кажется, вместо конструкции "/data/%u" можно указать просто "~", но я решил использовать более явную.

А также включаем внутренний sftp:
Subsystem       sftp    internal-sftp


Однако, тут есть подводный камень. Чтобы sshd мог сделать chroot папка пользователя должна принадлежать root-у и права на запись ни у кого другого быть не должно, т.е. установить на папку право на запись для группы не получится. Это приводит к тому, что пользователь не может ничего записать в свою папку и остаётся писать во вложенную папку, которую, к тому же, он не может создать. Для данной моей задачи всё это не критично, так что пойдёт.

Ну и попутно можно настроить вход по публичному ключу. А если с какой машинки публичный ключ типа dss (вроде бы устаревший алгоритм), а демон ругается на него примерно вот так:
sshd[8456]: userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]


то надо добавить в конфиг sshd вот такой параметр:
PubkeyAcceptedKeyTypes=+ssh-dss

В CentOS 8 нет ntpdate?!

Пипец, в CentOS 8 теперь нельзя установить ntpdate, чтобы синхронизировать время с NTP-серверов. Теперь, блин, надо, видите ли, запускать новый демон чтобы просто синхронизировать время.
А как без ntpdate проверить работает ли какой-либо NTP-сервер вообще непонятно. Это я чтоли должен настроить полноценную синхронизацию и ждать сообщения в логах? А мне, блин, не надо синхронизироваться, мне надо просто посмотреть отвечает ли сервер и прям в данный момент интерактивно!
Кроме матов больше слов нет…

Настройка NTP-клиента на CentOS 8.

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

Задать часовой пояс:
timedatectl set-timezone Asia/Bishkek

В конфиге нового демона убрать строку с ненужными серверами и указать нужные серверы — источники времени:
#pool 2.centos.pool.ntp.org iburst
server ntp1.domain.tld.
server ntp2.domain.tld.

Запустить новый демон:
systemctl start chronyd

Включить синхронизацию времени:
timedatectl set-ntp true

Подождать какое-то время пока не обновится время в системе или смотреть за логами и ждать появится ли там запись о подстройке времени.

Концепты iPhone )

Все, кому не лень, рисуют концепты новых iPhone. На сайте iphones.ru в статье со странными концептами меня «спровоцировали» представить своё видение )
Вот результат, созданный неспеша в перерывах между задачами по работе. Вариант с очень странным вырезами я сделал специально для демонстрации фантазий рисовальщиков концептов )

Просто с уменьшенным вырезом

Со странными вырезами )

Время в BIOS

На одном из серверов была проблема: после ребута время устанавливалось на час вперёд. После синхронизации по NTP время исправлялось.
Временная зона правильная. Вероятно неправильное время указано в BIOS, но проверить всё не получалось — думал для этого надо перегружать сервер. Но оказалось, что можно проверить и исправить время в BIOS прямо из операционной системы.

Посмотрел время в BIOS и убедился, что время на час вперёд:
#hwclock
Wed 13 Nov 2019 07:49:18 PM +06 -0.250483 seconds

Поменял время:
#hwclock --set --date «Wed 13 Nov 2019 06:54 PM»

Проверил — всё нормально теперь:
#hwclock
Wed 13 Nov 2019 06:54:03 PM +06 -0.130003 seconds

Все команды, в том числе для просмотра, должны выполняться от пользователя root.

Про Samsung Galaxy A40 и про вырезы в экране

Я уже писал про новую моду с вырезами наверху экрана.
Недавно, можно сказать, спонтанно купил новый телефон — Samsung Galaxy A40. Хотелось телефона поменьше, чем используемый на тот момент Xiaomi Redmi 5 Plus. Зашёл посмотреть телефоны, попался Samsung A40, взял в руки и не захотелось его выпускать — телефон заметно компактнее моего Xiaomi, при том, что экран такой же по высоте и лишь немного уже. Рамки экрана с каплевидным вырезом под камеру вполне гармоничны — верхняя и боковые стороны одинаковой толщины, нижняя заметно шире («шо, опять?!»). Вырез симпатичный, не мешает и много места у экрана не отнимает, в отличие от чёлки iPhone.

Так же это мой первый телефон с разъёмом type-C и, конечно, этот разъём удобнее старого microUSB.
В целом телефон удобный: габариты оптимальны, система работает быстро.
Особенно понравилось, что датчик отпечатка пальца работает идеально — намного лучше, чем у Xiaomi и, уже тем более Samsung C5, который у меня когда-то был. Даже влажные пальцы не помеха для нормальной разблокировки Samsung A40.
Вот, вкратце, и всё хорошее, что я могу сказать про Samsung A40, а вот то, что не понравилось:
— аккумулятор всего 3100 мАч (у Xiaomi — 4000) — маловато, хватает на день, необходимость каждый день заряжать телефон утомляет;
— наиболее нужные для меня системные приложения (Календарь, Плеер, Будильник) существенно менее удобны, чем в Xiaomi;
— слишком тонкий — без чехла неудобно держать в руках или поднимать со стола;

Так получилось, что я отдал новый Samsung брату и вернулся к старому Xiaomi и удивился тому как приятно смотреть на обычный, прямоугольный экран без всяких вырезов, я почти физически ощутил, что глазам легче стало воспринимать информацию с экрана. Это удивило потому, что вырез вроде и не мешал мне.
И, конечно, приятно, что не надо заряжать телефон каждый день.

В результате пришёл к выводу, что мне нужен небольшой телефон, желательно, но не обязательно, Xiaomi, с аккумулятором не менее 4000 мАч и без каких-либо вырезов в экране. Подобрать телефон под эти требования может показаться просто, но все производители помешались на тонкости в ущерб аккумулятору и на всяких вырезах в экране.

Работа с разделом swap

Решил перенести раздел swap на другой диск, т.е. надо создать раздел на другом диске, подключить его и отключить старый.

Второй диск пустой. Создаю на нём новый раздел размером 6GB и меняю его тип:
fdisk -l /dev/sdc
Command (m for help): p
Select (default p): p
Partition number (1-4, default 1): [Enter]
First sector (2048-1953525167, default 2048): [Enter]
Last sector, +sectors or +size{K,M,G} (2048-1953525167, default 1953525167): +6G
Command (m for help): t
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): w


Если fdisk выводит сообщение о необходимости перечитать таблицу разделов диска.

Можно попробовать вот эту команду:
partprobe /dev/sdc

Если она нормально не завершилась, то придётся перезагрузить компьютер. Иначе раздел нормально не создаётся, например, у меня получался раздел примерно в 500МБ, вместо 6ГБ.

Форматируем раздел:
mkswap /dev/sdc1
mkswap: /dev/sdc1: warning: wiping old ext4 signature.
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=4c96302a-37bd-49d2-b352-7b6d09e60123


Подключаем раздел:
swapon -U 4c96302a-37bd-49d2-b352-7b6d09e60123


Проверяем:
swapon -s
Filename                                Type            Size    Used    Priority
/dev/md126                              partition       6153212 9200    -2
/dev/sdc1                               partition       6291452  0       -2


Отключаем старый swap (UID есть в /etc/fstab):
swapoff -U 7de94a8a-9fe1-4112-b09c-ee79f1eea123


Ну и понятно, что надо внести изменения в /etc/fstab — старый комментируем, новый добавляем:
#UUID=7de94a8a-9fe1-4112-b09c-ee79f1eea123 swap    swap    defaults                            0 0
# swap on sdc (sdc1):
UUID=4c96302a-37bd-49d2-b352-7b6d09e60123 swap    swap    defaults                            0 0

Впечатления от iPhone

Вступление

Примерно полтора года назад купил iPhone 6s Plus.
Понадобился второй телефон, т.к. использовать два номера на одном двухсимочном аппарате очень неудобно.
Покупать простую кнопочную звонилку — не вариант, т.к. в этом случае возникают сложности с синхронизацией контактов между двумя телефонами.
Покупать второй телефон с Android скучно и неинтересно.
К тому же мне нужно было тестировать одно мобильное приложение, у которого есть версия и для Android, и для iOS.
На момент покупки актуальным был iPhone 7 и вот-вот, через пару месяцев, должен был выйти iPhone 8. Однако, цена актуального аппарата и отсутствие миниджека убедили меня выбрать iPhone 6s. А в виду того, что единственный на тот момент телефон был с относительно небольшим экраном — 5 дюймов — выбрал большую версию iPhone 6s Plus.

По прошествие достаточно большого срока хочу высказать своё мнение об iPhone в сравнении с телефонами Samsung C5 и Xiaomi Redmi 5 plus, которые я последовательно, сначала один, потом второй, использовал вместе с iPhone.

Читать дальше →

mac os x: удалить иконку из Launchpad

Перетягиваем иконку из Launchpad в док. В доке кликаем правой кнопкой на этой иконке и пункт «Показать в Finder». В открывшемся окне удаляем иконку, потом удаляем иконку из дока.