понедельник, 11 декабря 2017 г.

CentOS 7: переключаемся на оригинальный mysql

https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7

Вкратце:
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -Uvh mysql57*

Если будет ошибка про MariaDB* - удаляем эти пакеты руками. Чтобы без завистимостей - делать это так
rpm -qa|grep <имя проблемного пакета>
rpm -e --nodeps <полное имя пакета из шага выше>

Если что, идти сюда:
https://dev.mysql.com/downloads/repo/yum/

Обращаю внимание, что если уже стоял MariaDB-server, его нужно сначала остановить, потом удалить. Если данные нужны - забэкапить. Потом
# service mysqld start

!!! Если сразу набрать mysql, будет ошибка что нужен пароль. Получить его можно так:
sudo grep 'temporary password' /var/log/mysqld.log
Делаем mysql_secure_installation
(где-то было, что с временным паролем можно зайти только 1 раз)

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

fake (bios) raid + UEFI

При установке centos поверх bios (fake) raid есть 3 нюанса:
1) оно требует раздела /boot/efi типа fat32 (с небольшими изменениями)
2) формат диска обязательно должен быть GPT
2) после установки оно просто не запустится.

И ещё момент. После загрузки в консоль установщика и настроенных рейдах в биосе - будет по 2 устройства, сам рейд и imsm. Это  устройство и связывает биос рейд и системный. Плюс - при этом в формате метадаты самого раздела есть нюансы.
Чуть подробнее тут:
https://raid.wiki.kernel.org/index.php/RAID_setup#External_Metadata_.282011.29
Косяк в том, что он похоже несовместим с EFI.
Про форматы метадаты
https://raid.wiki.kernel.org/index.php/RAID_superblock_formats

понедельник, 4 декабря 2017 г.

среда, 29 ноября 2017 г.

Изучаем WD MyCloud

Довелось прикупить под домашние нужны мини-NAS, WD MyCloud. Внутри диск серии WD RED. Вообще их 2 модификации, старая 1-ядерная, новая 2-ядерная, и в старой памяти 256мб, в новой - 512мб. И это создаёт определённую путаницу, многие статьи и советы относятся только к 1 модификации (hardware version, поколению)
Поколения можно определить по версии:
P/N: WDBCTLxxxxxxx-00, FW 04.xx.xx - Первое поколение
P/N: WDBCTLxxxxxxx-10, FW 2.xx.xx - Второе поколение
Плюс по желанию можно вшить debian, а там свои инструкции будут.

Вот достаточно неплохое описание:
http://4pda.ru/2016/12/22/331903/?__prclt=zwndIZBn
Там же есть и фотки.


четверг, 16 ноября 2017 г.

%global _hardened_build 1

У некоторых пакетов можно встретить такое
%global _hardened_build 1

Описание есть тут
https://fedoraproject.org/wiki/Changes/Harden_All_Packages

Currently, the Packaging Guidelines allow maintainers to decide whether their packages use position-independent code (PIC). There are rules that say that a lot of packages should use PIC, but in reality a lot of packages do not use PIC even if they must. Also since a lot of packages if not all potentially process untrusted input, it makes sense for these packages to use PIC to enhance the security of Fedora. Therefore I propose to build all packages with PIC by changing RPM to use the appropriate flags by default.

rpmbuild и дополнительные опции

Есть такая интересная штука
http://rpm.org/user_doc/conditional_builds.html
используется так:
$ rpmbuild -ba newpackage.spec --with gnutls --without openssl
и дальше проверять так
%if %{with gnutls} BuildRequires: gnutls-devel %endif %if %{with openssl} BuildRequires: openssl-devel %endif

Также для работы в начале .spec файла можно вписать (как предустановленные значения)
%bcond_with gnutls

Но тут есть нюанс: то, что вписано в .spec, имеет противоположное значение! Объяснение есть например тут

вторник, 14 ноября 2017 г.

keepalived и snmp

keepalived+snmp
Поскольку у keepalived нет штатного метода снятия ряда метрик (включая текущий статус), имеет смысл подключить snmp.

среда, 8 ноября 2017 г.

bup - backup system based on git

Very efficient backup system based on the git packfile format, providing fast incremental saves and global deduplication (among and within files, including virtual machine images).

https://github.com/bup/bup

В центоси легче всего поставить так:
1) либы
yum install python python-devel
yum install fuse-python pyxattr pylibacl
yum install perl-Time-HiRes

2) скачать сам пакет
http://dl.fedoraproject.org/pub/fedora/linux/releases/26/Everything/x86_64/os/Packages/b/bup-0.29-2.fc26.x86_64.rpm

3) rpm -Uvh bup*

4) используем.
Initialize the default BUP_DIR (~/.bup):
 bup init

Make a local backup (-v or -vv will increase the verbosity):
 bup index /etc
 bup save -n local-etc /etc

Restore a local backup to ./dest:
 bup restore -C ./dest local-etc/latest/etc
 ls -l dest/etc

Для пропуска некоторых файлов у index есть опции
--exclude
--exclude-from

Чтобы указать рабочий каталог отличный от ~/.bup, можно сделать так
export BUP_DIR=/backup/bup/...

четверг, 26 октября 2017 г.

How to calculate system memory usage from /proc/meminfo (like htop)

https://stackoverflow.com/questions/41224738/how-to-calculate-system-memory-usage-from-proc-meminfo-like-htop

These are the calculations I make to get the numbers for the green, blue and yellow bars in the memory meter:
  • Total used memory = MemTotal - MemFree
  • Non cache/buffer memory (green) = Total used memory - (Buffers + Cached memory)
  • Buffers (blue) = Buffers
  • Cached memory (yellow) = Cached + SReclaimable - Shmem
  • Swap = SwapTotal - SwapFree
In the htop source code: linux/LinuxProcessList.c and linux/Platform.c.

воскресенье, 6 августа 2017 г.

freebsd и raid контроллеры lsi

Для старых версий, где используется драйвер mfi, не так просто получить smart с дисков. И если в линуксе есть -d megaraid,0 - тут это не работает. Но легко делается через /dev/passX, просто сказав kldload mfip и потом smartctl -a /dev/pass0 например.


https://www.smartmontools.org/wiki/Supported_RAID-Controllers

четверг, 13 апреля 2017 г.

ping: socket: Address family not supported by protocol

# ping 8.8.8.8
ping: socket: Address family not supported by protocol
# ping 127.0.0.1
ping: socket: Address family not supported by protocol
# ping -4 127.0.0.1
ping: socket: Address family not supported by protocol

Проблема может возникать с OpenVZ виртуалками после обновления пакета iputils. В частности, с ядром 2.6.32-042stab113.21

среда, 5 апреля 2017 г.

Смотрим причины D+ статуса

Возникла ситуация, что yum update встал в режим D+ (uninterruptable sleep). Просто прибить такой процесс не получится:
http://unix.stackexchange.com/questions/5642/what-if-kill-9-does-not-work

 Понять происходящее помогла статья
http://blog.tanelpoder.com/2013/02/21/peeking-into-linux-kernel-land-using-proc-filesystem-for-quickndirty-troubleshooting/

В любом случае, обычно это значит "нужен hard reboot", желательно с контролем ipmi - если /proc/(pid)/wchan типа writeback_inodes_sb_nr_ub - система штатно не перезагрузится.
Можно попробовать перезапустить диск, если он в массиве, допускающем такое (зеркало, 5, 6,...), примерно так
echo 1 > /sys/block/sr1/delete
echo "- - -" > /sys/class/scsi_host/host7/scan
тут все пути будут отличаться, это что примерно нужно
но если массив такое не позволяет - после отключения диска система "встанет".

четверг, 30 марта 2017 г.

systemd: rsyslog больше не пишет логи

Очень подробно проблема описана тут
http://unix.stackexchange.com/questions/124942/rsyslog-not-logging

Также может быть связано с /var/log/journal, повреждением записей или удалением этого каталога. Права выглядят примерно так
drwxr-sr-x  3 root     systemd-journal
Вроде можно просто создать /var/log/journal и при перезапуске сервера/journal сервисов права выставит как надо.
Также иногда нужно закомментировать $OmitLocalLogging on в rsyslog.conf

И быстрый фикс:
rm -f /var/lib/rsyslog/imjournal.state
service rsyslog restart

вторник, 14 марта 2017 г.

centos 7: заставляем работать почту

Есть сервер, с которого не уходит почта, ошибка выглядит так
send-mail: Cannot open mail:25

После активации rsyslog (service rsyslog start) в логе /var/log/maillog видим
sSMTP[30209]: Unable to locate mail
sSMTP[30209]: Cannot open mail:25

И видим виновника, это ssmtp. Какой-то стрёмный сервер, не умеющий быть полноценным MTA даже на отправку. 
Поставим postfix
yum -y install postfix
systemctl enable postfix
systemctl start postfix
Но для работы этого недостаточно. Смотрим, кто сейчас mta
alternatives --display mta
Видим снова ssmtp. Можно переключить мта на postfix, а можно просто yum -y erase ssmtp и всё начнёт ходить, переключать mta не нужно.
Ну и убедимся, что стоит mailx
yum install -y mailx


вторник, 28 февраля 2017 г.

rsyslog и шаблоны

Иногда нужен особый формат лога, и тут помогают шаблоны.
Писать их можно прямо в отдельном конфиге, например rsyslog.d/ourService.conf:
$template Short,"%timegenerated% serviceName[%PROCID%] %msg%\n"

local0.*                                                -/var/log/service.log;Short

четверг, 16 февраля 2017 г.

rsyslog: писать лог только в 1 файл, не трогая rsyslog.conf

Допустим, есть сервис, который мы хотим писать через syslog в отдельный файл, уровень local2, но чтобы он не засорял /var/log/syslog|/var/log/messages. Создадим /etc/rsyslog.d/sea с текстом local2.* /var/log/sea.log

2 варианта:
1) дописываем в любое место нашего файла
local2.none /var/log/messages
local2.none /var/log/syslog

2) дописываем сразу после правила
&~
(означает - если записали в этот файл, то дальше заканчиваем обработку строки, & это И, ~ это discard). Правил может быть несколько в файле, поэтому ставим именно после тех, где заканчиваем обработку строки.

UP
В свежих версиях в логе можно увидеть
rsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
Правда, по ссылке нет примеров применения и описания. Выглядеть это будет примерно так:
& stop
Но могут быть проблемы.

вторник, 14 февраля 2017 г.

Методы замены MAC-адреса

Временная смена


1) ifconfig
/etc/init.d/networking stop
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
/etc/init.d/networking start

(как вариант, ifconfig down eth0, ... ifconfig up eth0)

2) ip link
(stop)
ip link set eth0 address xx:xx:xx:xx:xx:xx
(start)

3) macchanger
полностью случайный новый мак
macchanger -r eth0
с сохранением принадлежности к вендору
macchanger -e eth0

4) iptables
Не совсем понятна применимость, через nat. Третий линк.

Постоянная смена

1) через средства системы
centos:
/etc/sysconfig/network-scripts/ifcfg-ethN
MACADDR=...

debian и форки
/etc/network/interfaces
hwaddress ether ...

2) systemd-networkd
/etc/systemd/network/00-default.link
[Match]
MACAddress=постоянный MAC

[Link]
MACAddress=новый MAC
NamePolicy=kernel database onboard slot path

3) systemd-udevd
/etc/udev/rules.d/75-mac-spoof.rules
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="02:03:09:xx:xx:xx", RUN+="/usr/bin/ip link set dev %k address c8:0a:a9:xx:xx:xx"

4) юнит systemd
см первый линк, там варианты сервис файла, дёргающие ip link или macchanger

Линки

https://wiki.archlinux.org/index.php/MAC_address_spoofing_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
https://en.wikibooks.org/wiki/Changing_Your_MAC_Address/Linux
http://sandilands.info/sgordon/address-spoofing-with-iptables-in-linux

вторник, 31 января 2017 г.

systemd: больше информации по service файлам

По опциям для .service файлов даже гугл выдаёт совсем не то, что просят. В частности, почти нереально сделать запрос так, чтобы найти аналог того же locked memory (-l), но без ulimit.
И вот она, табличка:
Table 1. Resource limit directives, their equivalent ulimit shell commands and the unit used
Directiveulimit equivalentUnit
LimitCPU=ulimit -tSeconds
LimitFSIZE=ulimit -fBytes
LimitDATA=ulimit -dBytes
LimitSTACK=ulimit -sBytes
LimitCORE=ulimit -cBytes
LimitRSS=ulimit -mBytes
LimitNOFILE=ulimit -nNumber of File Descriptors
LimitAS=ulimit -vBytes
LimitNPROC=ulimit -uNumber of Processes
LimitMEMLOCK=ulimit -lBytes
LimitLOCKS=ulimit -xNumber of Locks
LimitSIGPENDING=ulimit -iNumber of Queued Signals
LimitMSGQUEUE=ulimit -qBytes
LimitNICE=ulimit -eNice Level
LimitRTPRIO=ulimit -rRealtime Priority
LimitRTTIME=No equivalentMicroseconds
отсюда: https://www.freedesktop.org/software/systemd/man/systemd.exec.html

Выбираем, ставим. Размерности тоже принимаются. Для бесконечности ставим infinity
Также в помощь man systemd.directives

вторник, 24 января 2017 г.

CentOS: requests и как всегда древний софт

Суть в том, что в центоси весь софт древний как говно мамонта, и как итог - в том числе проблемы с LetsEncrypt сертификатами.
Для частичного решения данной проблемы есть пакет
https://pypi.python.org/pypi/certifi

Certifi is a carefully curated collection of Root Certificates for validating the trustworthiness of SSL certificates while verifying the identity of TLS hosts. It has been extracted from the Requests project.

Можно ставить через pip, но любителям делать всё централизованно - стоит найти .src.rpm и обновлять для себя. Пример - тут
https://packages.temboard.io/yum/srpms/rhel7/python-certifi-2016.2.28-1.el7.centos.src.rpm

вторник, 3 января 2017 г.

Разбираемся с режимами модемов и влияние на настройку

Один и тот же модем может присутствовать на рынке как в HiLink, так и в Stick вариантах (например МТС 829F, он же Huawei E3372H поставляется с HiLink прошивкой, а точно такой же модем, который можно приобрести у оператора Tele2 - уже HiLink).

Итак, если ваш модем имеет Stick прошивку, то после того как вы его установите в ПК и установите драйвера и ПО со встроенного CDROM раздела, то в диспетчере устройств он будет определяться у вас как, собственно, модем (в разделе Телефоны и модемы), а также несколько COM портов. Плюс к этому, для того чтобы выйти в интернет, вам придется запускать специальное ПО под названием дашборд (dashboard):


На двух фото выше изображены дашборды от МТС - Коннект Менеджер и стандартный Huawei'евский дашборд от Mobile Partner. Все это справедливо если наш модем имеет stick-прошивку, т.е. здесь мы имеем дело с ПО для выхода в интернет, а само устройство у нас определяется как модем и несколько COM-портов.

Совершенно по-другому обстоят дела если мы имеем HiLink прошивку. В этом случае после установки ПО с CDROM раздела модем у нас определяется как виртуальная сетевая карта (RNDIS адаптер) и никакого ПО для соединения с интернет нет. Модем устанавливает соединение с интернет автоматически, а для управления настройками модема есть web-интерфейс. Т.е. фактически в этом случае модем представляет собой ethernet-роутер, имеющий собственный IP адрес в локальной сети (например, 192.168.8.1). Ваш ПК получает на интерфейс RNDIS адаптера (виртуальной сетевой карты) IP из подсети модема - 192.168.8.0/24, и выходит через шлюз 192.168.8.1 в интернет. Само соединение, естественно устанавливается в модеме, просто в данном случае он дополнительно выполняет функции роутера, в котором поднимается NAT и т.д.
(отсюда)

STICK

С этой прошивкой устройство ведет себя как классический USB-модем: имеется командный AT-порт, через который можно установить соединение посредством PPP-протокола. Именно так работают практически все 3G-модемы предыдущих поколений. При этом скорость ограничена - не более 20-30 Mbit на прием. Кроме PPP-режима, имеется режим NDIS. При этом модем эмулирует сетевой интерфейс, через который и передаются данные, а через AT-порт идут только управляющие команды. В этом режиме скорость не ограничена. Основная особенность stick-режима - установление соединения и поддержка работы канала производится средствами ОС компьютера, к которому подключен модем. При этом компьютер получает IP-адрес непосредственно у провайдера сотовой связи через запрос DHCP, а модем работает как сетевой мост, передавая пакеты от компьютера в сотовую сеть и обратно, никак их не изменяя.

Начальная USB-композиция stick-модема - это виртуальный CD-ROM и картридер microSD. Для того, чтобы появились модемные порты, надо сделать переключение композиции. Под windows этим занимается операторский софт, имеющийся на виртуальном CD, или фирменная программа от huawei - Mobile Partner. Под linux переключение делает программа usb-modeswitch. Имеется возможность запретить перелючение композиций. Это делается такой командой:
AT^SETPORT="FF;10,12,16"

При этом модем сразу после включения будет выглядеть как 2 AT-порта и сетевая карта NDIS. CD и microSD будут исключены из конфигурации. Такой режим крайне удобен для использования модема в различных домашних роутерах. Вернуть обратно композицию с переключением можно командой:
AT^SETPORT="A1,A2;10,12,16,A1,A2"

Номера версий stick-прошивки всегда начинаются на 21 - например, 21.285.01.02.143. С таким типом прошивки поставляются модемы от МТС и Мегафона.

HILINK

С прошивкой HILINK модем работает в режиме роутера, и представляется компьютеру в виде сетевого интерфейса (usb-ethernet-rndis). Компьютер получает с этого интерфейса сетевые настройки через DHCP, и далее ходит через него в интернет, как через обычную проводную локальную сеть. Всю заботу об установлении соединения и поддержании канала модем берет на себя, компьютер даже не замечает, что доступ в интернет осуществляется через сототвую сеть. В этом режиме модем имеет свой собственный локальный IP-адрес (обычно 192.168.8.1), видимый со стороны компьютера как шлюз по умолчанию (default route), а также внешний IP-адрес, получаемый из сотовой сети. Между сетью сотового провайдера и локальной сетью (модем-компьютер) осуществляется маршрутизация с использованием механизма трансляции адресов (NAT). Предусмотрен проброс портов из внешней сети (port forwarding и DMZ).

Настройка модема в этом режиме производится через WEB-интерфейс, имеющийся в модеме, и доступный через его локальный IP-адрес. Также через WEB-интерфейс доступна информация о состоянии модема и сигнале сотовой сети, управление подключением, прием-передача SMS-сообщений и USSD-команд, SIM-меню и многое другое. Это особенно ценно для пользователей Linux, а также для тех, у кого модем подключен не к компьютеру, а к домашнему роутеру. Настройка модема через AT-команды, как в stick-прошивках, в штатном режиме hilink-прошивок не производится, хотя и возможна в специальном отладочном режиме DebugMode.

Начальная USB-композиция HILINK-модема в точности такая же, как и у stick - виртуальный CD-ROM и картридер microSD. Переключение композиций под windows производится небольшой программой mbbservice, запускаемой со встроенного CD. Под linux это делает программа usb-modeswitch. Штатно разработчиками модема не предусмотрен режим без переключения композиций. Тем не менее, путем некоторой модификации прошивки такой режим сделать возможно. При этом теряется встроенный картридер SD, однако появляется возможность использовать модем с любым роутером, поддерживающим сетевые карты usb-rndis.

Номера версий hilink-прошивки всегда начинаются на 22 - например, 22.286.03.00.00. С таким типом прошивки поставляется модем от Билайна.
Прошивки HILINK состоят из двух частей - сама прошивка, и WebUI (вебинтерфейс). Первой прошивается основная прошивка, потом WebUI. 


Mikrotik

Отличаться также будет и настройка в микротике: для режима Stick появится ppp-out* устройство, а для HiLink - lte* в отдельном разделе LTE.

Хотя есть мануалы, где сказано, что можно переводить модемы в stick и hilink без перепрошивки:
AT^U2DIAG=0 - в stick
AT^U2DIAG=119 - в hilink

Ну и вероятно полезная комбинация:
AT^SETPORT="FF;10,12,16,A2" - режим "без переключения". Т.е. в данном режиме первичная композиция модема (initial mode) отключена, т.е. задана как FF - Dummy (отсутствие переключения), а вторичная композиция (normal mode) задана как 10,12,16,A2 - т.е. 10 - модем, 12 - PC UI, 16 - RNDIS (у нас его нет), A2 - TF Card Reader.