Настроить обратную DNS запись (PTR) для Hetzner сервера можно в панели управления robot.your-server.de
Читать далее «Настройка Reverse DNS (PTR) в Hetzner»Архивы рубрик:Linux
Настройка FreeRADIUS DHCP для ABillS
Допустим установлен FreeRADIUS 2 как написано в этой статье — Установка и настройка биллинговой системы ABillS
Теперь скопируем файл dhcp.conf в конфигурацию FreeRADIUS:
sudo cp /usr/abills/misc/freeradius/v2/dhcp.conf /usr/local/freeradius/etc/raddb/sites-enabled/
Решение ошибки Failed binding to authentication address * port 1812: Address already in use freeradius
Запускал однажды FreeRADIUS в режиме отладки командой:
sudo radiusd -X
И заметил следующую ошибку:
Failed binding to authentication address * port 1812: Address already in use freeradius
/usr/local/freeradius/etc/raddb/radiusd.conf[84]: Error binding to port for 0.0.0.0 port 1812
Ошибка сообщает что адрес уже используется, поэтому нужно остановить запущенный процесс FreeRADIUS, поищем его и посмотрим что запущено на портах:
sudo ps ax | grep radius sudo netstat -tulpn | grep :1812 sudo netstat -tulpn | grep :1813 sudo netstat -tulpn | grep :67
В моем случае уже был запущен /usr/sbin/radiusd, его можно завершить по номеру PID:
sudo kill -9 PID
Либо так:
sudo /etc/init.d/radiusd status sudo /etc/init.d/radiusd stop sudo /etc/init.d/freeradius stop
Решение проблемы с выпавшими дисками mdadm
Получил сегодня от одного из серверов на Hetzner три email сообщения с информацией о рейдах md0, md1, md2:
DegradedArray event on /dev/md/0:example.com
This is an automatically generated mail message from mdadm
running on example.com
A DegradedArray event had been detected on md device /dev/md/0.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid6] [raid5] [raid4] [raid1]
md2 : active raid6 sdb3[1] sdd3[3]
208218112 blocks super 1.0 level 6, 512k chunk, algorithm 2 [4/2] [_U_U]
md1 : active raid1 sdb2[1] sdd2[3]
524224 blocks super 1.0 [4/2] [_U_U]
md0 : active raid1 sdb1[1] sdd1[3]
12582784 blocks super 1.0 [4/2] [_U_U]
unused devices:
Посмотрел информацию о RAID и дисках:
cat /proc/mdstat cat /proc/partitions mdadm --detail /dev/md0 mdadm --detail /dev/md1 mdadm --detail /dev/md2 fdisk -l | grep '/dev/sd' fdisk -l | less
Собрался отправить тикет в техподдержку и запланировать замену выпавших SSD дисков.
Записал SMART информацию о выпавших дисках в файлы, там же был их серийный номер:
smartctl -x /dev/sda > sda.log smartctl -x /dev/sdc > sdc.log
Удалить диски из рейда если что можно так:
mdadm /dev/md0 -r /dev/sda1 mdadm /dev/md1 -r /dev/sda2 mdadm /dev/md2 -r /dev/sda3 mdadm /dev/md0 -r /dev/sdc1 mdadm /dev/md1 -r /dev/sdc2 mdadm /dev/md2 -r /dev/sdc3
Если какой-то раздел диска отображается как рабочий, а диск нужно извлечь, то сначала помечаем раздел не рабочим и потом удаляем, например если /dev/sda1, /dev/sda2 выпали, а /dev/sda3 работает:
mdadm /dev/md0 -f /dev/sda3 mdadm /dev/md0 -r /dev/sda3
В моем случае, посмотрев информацию о выпавших дисках обнаружил что они целые и рабочие, даже лучше активных.
Посмотрел разделы дисков:
fdisk /dev/sda p q fdisk /dev/sdc p q
Они были размечены одинаково как и прежде:
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00015e3f
Device Boot Start End Blocks Id System
/dev/sda1 1 1567 12582912+ fd Linux raid autodetect
/dev/sda2 1567 1633 524288+ fd Linux raid autodetect
/dev/sda3 1633 14594 104109528+ fd Linux raid autodetect
Поэтому поочередно дождавшись синхронизации каждого вернул эти диски обратно в рейд:
mdadm /dev/md0 -a /dev/sda1 mdadm /dev/md1 -a /dev/sda2 mdadm /dev/md2 -a /dev/sda3 mdadm /dev/md0 -a /dev/sdc1 mdadm /dev/md1 -a /dev/sdc2 mdadm /dev/md2 -a /dev/sdc3
По окончании команда cat /proc/mdstat уже отображалась с [UUUU].
Если диски заменили новыми, то их нужно разбить аналогично установленным.
Пример разметки диска /dev/sdb аналогично /dev/sda с MBR:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Пример разметки /dev/sdb с GTP и назначения диску случайного UUID:
sgdisk -R /dev/sdb /dev/sda sgdisk -G /dev/sdb
Также на новоустановленный диск необходимо установить загрузчик:
grub-install --version grub-install /dev/sdb update-grub
Либо через меню grub (hd0 это /dev/sda, hd0,1 — /dev/sda2):
cat /boot/grub/device.map grub device (hd0) /dev/sda root (hd0,1) setup (hd0) quit
Если установка grub выполняется из загрузочного диска, то нужно посмотреть список разделов и выполнить монтирование, например если RAID не используется:
ls /dev/[hsv]d[a-z]*[0-9]* mount /dev/sda3 /mnt
Если используется программный RAID:
ls /dev/md* mount /dev/md2 /mnt
Либо LVM:
ls /dev/mapper/* mount /dev/mapper/vg0-root /mnt
И выполнить chroot:
chroot-prepare /mnt chroot /mnt
После монтирования можно восстанавливать GRUB как я писал выше.
Смотрите также другие мои статьи:
Как я делал заявку в Hetzner на замену диска в рейде
Решение ошибки «md: kicking non-fresh sda1 from array»
Решение предупреждения «mismatch_cnt is not 0 on /dev/md*»
mdadm — утилита управления программными RAID массивами
Описание типов RAID
Диагностика HDD используя smartmontools
Восстановление GRUB Linux
Добавление диска к LVM
Допустим у нас уже настроен LVM, например как я описывал в этой статье — Настройка и использование LVM
Переключимся на root пользователя:
sudo -i
Если нет возможности горячей замены дисков, выключаем сервер, подключаем новый диск, включаем сервер и смотрим имя нового диска (в моем случае это /dev/sdd):
fdisk -l
Посмотрим существующие группы и сколько осталось свободного места:
vgdisplay
Посмотрим список физических томов:
pvdisplay
Приступаем к разметке нового диска:
fdisk /dev/sdd n p 1 Enter Enter t 8e w
Теперь создадим физический том:
pvcreate /dev/sdd1
Посмотрим список логических томов:
lvdisplay
Расширим его добавив новый раздел (где ixnfo — группа томов):
vgextend ixnfo /dev/sdd1
Посмотреть список физических томов можно так:
pvscan
Посмотрим путь логического тома (в моем случае /dev/ixnfo/temp) и добавим новый раздел:
lvextend /dev/ixnfo/temp /dev/sdd1
Посмотрим размер смонтированного логического тома:
df -h
Так так размер не изменился, исправим это командой:
resize2fs /dev/ixnfo/temp
Готово.
Настройка и использование LVM
LVM (Logical Volume Management) Управление Логическими Томами, позволяет собрать несколько дисков и областей из дисков в один логический том и потом снова разбить как угодно.
PV (Physical Volume) — физический том (раздел или целый диск)
VG (Volume Group) — группа томов (единый диск собранный из физических томов)
LV (Logical Volume) — логические разделы
Переключимся на root пользователя:
sudo -i
Установим LVM если он еще не установлен (Ubuntu/Debian):
apt-get install lvm2
Посмотрим информацию о дисках:
fdisk -l
На тесте имею /dev/sda с системой и не размеченный /dev/sdb.
Сделаем физическим разделом весь /dev/sdb без разбивки на разделы:
pvcreate /dev/sdb
Посмотреть список физических томов можно командой:
pvdisplay
Создадим группу томов с именем ixnfo:
vgcreate ixnfo /dev/sdb
Удалить при необходимости можно так:
vgremove ixnfo
Пример просмотра существующих групп и сколько осталось свободного места:
vgdisplay
Для теста создадим логический том temp размером 100 мегабайт:
lvcreate -L100 -n temp ixnfo
Посмотреть список логических томов можно командой:
lvdisplay
Отформатируем его:
mkfs.ext4 -L temp /dev/ixnfo/temp
Создадим папку, смонтируем созданный том:
mkdir /mnt/temp mount /dev/ixnfo/temp /mnt/temp
Отмонтировать можно так:
umount /mnt/temp/
Смотрите также:
Добавление диска к LVM
Управление разделами диска в Ubuntu используя fdisk
Как определить тип файла в Linux?
В Linux есть отличная встроенная утилита file, которая определяет тип файлов и много другой информации о файлах.
Допустим у нас есть файлы без расширения и чтобы посмотреть информацию о всех файлах в текущей директории выполним команду:
file *
Для конкретного файла:
file NAME
Сброс пароля администратора ABillS
Для сброса пароля администратора необходимо выполнить следующий SQL запрос в базу данных ABillS:
UPDATE admins SET password=ENCODE('NEW_PASSWORD', 'test12345678901234567890') WHERE aid=1;
Где test12345678901234567890 переменная $conf{secretkey} в файле /usr/abills/libexec/config.pl.
Настройка маскарадинга (NAT) в Ubuntu
Для примера выполню настройку маскарадинга IPv4 (NAT) на Ubuntu Server.
Сначала нужно включить поддержку пересылки пакетов в /etc/sysctl.conf, чтобы трафик мог ходить между разными сетевыми интерфейсами.
Проверим текущее состояние:
Установка ISC DHCP для ABillS
Приведу пример установки ISC DHCP сервера для ABillS в Ubuntu Server.
Переключимся на root пользователя:
sudo -i
Установим пакет:
apt-get install isc-dhcp-server ln -s /usr/abills/Abills/modules/Dhcphosts/leases2db.pl /usr/abills/libexec/leases2db.pl
Запускаем:
/usr/abills/libexec/leases2db.pl -d LEASES=/var/lib/dhcp/dhcpd.leases
Изменим владельца файла:
chown www-data /etc/dhcp/dhcpd.conf
Откроем config.pl в редакторе:
nano /usr/abills/libexec/config.pl
Добавим параметры:
$conf{DHCPHOSTS_CONFIG}='/etc/dhcp/dhcpd.conf'; $conf{DHCPHOSTS_LEASES}='/var/lib/dhcp/dhcpd.leases'; $conf{DHCPHOSTS_RECONFIGURE}='/usr/bin/sudo /etc/init.d/isc-dhcp-server restart';
Откроем в редакторе:
nano /etc/sudoers
Добавим строку сделав возможность запуска сервиса системой:
www-data ALL = NOPASSWD: /etc/init.d/isc-dhcp-server
Заходим в веб интерфейс Abills, открываем меню «Настройка» — «IP (DHCP) Сети» — «IP (DHCP) Сети«, добавляем сети если необходимо, потом «Показать dhcp.conf, Переконфигурировать» и «Переконфигурировать«.
Посмотреть запущен ли isc-dhcp-server можно командой:
/etc/init.d/isc-dhcp-server status netstat -tulpn | grep :67
Логи пишутся в файл /var/log/syslog
Можно также настроить экспорт DHCP истории, чтобы видеть её в меню «Отчёт» — «DHCP История».
Для этого сделаем ссылку:
ln -s /usr/abills/Abills/modules/Dhcphosts/dhcp_log2db.pl /usr/abills/libexec/dhcp_log2db.pl
Отделив DHCP логи в отдельный файл как я писал в статье ниже и добавив в автозагрузку скрипт с командой:
tail -F /var/log/dhcpd.log | /usr/abills/libexec/dhcp_log2db.pl
Смотрите также мои статьи:
Установка и настройка isc-dhcp-server в Ubuntu
Утилита для захвата и анализа пакетов tcpdump